Skip to content

Commit

Permalink
Merge pull request #866 from mikel-brostrom/update_yolov8
Browse files Browse the repository at this point in the history
Update yolov8
  • Loading branch information
mikel-brostrom committed May 16, 2023
2 parents 6f24502 + cfc2698 commit 0a5369c
Show file tree
Hide file tree
Showing 45 changed files with 343 additions and 665 deletions.
71 changes: 49 additions & 22 deletions .github/workflows/ci-testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ jobs:
matrix:
os: [ubuntu-latest, windows-latest] # Error: Container action is only supported on Linux
python-version: [3.9]
model: ['yolov5n'] # models to test
model: ['yolov8n'] # models to test

# Timeout: https://stackoverflow.com/a/59076067/4521646
timeout-minutes: 50
Expand All @@ -31,7 +31,7 @@ jobs:
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install requirments
- name: Install requirements
run: |
python -m pip install --upgrade pip setuptools wheel
# If not importing this prior to installing requirements...
Expand All @@ -43,25 +43,52 @@ jobs:
pip --version
pip list
shell: bash
- name: Tests workflow
- name: Tests all tracking options
run: |
# DEEPOCSORT
python track.py --tracking-method deepocsort --source yolov8/ultralytics/assets/bus.jpg
# BOTSORT
python track.py --tracking-method botsort --yolo-weights ./weights/yolov8n.pt --source yolov8/ultralytics/assets/bus.jpg
# STRONGSORT
python track.py --tracking-method strongsort --yolo-weights ./weights/yolov8n.pt --source yolov8/ultralytics/assets/bus.jpg
# OCSORT
python track.py --tracking-method ocsort --yolo-weights ./weights/yolov8n.pt --source yolov8/ultralytics/assets/bus.jpg
# BYTETRACK
python track.py --tracking-method bytetrack --yolo-weights ./weights/yolov8n.pt --source yolov8/ultralytics/assets/bus.jpg
# EXPORT
python trackers/reid_export.py --weights ./weights/lmbn_n_cuhk03_d.pt # export deafults to torchscript
# STRONGSORT w. EXPORTED REID MODEL
python track.py --reid-weights ./weights/lmbn_n_cuhk03_d.torchscript --source yolov8/ultralytics/assets/bus.jpg
# deepocsort
python track.py --tracking-method deepocsort --source ./assets/MOT17-mini/train/MOT17-05-FRCNN/MOT17-05-FRCNN/000001.jpg
# botsort
python track.py --tracking-method botsort --source ./assets/MOT17-mini/train/MOT17-05-FRCNN/MOT17-05-FRCNN/000001.jpg
# strongsort
python track.py --tracking-method strongsort --source ./assets/MOT17-mini/train/MOT17-05-FRCNN/MOT17-05-FRCNN/000001.jpg
# ocsort
python track.py --tracking-method ocsort --source ./assets/MOT17-mini/train/MOT17-05-FRCNN/MOT17-05-FRCNN/000001.jpg
# bytetrack
python track.py --tracking-method bytetrack --source ./assets/MOT17-mini/train/MOT17-05-FRCNN/MOT17-05-FRCNN/000001.jpg
# TRACK WITH SEGMENTATIONS
python track.py --tracking-method deepocsort --yolo-weights ./weights/yolov8n-seg.pt --source yolov8/ultralytics/assets/bus.jpg
python val.py --tracking-method deepocsort --device cpu --yolo-weights yolov8n.pt --benchmark MOT17-mini
python3 evolve.py --device cpu --objectives HOTA,MOTA,IDF1 --benchmark MOT17-mini --n-trials 1
shell: bash
- name: Tests tracker with exported reid model
shell: bash # for Windows compatibility
run: |
# export
python trackers/deep/reid_export.py --weights weights/mobilenetv2_x1_4_dukemtmcreid.pt # export deafults to torchscript
# strongsort w. exported reid model
python track.py --reid-model weights/mobilenetv2_x1_4_dukemtmcreid.torchscript --source ./assets/MOT17-mini/train/MOT17-05-FRCNN/MOT17-05-FRCNN/000001.jpg
- name: Test tracking with seg models
shell: bash # for Windows compatibility
run: |
# tracking with SEG models
python track.py --tracking-method deepocsort --yolo-model yolov8n-seg.pt --source ./assets/MOT17-mini/train/MOT17-05-FRCNN/MOT17-05-FRCNN/000001.jpg
- name: Test tracking with pose models
shell: bash # for Windows compatibility
run: |
# tracking with POSE models
python3 track.py --yolo-model yolov8n-pose.pt --source ./assets/MOT17-mini/train/MOT17-05-FRCNN/MOT17-05-FRCNN/000001.jpg
- name: Test validation on MOT17 subset
shell: bash # for Windows compatibility
run: |
# validation on a few MOT17 imges
python val.py --tracking-method deepocsort --yolo-model yolov8n.pt --benchmark MOT17-mini
- name: Test evolution on MOT17 subset
shell: bash # for Windows compatibility
run: |
# evolve a for a single set of parameters
python evolve.py --objectives HOTA,MOTA,IDF1 --benchmark MOT17-mini --n-trials 1
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
.vscode/
env/

# interpreter bytecode
__pycache__/
Expand All @@ -18,8 +19,13 @@ val_utils/
*_openvino_model
*.torchscript
*.pt
*.pth
*.onnx
*.engine

# interactive plots
*.html

# tf models
*saved_model/
tf_models/
3 changes: 0 additions & 3 deletions .gitmodules

This file was deleted.

24 changes: 8 additions & 16 deletions evolve.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,8 @@
ROOT = FILE.parents[0] # yolov5 strongsort root directory
WEIGHTS = ROOT / 'weights'

if str(ROOT) not in sys.path:
sys.path.append(str(ROOT)) # add ROOT to PATH
if str(ROOT / 'yolov8') not in sys.path:
sys.path.append(str(ROOT / 'yolov8')) # add yolov5 ROOT to PATH
if str(ROOT / 'strong_sort') not in sys.path:
sys.path.append(str(ROOT / 'strong_sort')) # add strong_sort ROOT to PATH
ROOT = Path(os.path.relpath(ROOT, Path.cwd())) # relative

from yolov8.ultralytics.yolo.utils import LOGGER
from yolov8.ultralytics.yolo.utils.checks import check_requirements, print_args
from ultralytics.yolo.utils import LOGGER
from ultralytics.yolo.utils.checks import check_requirements, print_args
from track import run


Expand Down Expand Up @@ -70,7 +62,7 @@ def get_new_config(self, trial):
"""

d = {}
self.opt.conf_thres = trial.suggest_float("conf_thres", 0.35, 0.55)
self.opt.conf = trial.suggest_float("conf", 0.35, 0.55)

if self.opt.tracking_method == 'strongsort':

Expand Down Expand Up @@ -131,7 +123,7 @@ def get_new_config(self, trial):

d['bytetrack'] = \
{
'track_thresh': self.opt.conf_thres,
'track_thresh': self.opt.conf,
'match_thresh': match_thresh,
'track_buffer': track_buffer,
'frame_rate': 30
Expand Down Expand Up @@ -281,17 +273,17 @@ def write_best_HOTA_params_to_config(opt, study):

def parse_opt():
parser = argparse.ArgumentParser()
parser.add_argument('--yolo-weights', type=str, default=WEIGHTS / 'yolov8n.pt', help='model.pt path(s)')
parser.add_argument('--reid-weights', type=str, default=WEIGHTS / 'lmbn_n_cuhk03_d.pt')
parser.add_argument('--yolo-model', type=str, default=WEIGHTS / 'yolov8n.pt', help='model.pt path(s)')
parser.add_argument('--reid-model', type=str, default=WEIGHTS / 'lmbn_n_cuhk03_d.pt')
parser.add_argument('--tracking-method', type=str, default='deepocsort', help='strongsort, ocsort')
parser.add_argument('--tracking-config', type=Path, default=None)
parser.add_argument('--name', default='exp', help='save results to project/name')
parser.add_argument('--project', default=ROOT / 'runs' / 'evolve', help='save results to project/name')
parser.add_argument('--exist-ok', action='store_true', help='existing project/name ok, do not increment')
parser.add_argument('--exists-ok', action='store_true', help='existing project/name ok, do not increment')
parser.add_argument('--benchmark', type=str, default='MOT17', help='MOT16, MOT17, MOT20')
parser.add_argument('--split', type=str, default='train', help='existing project/name ok, do not increment')
parser.add_argument('--eval-existing', type=str, default='', help='evaluate existing tracker results under mot_callenge/MOTXX-YY/...')
parser.add_argument('--conf-thres', type=float, default=0.45, help='confidence threshold')
parser.add_argument('--conf', type=float, default=0.45, help='confidence threshold')
parser.add_argument('--imgsz', '--img', '--img-size', nargs='+', type=int, default=[1280], help='inference size h,w')
parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
parser.add_argument('--n-trials', type=int, default=10, help='nr of trials for evolution')
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# pip install -r requirements.txt
ultralytics==8.0.20
ultralytics==8.0.98

# Base ----------------------------------------
gitpython
Expand Down
Loading

0 comments on commit 0a5369c

Please sign in to comment.