YOLOv5 CI #138
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license | |
# YOLOv5 Continuous Integration (CI) GitHub Actions tests | |
name: YOLOv5 CI | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
branches: [master] | |
schedule: | |
- cron: '0 0 * * *' # runs at 00:00 UTC every day | |
jobs: | |
Benchmarks: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
python-version: [3.9] | |
model: [yolov5n] | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
#- name: Cache pip | |
# uses: actions/cache@v3 | |
# with: | |
# path: ~/.cache/pip | |
# key: ${{ runner.os }}-Benchmarks-${{ hashFiles('requirements.txt') }} | |
# restore-keys: ${{ runner.os }}-Benchmarks- | |
- name: Install requirements | |
run: | | |
python -m pip install --upgrade pip wheel | |
pip install -r requirements.txt coremltools openvino-dev tensorflow-cpu --extra-index-url https://download.pytorch.org/whl/cpu | |
python --version | |
pip --version | |
pip list | |
- name: Run benchmarks | |
run: | | |
python utils/benchmarks.py --weights ${{ matrix.model }}.pt --img 320 --hard-fail | |
Tests: | |
timeout-minutes: 60 | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
python-version: [3.9] | |
model: [yolov5n] | |
include: | |
- os: ubuntu-latest | |
python-version: '3.7' # '3.6.8' min | |
model: yolov5n | |
- os: ubuntu-latest | |
python-version: '3.8' | |
model: yolov5n | |
- os: ubuntu-latest | |
python-version: '3.10' | |
model: yolov5n | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Get cache dir | |
# https://github.com/actions/cache/blob/master/examples.md#multiple-oss-in-a-workflow | |
id: pip-cache | |
run: echo "::set-output name=dir::$(pip cache dir)" | |
- name: Cache pip | |
uses: actions/cache@v3 | |
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 requirements | |
run: | | |
python -m pip install --upgrade pip wheel | |
pip install -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cpu | |
python --version | |
pip --version | |
pip list | |
- name: Check environment | |
run: | | |
python -c "import utils; utils.notebook_init()" | |
echo "RUNNER_OS is ${{ runner.os }}" | |
echo "GITHUB_EVENT_NAME is ${{ github.event_name }}" | |
echo "GITHUB_WORKFLOW is ${{ github.workflow }}" | |
echo "GITHUB_ACTOR is ${{ github.actor }}" | |
echo "GITHUB_REPOSITORY is ${{ github.repository }}" | |
echo "GITHUB_REPOSITORY_OWNER is ${{ github.repository_owner }}" | |
- name: Run tests | |
shell: bash | |
run: | | |
# export PYTHONPATH="$PWD" # to run '$ python *.py' files in subdirectories | |
m=${{ matrix.model }} # official weights | |
b=runs/train/exp/weights/best # best.pt checkpoint | |
python train.py --imgsz 64 --batch 32 --weights $m.pt --cfg $m.yaml --epochs 1 --device cpu # train | |
for d in cpu; do # devices | |
for w in $m $b; do # weights | |
python val.py --imgsz 64 --batch 32 --weights $w.pt --device $d # val | |
python detect.py --imgsz 64 --weights $w.pt --device $d # detect | |
done | |
done | |
python hubconf.py --model $m # hub | |
# python models/tf.py --weights $m.pt # build TF model | |
python models/yolo.py --cfg $m.yaml # build PyTorch model | |
python export.py --weights $m.pt --img 64 --include torchscript # export | |
python - <<EOF | |
import torch | |
for path in '$m', '$b': | |
model = torch.hub.load('.', 'custom', path=path, source='local') | |
print(model('data/images/bus.jpg')) | |
EOF |