Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>5.0
@@ -1,7 +1,10 @@ | |||
name: CI CPU testing | |||
# see: https://help.github.com/en/actions/reference/events-that-trigger-workflows | |||
on: [push, pull_request] | |||
on: # https://help.github.com/en/actions/reference/events-that-trigger-workflows | |||
push: | |||
pull_request: | |||
schedule: | |||
- cron: "0 0 * * *" | |||
jobs: | |||
cpu-tests: | |||
@@ -17,56 +20,56 @@ jobs: | |||
# Timeout: https://stackoverflow.com/a/59076067/4521646 | |||
timeout-minutes: 50 | |||
steps: | |||
- uses: actions/checkout@v2 | |||
- name: Set up Python ${{ matrix.python-version }} | |||
uses: actions/setup-python@v2 | |||
with: | |||
python-version: ${{ matrix.python-version }} | |||
- uses: actions/checkout@v2 | |||
- name: Set up Python ${{ matrix.python-version }} | |||
uses: actions/setup-python@v2 | |||
with: | |||
python-version: ${{ matrix.python-version }} | |||
# Note: This uses an internal pip API and may not always work | |||
# https://github.com/actions/cache/blob/master/examples.md#multiple-oss-in-a-workflow | |||
- name: Get pip cache | |||
id: pip-cache | |||
run: | | |||
python -c "from pip._internal.locations import USER_CACHE_DIR; print('::set-output name=dir::' + USER_CACHE_DIR)" | |||
# Note: This uses an internal pip API and may not always work | |||
# https://github.com/actions/cache/blob/master/examples.md#multiple-oss-in-a-workflow | |||
- name: Get pip cache | |||
id: pip-cache | |||
run: | | |||
python -c "from pip._internal.locations import USER_CACHE_DIR; print('::set-output name=dir::' + USER_CACHE_DIR)" | |||
- name: Cache pip | |||
uses: actions/cache@v1 | |||
with: | |||
path: ${{ steps.pip-cache.outputs.dir }} | |||
key: ${{ runner.os }}-${{ matrix.python-version }}-pip-${{ hashFiles('requirements.txt') }} | |||
restore-keys: | | |||
${{ runner.os }}-${{ matrix.python-version }}-pip- | |||
- name: Cache pip | |||
uses: actions/cache@v1 | |||
with: | |||
path: ${{ steps.pip-cache.outputs.dir }} | |||
key: ${{ runner.os }}-${{ matrix.python-version }}-pip-${{ hashFiles('requirements.txt') }} | |||
restore-keys: | | |||
${{ runner.os }}-${{ matrix.python-version }}-pip- | |||
- name: Install dependencies | |||
run: | | |||
python -m pip install --upgrade pip | |||
pip install -qr requirements.txt -f https://download.pytorch.org/whl/cpu/torch_stable.html | |||
pip install -q onnx | |||
python --version | |||
pip --version | |||
pip list | |||
shell: bash | |||
- name: Install dependencies | |||
run: | | |||
python -m pip install --upgrade pip | |||
pip install -qr requirements.txt -f https://download.pytorch.org/whl/cpu/torch_stable.html | |||
pip install -q onnx | |||
python --version | |||
pip --version | |||
pip list | |||
shell: bash | |||
- name: Download data | |||
run: | | |||
python -c "from utils.google_utils import * ; gdrive_download('1n_oKgR81BJtqk75b00eAjdv03qVCQn2f', 'coco128.zip')" | |||
mv ./coco128 ../ | |||
- name: Download data | |||
run: | | |||
python -c "from utils.google_utils import * ; gdrive_download('1n_oKgR81BJtqk75b00eAjdv03qVCQn2f', 'coco128.zip')" | |||
mv ./coco128 ../ | |||
- name: Tests workflow | |||
run: | | |||
export PYTHONPATH="$PWD" # to run *.py. files in subdirectories | |||
di=cpu # inference devices # define device | |||
# train | |||
python train.py --img 256 --batch 8 --weights weights/${{ matrix.model }}.pt --cfg models/${{ matrix.model }}.yaml --epochs 1 --device $di | |||
# detect | |||
python detect.py --weights weights/${{ matrix.model }}.pt --device $di | |||
python detect.py --weights runs/exp0/weights/last.pt --device $di | |||
# test | |||
python test.py --img 256 --batch 8 --weights weights/${{ matrix.model }}.pt --device $di | |||
python test.py --img 256 --batch 8 --weights runs/exp0/weights/last.pt --device $di | |||
python models/yolo.py --cfg models/${{ matrix.model }}.yaml # inspect | |||
python models/export.py --img 256 --batch 1 --weights weights/${{ matrix.model }}.pt # export | |||
shell: bash | |||
- name: Tests workflow | |||
run: | | |||
export PYTHONPATH="$PWD" # to run *.py. files in subdirectories | |||
di=cpu # inference devices # define device | |||
# train | |||
python train.py --img 256 --batch 8 --weights weights/${{ matrix.model }}.pt --cfg models/${{ matrix.model }}.yaml --epochs 1 --device $di | |||
# detect | |||
python detect.py --weights weights/${{ matrix.model }}.pt --device $di | |||
python detect.py --weights runs/exp0/weights/last.pt --device $di | |||
# test | |||
python test.py --img 256 --batch 8 --weights weights/${{ matrix.model }}.pt --device $di | |||
python test.py --img 256 --batch 8 --weights runs/exp0/weights/last.pt --device $di | |||
python models/yolo.py --cfg models/${{ matrix.model }}.yaml # inspect | |||
python models/export.py --img 256 --batch 1 --weights weights/${{ matrix.model }}.pt # export | |||
shell: bash |
@@ -6,30 +6,30 @@ jobs: | |||
greeting: | |||
runs-on: ubuntu-latest | |||
steps: | |||
- uses: actions/first-interaction@v1 | |||
with: | |||
repo-token: ${{ secrets.GITHUB_TOKEN }} | |||
pr-message: | | |||
Hello @${{ github.actor }}, thank you for submitting a PR! To allow your work to be integrated as seamlessly as possible, we advise you to: | |||
- Verify your PR is **up-to-date with origin/master.** If your PR is behind origin/master update by running the following, replacing 'feature' with the name of your local branch: | |||
```bash | |||
git remote add upstream https://github.com/ultralytics/yolov5.git | |||
git fetch upstream | |||
git checkout feature # <----- replace 'feature' with local branch name | |||
git rebase upstream/master | |||
git push -u origin -f | |||
``` | |||
- Verify all Continuous Integration (CI) **checks are passing**. | |||
- Reduce changes to the absolute **minimum** required for your bug fix or feature addition. _"It is not daily increase but daily decrease, hack away the unessential. The closer to the source, the less wastage there is."_ -Bruce Lee | |||
- uses: actions/first-interaction@v1 | |||
with: | |||
repo-token: ${{ secrets.GITHUB_TOKEN }} | |||
pr-message: | | |||
Hello @${{ github.actor }}, thank you for submitting a PR! To allow your work to be integrated as seamlessly as possible, we advise you to: | |||
- Verify your PR is **up-to-date with origin/master.** If your PR is behind origin/master update by running the following, replacing 'feature' with the name of your local branch: | |||
```bash | |||
git remote add upstream https://github.com/ultralytics/yolov5.git | |||
git fetch upstream | |||
git checkout feature # <----- replace 'feature' with local branch name | |||
git rebase upstream/master | |||
git push -u origin -f | |||
``` | |||
- Verify all Continuous Integration (CI) **checks are passing**. | |||
- Reduce changes to the absolute **minimum** required for your bug fix or feature addition. _"It is not daily increase but daily decrease, hack away the unessential. The closer to the source, the less wastage there is."_ -Bruce Lee | |||
issue-message: | | |||
Hello @${{ github.actor }}, thank you for your interest in our work! Please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data) to get started, and see our [Jupyter Notebook](https://github.com/ultralytics/yolov5/blob/master/tutorial.ipynb) <a href="https://colab.research.google.com/github/ultralytics/yolov5/blob/master/tutorial.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a>, [Docker Image](https://hub.docker.com/r/ultralytics/yolov5), and [Google Cloud Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/GCP-Quickstart) for example environments. | |||
If this is a bug report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. | |||
If this is a custom model or data training question, please note Ultralytics does **not** provide free personal support. As a leader in vision ML and AI, we do offer professional consulting, from simple expert advice up to delivery of fully customized, end-to-end production solutions for our clients, such as: | |||
- **Cloud-based AI** systems operating on **hundreds of HD video streams in realtime.** | |||
- **Edge AI** integrated into custom iOS and Android apps for realtime **30 FPS video inference.** | |||
- **Custom data training**, hyperparameter evolution, and model exportation to any destination. | |||
issue-message: | | |||
Hello @${{ github.actor }}, thank you for your interest in our work! Please visit our [Custom Training Tutorial](https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data) to get started, and see our [Jupyter Notebook](https://github.com/ultralytics/yolov5/blob/master/tutorial.ipynb) <a href="https://colab.research.google.com/github/ultralytics/yolov5/blob/master/tutorial.ipynb"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"></a>, [Docker Image](https://hub.docker.com/r/ultralytics/yolov5), and [Google Cloud Quickstart Guide](https://github.com/ultralytics/yolov5/wiki/GCP-Quickstart) for example environments. | |||
For more information please visit https://www.ultralytics.com. | |||
If this is a bug report, please provide screenshots and **minimum viable code to reproduce your issue**, otherwise we can not help you. | |||
If this is a custom model or data training question, please note Ultralytics does **not** provide free personal support. As a leader in vision ML and AI, we do offer professional consulting, from simple expert advice up to delivery of fully customized, end-to-end production solutions for our clients, such as: | |||
- **Cloud-based AI** systems operating on **hundreds of HD video streams in realtime.** | |||
- **Edge AI** integrated into custom iOS and Android apps for realtime **30 FPS video inference.** | |||
- **Custom data training**, hyperparameter evolution, and model exportation to any destination. | |||
For more information please visit https://www.ultralytics.com. |
@@ -1,17 +1,17 @@ | |||
name: Close stale issues | |||
on: | |||
schedule: | |||
- cron: "0 0 * * *" | |||
- cron: "0 0 * * *" | |||
jobs: | |||
stale: | |||
runs-on: ubuntu-latest | |||
steps: | |||
- uses: actions/stale@v1 | |||
with: | |||
repo-token: ${{ secrets.GITHUB_TOKEN }} | |||
stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' | |||
stale-pr-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' | |||
days-before-stale: 30 | |||
days-before-close: 5 | |||
exempt-issue-label: 'documentation,tutorial' | |||
- uses: actions/stale@v1 | |||
with: | |||
repo-token: ${{ secrets.GITHUB_TOKEN }} | |||
stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' | |||
stale-pr-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.' | |||
days-before-stale: 30 | |||
days-before-close: 5 | |||
exempt-issue-label: 'documentation,tutorial' |