Open12

Windows 上の Docker (Compose) でYOLOv5(PyTorch) をカスタム学習するまで

たつおたつお

Win + R を押す → winver
バージョンが21H2よりも低ければアップデートを行う。

たつおたつお

docker compose で気をつけること

docker-compose.yaml
version: '3.8'
services:
  sample:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./yolov5:/yolov5
    tty: true
    shm_size: '12gb'
    command: python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt
    deploy:
      resources:
        reservations:
          devices:
           - driver: nvidia
             capabilities: [utility, compute, video]

これをdocker compose upすると,yolov5/runs/に結果が入る

たつおたつお

Docker イメージについて

Dockerfile
FROM nvcr.io/nvidia/pytorch:20.10-py3

WORKDIR /yolov5

COPY /yolov5 .

RUN apt-get update && \
    # apt-get install -y zip htop screen libgl1-mesa-glx && \
    DEBIAN_FRONTEND="noninteractive" apt-get install -y python-opencv

RUN sed -i 's/^opencv/#&/g' requirements.txt &7 sed -i 's/^torch/#&/g' requirements.txt
RUN pip3 install --upgrade pip && pip3 install --no-cache -r requirements.txt

YOLOv5はPyTorchの最新バージョン(1.11.x)だと動かないので,古いバージョンのものを持ってくる必要がある.バージョン合わせが大変なので,既存のDocker イメージを使用する(Training a Custom Object Detection Model with YOLOv5 | Forecr.io

sed の行は,PyTorchとOpenCV関連のパッケージをインストールしないようにする.PyTorchに関しては,バージョンを固定したいので.OpenCVは理由を調べられていないから要調査.

たつおたつお

リポジトリについて

  • git clone --recursive するといい.
  • YOLOv5 のリポジトリはsubmodule で取り込み
    • --recursiveを忘れたら git submodule update -i でいけるはず
    • だめだったら git submodule udpate --init とか git submodule init && git submodule update
  • YOLOv5 のリポジトリに対して git update-index --assume-uncahnged yolov5 して更新を追いかけないようにする
    • git ls-files -v | grep ^h
たつおたつお

カスタムデータセット:CVATを使う About | CVAT

  • まずたくさん画像を撮ります
  • それっぽいディレクトリを作ります
  • CVATをダウンロード
cd cvat/utils/dataset_manifest
python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -r requirements.txt # できなかったらいい感じに自力で
python create.py /path/to/datasset  --output-dir /path/to/dataset