a 物体検出,セグメンテーション,画像分類,物体検出の再学習と転移学習(YOLOv8,PyTorch,Python を使用)(Windows 上)

物体検出,セグメンテーション,画像分類,物体検出の再学習と転移学習(YOLOv8,PyTorch,Python を使用)(Windows 上)

Windows上で,YOLOv8をインストールし,物体検出,セグメンテーション,画像分類の実行が可能である.インストールは公式のGitHubページの説明に従って行い,コマンドプロンプトで操作する.YOLOv8 に付属の物体検出の学習済みモデルは,COCOデータセットで学習され,yolov8n.ptなどから選ぶことができる.再学習のために必要となる画像データとアノテーションは,YOLO形式のオープンデータを用いることができる.そのとき,クラス番号を 80 やそれより大きい値に振り直す.そのためのPythonプログラムはこのページで提供している.再学習では,オプションを指定して実行する.

Yolo v8 による物体検出,セグメンテーション,画像分類

道路標識のデータを用いて学習を継続.その後,物体検出を実行.

目次

  1. 前準備
  2. YOLOv8 のインストール(Windows 上)
  3. 物体検出の実行(YOLOv8 を使用)(Windows 上)
  4. YOLO形式のオープンデータを用いて,新しいクラスの物体検出ができるように再学習,転移学習

前準備

Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)または Visual Studio 2022 のインストール(Windows 上)

インストールの判断Build Tools for Visual Studio は,開発ツールセットである. Visual Studio は統合開発環境であり,いくつかの種類があり,Build Tools for Visual Studioの機能を含むか連携して使用するものである.インストールは以下の基準で判断してください:

不明な点がある場合は,Visual Studio 全体をインストール を行う方が良い.

Build Tools for Visual Studio 2022 のインストール(Windows 上)

  1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)

    次のコマンドを実行

    次のコマンドは,Build Tools for Visual Studio 2022と VC2015 再配布可能パッケージをインストールするものである.

    winget install --scope machine Microsoft.VisualStudio.2022.BuildTools
    winget install --scope machine Microsoft.VCRedist.2015+.x64
    
  2. Build Tools for Visual Studio 2022 での C++ によるデスクトップ開発,CLI,ATL,MFC のインストール(Windows 上)
    1. Visual Studio Installer の起動

      起動方法: スタートメニューの「Visual Studio Installer」を選ぶ.

    2. Visual Studio Build Tools 2022 で「変更」を選ぶ.
    3. C++ によるデスクトップ開発」をクリック.そして,画面右側の「インストール」の詳細で「v143 ビルドツール用 C++/CLI サポート(最新)」,「ATL」,「MFC」をチェックする.その後,「変更」をクリック.

Visual Studio のインストール(Windows 上)

  1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)

    次のコマンドを実行

    1. コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
    2. インストールコマンドの実行
      winget install Microsoft.VisualStudio.2022.Community --scope machine --override "--add Microsoft.VisualStudio.Workload.NativeDesktop Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core Microsoft.VisualStudio.Component.VC.CLI.Support Microsoft.VisualStudio.Component.CoreEditor Microsoft.VisualStudio.Component.NuGet Microsoft.VisualStudio.Component.Roslyn.Compiler Microsoft.VisualStudio.Component.TextTemplating Microsoft.VisualStudio.Component.Windows.SDK.Latest Microsoft.VisualStudio.Component.VC.Tools.x86.x64 Microsoft.VisualStudio.Component.VC.ATL Microsoft.VisualStudio.Component.VC.ATLMFC"
      winget install Microsoft.VisualStudio.2022.Community --scope machine Microsoft.VCRedist.2015+.x64
      

      インストールされるコンポーネントの説明:

      • NativeDesktop:C++によるデスクトップアプリケーション開発のためのワークロード一式
      • NativeDesktop.Core:C++デスクトップ開発に必要な基本コンポーネント群
      • VC.CLI.Support:マネージドコードとネイティブコードの統合開発を可能にするC++/CLIサポート
      • CoreEditor:コード編集,デバッグ,検索などの基本機能を提供するVisual Studioのコアエディタ
      • NuGet:.NETライブラリの依存関係を管理するパッケージ管理システム
      • Windows.SDK.Latest:Windows 向けアプリケーション開発用SDK(Software Development Kit)
      • VC.Tools.x86.x64:32ビット及び64ビット向けC++コンパイラとビルドツール
      • VC.ATL:Windowsコンポーネント開発用のActive Template Library
      • VC.ATLMFC:デスクトップアプリケーション開発用のMicrosoft Foundation Class Library

      システム要件と注意事項:

      • 管理者権限でのインストールが必須
      • 必要ディスク容量:10GB以上
      • 推奨メモリ:8GB以上のRAM
      • インストール過程でシステムの再起動が要求される可能性がある
      • 安定したインターネット接続環境が必要

      追加のコンポーネントが必要な場合は,Visual Studio Installerを使用して個別にインストールすることが可能である.

    3. インストール完了の確認
      winget list Microsoft.VisualStudio.2022.Community
      

      トラブルシューティング:

      インストール失敗時は,以下のログファイルを確認:

      %TEMP%\dd_setup_<timestamp>.log
      %TEMP%\dd_bootstrapper_<timestamp>.log
  2. Visual Studio での C++ によるデスクトップ開発,CLI のインストール(Windows 上)
    1. Visual Studio Installer の起動

      起動方法: スタートメニューの「Visual Studio Installer」を選ぶ.

    2. Visual Studio Community 2022 で「変更」を選ぶ.
    3. C++ によるデスクトップ開発」をチェック.そして,画面右側の「インストール」の詳細で「v143 ビルドツール用 C++/CLI サポート(最新)」をチェックする.その後,「インストール」をクリック.

Python 3.10,Git のインストール(Windows 上)

Pythonは,プログラミング言語の1つ. Gitは,分散型のバージョン管理システム.

手順

  1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)

    次のコマンドを実行

    次のコマンドは,Python ランチャーとPython 3.10とGitをインストールし,Gitパスを通すものである.

    次のコマンドでインストールされるGitは 「git for Windows」と呼ばれるものであり, Git,MinGW などから構成されている.

    winget install --scope machine Python.Launcher
    winget install --scope machine Python.Python.3.10
    winget install --scope machine Git.Git
    powershell -command "$oldpath = [System.Environment]::GetEnvironmentVariable(\"Path\", \"Machine\"); $oldpath += \";c:\Program Files\Git\cmd\"; [System.Environment]::SetEnvironmentVariable(\"Path\", $oldpath, \"Machine\")"
    

関連する外部ページ

サイト内の関連ページ

関連項目Python, Git バージョン管理システム, Git の利用

Build Tools for Visual Studio 2022,NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.8,NVIDIA cuDNN 8.9.7 のインストール(Windows 上)

サイト内の関連ページNVIDIA グラフィックスボードを搭載しているパソコンの場合には, NVIDIA ドライバNVIDIA CUDA ツールキットNVIDIA cuDNN のインストールを行う.

関連する外部ページ

PyTorch のインストール(Windows 上)

  1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
  2. PyTorch のページを確認

    PyTorch の公式ページ: https://pytorch.org/index.html

  3. 次のようなコマンドを実行(実行するコマンドは,PyTorch のページの表示されるコマンドを使う).

    次のコマンドを実行することにより, PyTorch 2.3 (NVIDIA CUDA 11.8 用)がインストールされる. 但し,Anaconda3を使いたい場合には別手順になる.

    事前に NVIDIA CUDA のバージョンを確認しておくこと(ここでは,NVIDIA CUDA ツールキット 11.8 が前もってインストール済みであるとする).

    PyTorch で,GPU が動作している場合には,「torch.cuda.is_available()」により,True が表示される.

    python -m pip install -U --ignore-installed pip
    python -m pip uninstall -y torch torchvision torchaudio torchtext xformers
    python -m pip install -U torch torchvision torchaudio numpy --index-url https://download.pytorch.org/whl/cu118
    
    python -c "import torch; print(torch.__version__, torch.cuda.is_available())"
    

    Anaconda3を使いたい場合には, Anaconda プロンプト (Anaconda Prompt)管理者として実行し, 次のコマンドを実行する. (PyTorch と NVIDIA CUDA との連携がうまくいかない可能性があるため,Anaconda3を使わないことも検討して欲しい).

    conda install -y pytorch torchvision torchaudio pytorch-cuda=11.8 cudnn -c pytorch -c nvidia
    py -c "import torch; print(torch.__version__, torch.cuda.is_available())"
    

    サイト内の関連ページ

    関連する外部ページ

YOLOv8 のインストール(Windows 上)

YOLOv8 の公式の GitHub リポジトリ https://github.com/ultralytics/ultralytics に従ってインストールを実施する.

  1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)

    コマンドプロンプトを管理者として実行する方法については,別ページ »を参照してください.

  2. 必要なパッケージのインストールおよびソースコードのダウンロード
    python -m pip install -U pillow wandb clearml comet_ml
    cd /d c:%HOMEPATH%
    rmdir /s /q ultralytics
    git clone -b main https://github.com/ultralytics/ultralytics
    python -m pip install -qe ultralytics
    icacls ultralytics /grant Everyone:F /T
    
  3. Windows で,コマンドプロンプトを実行
  4. 物体検出機能の実行

    YOLOv8 の公式 GitHub リポジトリ https://github.com/ultralytics/ultralytics の手順に従って実施する.

    実行結果は runs\detect\predict\bus.jpg に保存される.なお,predictは実行のたびに predict2,predict3 のように変更する必要がある.

    物体検出の学習済みモデルには, yolov8n.pt, yolov8s.pt, yolov8m.pt, yolov8l.pt, yolov8x.pt が用意されている.これらはすべて COCO データセットで学習済みのモデルである.詳細については公式ページの https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco.yaml を参照のこと.

    yolov8n.ptを使用する場合:

    cd /d c:%HOMEPATH%\ultralytics
    rmdir /s /q runs\detect\predict
    yolo predict model=yolov8n.pt source='https://ultralytics.com/images/bus.jpg' exist_ok=True
    runs\detect\predict\bus.jpg
    

    yolov8x.ptを使用する場合:

    cd /d c:%HOMEPATH%\ultralytics
    rmdir /s /q runs\detect\predict
    yolo predict model=yolov8x.pt source='https://ultralytics.com/images/bus.jpg' exist_ok=True
    runs\detect\predict\bus.jpg
    
  5. セグメンテーション機能の実行

    公式ドキュメント https://docs.ultralytics.com/tasks/segment/ の手順に従って実施する.

    yolov8n-seg.ptを使用する場合:

    cd /d c:%HOMEPATH%\ultralytics
    rmdir /s /q runs\segment\predict
    yolo segment predict model=yolov8n-seg.pt source='https://ultralytics.com/images/bus.jpg' exist_ok=True
    runs\segment\predict\bus.jpg
    

    yolov8x-seg.ptを使用する場合:

    cd /d c:%HOMEPATH%\ultralytics
    rmdir /s /q runs\segment\predict
    yolo segment predict model=yolov8x-seg.pt source='https://ultralytics.com/images/bus.jpg' exist_ok=True
    runs\segment\predict\bus.jpg
    
  6. 画像分類機能の実行

    公式ドキュメント https://docs.ultralytics.com/tasks/classify/ の手順に従って実施する.

    yolov8n-cls.ptを使用する場合:

    cd /d c:%HOMEPATH%\ultralytics
    rmdir /s /q runs\classify\predict
    yolo classify predict model=yolov8n-cls.pt source='https://ultralytics.com/images/bus.jpg' exist_ok=True
    runs\classify\predict\bus.jpg
    

    yolov8x-cls.ptを使用する場合:

    cd /d c:%HOMEPATH%\ultralytics
    rmdir /s /q runs\classify\predict
    yolo classify predict model=yolov8x-cls.pt source='https://ultralytics.com/images/bus.jpg' exist_ok=True
    runs\classify\predict\bus.jpg
    

物体検出の実行(YOLOv8 を使用)(Windows 上)

参考Webページ:https://colab.research.google.com/github/roboflow-ai/notebooks/blob/main/notebooks/train-yolov8-object-detection-on-custom-dataset.ipynb#scrollTo=FDbMt_M6PiXb

コマンドラインでの実行

  1. Windows で,コマンドプロンプトを実行
  2. 以下のコマンドで物体検出を実行

    「source='https://media.roboflow.com/notebooks/examples/dog.jpeg'」の部分は,任意のファイル名やURLを指定可能.

    物体検出の学習済みモデルには, yolov8n.pt, yolov8s.pt, yolov8m.pt, yolov8l.pt, yolov8x.pt が用意されている.これらはすべて COCO データセットで学習済みのモデルである.詳細については公式ページの https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco.yaml を参照のこと.

    yolov8x.ptを使用する場合:

    cd /d c:%HOMEPATH%\ultralytics
    rmdir /s /q runs\detect\predict
    yolo task=detect mode=predict model=yolov8x.pt conf=0.25 source='https://media.roboflow.com/notebooks/examples/dog.jpeg' save=True save_txt=True exist_ok=True
    runs\detect\predict\dog.jpeg
    
  3. 実行結果は runs\detect\predict\labels ディレクトリに保存される
  4. そのディレクトリ内のファイルを確認

    1列目はクラス番号,2列目から5列目はバウンディングボックスの座標データとなる.

Python プログラムによる物体検出結果の取得

  1. Python プログラムの実行

    Python プログラムの実行環境:

    Python 開発環境(Jupyter Qt ConsoleJupyter ノートブック (Jupyter Notebook)Jupyter LabNteractSpyderPyCharmPyScripterなど)も利用可能.

    Python の詳細については:別ページ »を参照

    python
    
  2. 以下の Python プログラムで物体検出結果を取得可能.

    yolov8x は COCO データセットで学習済みのモデルである.物体検出の学習済みモデルには, yolov8n.pt, yolov8s.pt, yolov8m.pt, yolov8l.pt, yolov8x.pt が用意されている.これらはすべて COCO データセットで学習済みのモデルである.詳細については公式ページの https://github.com/ultralytics/ultralytics/blob/main/ultralytics/cfg/datasets/coco.yaml を参照のこと.

    from ultralytics import YOLO
    model = YOLO("yolov8x.pt")  # 学習済みモデルの読み込み(学習時に推奨)
    results = model.predict(source='https://media.roboflow.com/notebooks/examples/dog.jpeg', conf=0.25)
    for i in results:
        print(i.boxes.xyxy)
        print(i.boxes.cls)
    
    exit()
    

YOLO形式のオープンデータを用いた新規クラス物体検出のための再学習・転移学習

【再学習】

再学習(Fine-tuning)とは,大量のデータで事前学習済みのモデルを活用して新しい課題に適応させる手法である.オブジェクト検出において,再学習により事前学習時に含まれていなかった新規クラス(物体カテゴリ)の検出が可能となる.事前学習済みモデルはすでに特徴抽出能力を獲得しているため,比較的少量のデータで効率的に新規タスクを学習できる特徴がある.再学習プロセスでは,事前学習済みモデルの重みとバイアスを活用し,新規タスクのデータで調整することでモデルの能力を拡張する.この手法により,ランダムな初期値からの学習と比較して,より効率的な学習が実現できる.

【転移学習】

転移学習(Transfer Learning)は,事前学習済みモデルを活用する機械学習の先進的手法である.この手法では,事前学習済みモデルの最終層以外の層における重みとバイアスを固定し,最終層のみを新規タスクに合わせて再学習する.最終層以外のパラメータを固定することで,調整が必要なパラメータ数を大幅に削減し,以下の利点を実現する.

転移学習は,画像分類,自然言語処理,音声認識など,幅広い分野で実践的な成果を上げている.

再学習用のデータの準備

画像データと物体検出のためのアノテーションデータとして,クラス名とバウンディングボックスのデータを使用する. この目的のために,YOLO形式のオープンデータであるTraffic Signs Datasetを活用する.

Traffic Signs Dataset をダウンロードし,次の処理を実施した上で学習を実行する

  1. Traffic Signs Dataset in YOLO format のページにアクセスする

    https://www.kaggle.com/datasets/valentynsichkar/traffic-signs-dataset-in-yolo-format?resource=downloa

  2. Download」 をクリックしてダウンロードを開始する
  3. Kaggleへの登録もしくはGoogle アカウントでのサインインが要求された場合は,画面の指示に従って処理を進める.その後,再度「Download」 をクリック
  4. archive.zip がダウンロードされる.
  5. C:\archive ディレクトリを作成し,archive.zip をこのディレクトリ内に展開する.

    次のように配置する.

  6. Windowsコマンドプロンプトを起動
  7. 以下のコマンドでカレントディレクトリを「C:\archive」に移動し,python を起動
    cd C:\archive\ts
    python
    
  8. Pythonプログラムを実行する

    このプログラムは,"ts/ts/"ディレクトリ内の900個のテキストファイル("00000.txt"から"00899.txt")を処理する. 各ファイルの全行において,最初の列からクラス番号(0, 1, 2, 3)を抽出し,その値が80未満の場合,80を加算してファイルに書き戻す. ファイルが存在しない場合,エラーメッセージを出力する.

    def update_class_number(filename):
        with open(filename, "r", encoding="utf-8") as file:
            lines = file.readlines()
        updated_lines = []
        for line in lines:
            parts = line.strip().split()
            if len(parts) >= 5:
                class_number = int(parts[0])
                # もともとのクラス番号 (class_number) は 0, 1, 2, 3 である。80を加えて,元のファイルのクラス番号を更新する
                if class_number < 80:
                    updated_class_number = class_number + 80
                    x1, y1, x2, y2 = map(float, parts[1:])
                    updated_line = f"{updated_class_number} {x1} {y1} {x2} {y2}\n"
                    updated_lines.append(updated_line)
                else:
                    updated_lines.append(line)
            else:
                updated_lines.append(line)
        with open(filename, "w", encoding="utf-8") as file:
            file.writelines(updated_lines)
    
    file_not_found = False
    for i in range(0, 900):
        # 00000.txt から 00899.txt まで
        filename = f"ts/{i:05}.txt"
        try:
            update_class_number(filename)
            # 確認表示
            with open(filename, "r", encoding="utf-8") as file:
                first_line = file.readline().strip()
                print(f"filename: {filename} , {first_line}")
        except FileNotFoundError:
            print(f"{filename} が見つかりませんでした")
            file_not_found = True
    
    exit()
    
  9. 処理完了の確認

    このプログラムの実行により,クラス番号を 80, 81, 82, 83 に変更する.

    各クラス番号に対応するクラス名は,ファイル c:\archive\classes.names に記載されており,以下の通りである.

    80, prohibitory
    81, danger
    82, mandatory
    83, other
    
  10. 画像の幅を640にリサイズする

    まず,以下のコマンドを実行

    cd c:\archive\ts\ts
    python
    

    次のPythonプログラムを実行する

    from PIL import Image
    import os
    
    # 新しい幅
    new_width = 640
    
    # カレントディレクトリ内のすべてのファイル
    for filename in os.listdir('.'):
        # .jpgファイルのみを処理
        if filename.endswith('.jpg'):
            print(f"{filename} を変換")
            with Image.open(filename) as img:
                # アスペクト比を保持した高さを計算
                aspect_ratio = new_width / img.width
                new_height = int(img.height * aspect_ratio)
                # リサイズ
                resized_img = img.resize((new_width, new_height))
                # 元のファイルを上書き
                resized_img.save(filename)
    
    exit()
    
  11. 検証用のディレクトリを作成し,指定のファイルを移動する.
    mkdir c:\archive\ts\ts\images
    mkdir c:\archive\ts\ts\images\train
    mkdir c:\archive\ts\ts\images\val
    mkdir c:\archive\ts\ts\labels
    mkdir c:\archive\ts\ts\labels\train
    mkdir c:\archive\ts\ts\labels\val
    cd c:\archive\ts\ts
    move *1.txt labels\val
    move *1.jpg images\val
    move *.txt labels\train
    move *.jpg images\train
    icacls c:\archive\ts /grant Everyone:F /T
    
  12. データセット設定ファイル ts.yaml を作成する

    エディタを起動する

    cd /d c:%HOMEPATH%
    cd ultralytics
    notepad ts.yaml
    

    エディタで以下の内容を記述し保存する.

    names は 84 個の文字列で構成されるリストである.最初の 80 個は COCO データセットのクラス名,残りの 4 個は,これから学習を実施するデータセットのクラス名となる.

    path: c:/archive/ts/ts
    train: images/train
    val: images/val
    nc: 84
    names:
      0: person
      1: bicycle
      2: car
      3: motorcycle
      4: airplane
      5: bus
      6: train
      7: truck
      8: boat
      9: traffic light
      10: fire hydrant
      11: stop sign
      12: parking meter
      13: bench
      14: bird
      15: cat
      16: dog
      17: horse
      18: sheep
      19: cow
      20: elephant
      21: bear
      22: zebra
      23: giraffe
      24: backpack
      25: umbrella
      26: handbag
      27: tie
      28: suitcase
      29: frisbee
      30: skis
      31: snowboard
      32: sports ball
      33: kite
      34: baseball bat
      35: baseball glove
      36: skateboard
      37: surfboard
      38: tennis racket
      39: bottle
      40: wine glass
      41: cup
      42: fork
      43: knife
      44: spoon
      45: bowl
      46: banana
      47: apple
      48: sandwich
      49: orange
      50: broccoli
      51: carrot
      52: hot dog
      53: pizza
      54: donut
      55: cake
      56: chair
      57: couch
      58: potted plant
      59: bed
      60: dining table
      61: toilet
      62: tv
      63: laptop
      64: mouse
      65: remote
      66: keyboard
      67: cell phone
      68: microwave
      69: oven
      70: toaster
      71: sink
      72: refrigerator
      73: book
      74: clock
      75: vase
      76: scissors
      77: teddy bear
      78: hair drier
      79: toothbrush
      80: prohibitory
      81: danger
      82: mandatory
      83: other
    

再学習の実行

  1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)する

    コマンドプロンプトを管理者として実行する方法: 別ページ »を参照

  2. 再学習を実行する

    GPU 使用時は,以下のコマンドを実行する.

    処理時間の目安は10分から数十分程度である.

    cd /d c:%HOMEPATH%
    cd ultralytics
    yolo task=detect mode=train data=ts.yaml model=yolov8x.pt epochs=30 imgsz=640 verbose=True exist_ok=True rect=True
    

    実行後,「pretrained=True」と表示されるので,yolov8x.pt の学習結果が利用されていることが確認できる.

    このとき,次のように「Enter your choice」と表示された場合は 3, Enter と操作する.

    なお,GPU を使わないときは,次のように「device=cpu」を付ける.このときは,実行に10時間ほどかかる.

    cd /d c:%HOMEPATH%
    cd ultralytics
    yolo task=detect mode=train data=ts.yaml model=yolov8x.pt epochs=30 imgsz=640 verbose=True exist_ok=True rect=True device=cpu
    
  3. 再学習の終了の確認

    このとき,結果が保存されているディレクトリを確認する. 最後のところに「Results saved to runs\detect\...」のように表示されるので確認

    dir コマンドでファイルを結果を確認.

    dir runs\detect\train
    dir runs\detect\train\weights
    
  4. 学習したデータで物体検出してみる

    「runs/detect/train」のところには,先ほど確認した「結果が保存されているディレクトリ」である.

    yolo predict model=./runs/detect/train/weights/best.pt source='c:/archive/ts/ts/images/val/00001.jpg' save=True save_txt=True show=True exist_ok=True
    runs\detect\predict\00001.jpg
    

転移学習の実行

学習時に「freeze=22」の設定をつけることで,転移学習を行うことができる.

  1. Windows で,コマンドプロンプト管理者権限で起動する(例:Windowsキーを押し,「cmd」と入力し,「管理者として実行」を選択)
  2. 転移学習の実行

    GPU を使うときは,次のように実行する.

    実行にかかる時間の目安は10分から数十分である.

    cd /d c:%HOMEPATH%
    cd ultralytics
    yolo task=detect mode=train data=ts.yaml model=yolov8x.pt epochs=30 imgsz=640 verbose=True exist_ok=True rect=True freeze=22
    

    実行後,「pretrained=True」と表示されるので,yolov8x.pt の学習結果が利用されていることが確認できる.

    このとき,次のように「Enter your choice」と表示された場合は 3, Enter と操作する.

    なお,GPU を使わないときは,次のように「device=cpu」を付ける.このときは,実行に10時間ほどかかる.

    cd /d c:%HOMEPATH%
    cd ultralytics
    yolo task=detect mode=train data=ts.yaml model=yolov8x.pt epochs=30 imgsz=640 verbose=True exist_ok=True rect=True device=cpu freeze=22
    
  3. 転移学習の終了の確認

    このとき,結果が保存されているディレクトリを確認する. 最後のところに「Results saved to runs\detect\...」のように表示されるので確認

    dir コマンドでファイルを結果を確認.

    dir runs\detect\train
    dir runs\detect\train\weights
    
  4. 学習したデータで物体検出してみる

    「runs/detect/train」のところには,先ほど確認した「結果が保存されているディレクトリ」である.

    yolo predict model=./runs/detect/train/weights/best.pt source='c:/archive/ts/ts/images/val/00001.jpg' save=True save_txt=True show=True exist_ok=True
    runs\detect\predict\00001.jpg