Signed-off-by: Glenn Jocher <glenn.jocher@ultralytics.com>5.0
name: CI CPU testing | 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: | jobs: | ||||
cpu-tests: | cpu-tests: | ||||
# Timeout: https://stackoverflow.com/a/59076067/4521646 | # Timeout: https://stackoverflow.com/a/59076067/4521646 | ||||
timeout-minutes: 50 | timeout-minutes: 50 | ||||
steps: | 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 |
greeting: | greeting: | ||||
runs-on: ubuntu-latest | runs-on: ubuntu-latest | ||||
steps: | 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. |
name: Close stale issues | name: Close stale issues | ||||
on: | on: | ||||
schedule: | schedule: | ||||
- cron: "0 0 * * *" | |||||
- cron: "0 0 * * *" | |||||
jobs: | jobs: | ||||
stale: | stale: | ||||
runs-on: ubuntu-latest | runs-on: ubuntu-latest | ||||
steps: | 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' |