YOLO8 のカスタム データ トレーニングにウィンドウを使用する
[YOLOv8]( ultralytics/ultralytics (github.com) のメインの Ultralytics/README.zh-CN.md )は、 Ultralytics によって開発されたYOLOターゲット検出および画像セグメンテーション モデルの最新バージョンです。以前のバージョンと比較して、YOLOv8 は識別できます。画像内のオブジェクトをより迅速かつ効率的に特定し、より正確に分類します。
1. 環境の準備
GPU トレーニングを使用することを強くお勧めします。!!Nvidiaグラフィックス カードが利用可能で、ATI などの他のグラフィックス カードを直接スキップできます。!!
私の環境は以下の通りです。
- Windows 11
- トーチ 1.7.1+cu110
- トーチビジョン 0.8.2+cu110
- Python 3.7.10
他の依存ライブラリは、requirements.txt ファイルに従ってインストールできます。
まず、ultralytics をインストールする必要があります。現在、YOLOv8 のコア コードは次の依存関係パッケージにカプセル化されています。
pip install ultralytics
1. テストを実行する
D:\仮想インストール環境 Venv\Lib\site-packages\ultralytics\yolo\v8\detect\predict.py を実行します。
結果がCPU推論かGPU推論かを確認する
CPUの場合は前回の記事【Windows11】CudaとCudnnの詳細インストールチュートリアル_Jinをご覧ください。
Nvidiaグラフィックス カードが利用可能で、ATI などの他のグラフィックス カードを直接スキップできます。!!
インストール後、自分の cuda がサポートするバージョンに従って PyTorch をインストールし、+cu コマンドを選択します
私のインストールコマンドは次のとおりです。
pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
1. データの準備
1. 独自のデータセットを構築する
このプロセスをそれほど苦痛で時間のかかるものにしないために、Roboflow をツールとして使用できます (ただし、科学的にオンラインにする必要があります)。
Roboflow Web サイトにログインし、アカウントを作成することから始めます。
データのラベル付けとエクスポートに成功したので、ここで 2 つの Roboflow チュートリアルをご覧ください。
- YOLOv8 が登場し、精度が大幅に向上しました。カスタム データセットでトレーニングする方法を教えます (baidu.com)
- (独自のデータセットをトレーニングするには、YOLOv8 が推奨する Roboflow ツールを使用してください_Amu Lab Blog-CSDN Blog
次のように、YOLOv8 によってエクスポートされたデータ セットを選択します。
「pycharm」で自作データセット内の「data.yaml」を開き、ファイル内のパスを変更します。ここでは、相対パスには多くの問題があり、多くのエラーが報告されるため、絶対パスに直接変更しました。特に中国語のパスが表示されないように注意してください(聞かないでください、見逃すだけです)
2. トレーニングを開始する
変更が保存されたら、yolo環境のターミナルに入力します。
yolo task=detect mode=train model=yolov8n.pt data=flyerdata/data.yaml epochs=100 imgsz=640 workers=4 batch=4
同時に、「data=」接尾辞を独自のデータセットのパスに変更し、Enter キーを押してトレーニングを開始します。トレーニングが完了すると、結果は最後の行で示されたパスに保存されます。
上記のパラメータは次のように説明されます。
task: タスクのタイプを選択します。オプション ['detect'、'segment'、'classify'、'init']
mode: タスクをトレーニング、検証、または予測するかどうかを選択します。 Lakey オプション ['train', 'val', 'predict']
モデル: yolov8 の異なるモデル構成ファイルを選択します (オプションで yolov8s.yaml、yolov8m.yaml、yolov8l.yaml、yolov8x.yaml)。
data: 生成されたデータセット構成ファイルを選択します
エポック: トレーニング プロセス中にデータ セット全体が反復される回数を指します。グラフィック カードが動作していない場合は、値を小さく調整できます。
バッチ: 重みが更新される前に一度に表示される画像の数。勾配降下法を使用したミニバッチ。グラフィックス カードが良好でない場合は、値を小さく調整できます。
トレーニングのプロセスは次のとおりです。
3. 検証データセット
トレーニングが完了すると、独自のモデル、最適なモデルの重量、および最終的なモデルの重量が得られます。
独自のデータ セット パスに従って、次の検証済みデータ パスを変更します。
yolo task=detect mode=val model=runs/detect/train5/weights/best.pt data=flyerdata/data.yaml
4. 新しいデータでテストする
次に、データセットのトレーニング結果モデルの場所に応じて、次のコードを変更します。「ソース」は、新しい画像フォルダーの場所を指します。フォルダーはウェアハウスのメイン パスに配置されているため、直接アクセスできます。 「source=images」に変更して、予測を開始します。
yolo detect mode=predict model=runs/detect/train33/weights/best.pt source=images
画像は .../runs/detect/predict フォルダーに保存されます
機密データのため、しばらく写真は掲載しません。