物体検出,セグメンテーション,画像分類,物体検出の再学習と転移学習(YOLOv8,PyTorch,Python を使用)(Windows 上)
【目次】
前準備
Build Tools for Visual Studio 2022 のインストール(Windows 上)
以下のコマンドを管理者権限のコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。
REM VC++ ランタイム
winget install --scope machine --accept-source-agreements --accept-package-agreements --silent --id Microsoft.VCRedist.2015+.x64
REM Build Tools + Desktop development with C++(VCTools)+ 追加コンポーネント(一括)
winget install --id Microsoft.VisualStudio.2022.BuildTools ^
--override "--passive --wait --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.ComponentGroup.ClangCL --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.Windows11SDK.26100"
--add で追加されるコンポーネント
上記のコマンドでは,まず Build Tools 本体と Visual C++ 再頒布可能パッケージをインストールし,次に setup.exe を用いて以下のコンポーネントを追加している。
VCTools:C++ デスクトップ開発ワークロード(--includeRecommendedにより、MSVC コンパイラ、C++ AddressSanitizer、vcpkg、CMake ツール、Windows 11 SDK 等の推奨コンポーネントが含まれる)VC.Llvm.Clang:Windows 向け C++ Clang コンパイラClangCL:clang-cl ツールセットを含むコンポーネントグループ(MSBuild から Clang を使用するために必要)VC.CMake.Project:Windows 向け C++ CMake ツールWindows11SDK.26100:Windows 11 SDK(ビルド 10.0.26100)
インストール完了の確認
winget list Microsoft.VisualStudio.2022.BuildTools
上記以外のコンポーネントが必要になった場合は Visual Studio Installer で個別にインストールできる。
Python 3.12 のインストール
以下のいずれかの方法で Python 3.12 をインストールする。
方法1:winget によるインストール
Python がインストール済みの場合、この手順は不要である。管理者権限のコマンドプロンプトで以下を実行する。管理者権限のコマンドプロンプトを起動するには、Windows キーまたはスタートメニューから「cmd」と入力し、表示された「コマンドプロンプト」を右クリックして「管理者として実行」を選択する。
winget install -e --id Python.Python.3.12 --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 AssociateFiles=1 InstallLauncherAllUsers=1"
--scope machine を指定することで、システム全体(全ユーザー向け)にインストールされる。このオプションの実行には管理者権限が必要である。インストール完了後、コマンドプロンプトを再起動すると PATH が自動的に設定される。
方法2:インストーラーによるインストール
- Python 公式サイト(https://www.python.org/downloads/)にアクセスし、「Download Python 3.x.x」ボタンから Windows 用インストーラーをダウンロードする。
- ダウンロードしたインストーラーを実行する。
- 初期画面の下部に表示される「Add python.exe to PATH」に必ずチェックを入れてから「Customize installation」を選択する。このチェックを入れ忘れると、コマンドプロンプトから
pythonコマンドを実行できない。 - 「Install Python 3.xx for all users」にチェックを入れ、「Install」をクリックする。
インストールの確認
コマンドプロンプトで以下を実行する。
python --version
バージョン番号(例:Python 3.12.x)が表示されればインストール成功である。「'python' は、内部コマンドまたは外部コマンドとして認識されていません。」と表示される場合は、インストールが正常に完了していない。
Gitのインストール
以下のコマンドを管理者権限のコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。管理者権限は、wingetの--scope machineオプションでシステム全体にソフトウェアをインストールするために必要となる。
REM Git をシステム領域にインストール
winget install --scope machine --id Git.Git -e --silent --accept-source-agreements --accept-package-agreements
REM Git のパス設定
set "GIT_PATH=C:\Program Files\Git\cmd"
for /f "skip=2 tokens=2*" %a in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path') do set "SYSTEM_PATH=%b"
if exist "%GIT_PATH%" (
echo "%SYSTEM_PATH%" | find /i "%GIT_PATH%" >nul
if errorlevel 1 setx PATH "%GIT_PATH%;%SYSTEM_PATH%" /M >nul
)
Build Tools for Visual Studio 2022,NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.8,NVIDIA cuDNN 8.9.7 のインストール(Windows 上)
【サイト内の関連ページ】 NVIDIA グラフィックスボードを搭載しているパソコンの場合には, NVIDIA ドライバ, NVIDIA CUDA ツールキット, NVIDIA cuDNN のインストールを行う.
- Windows での Build Tools for Visual Studio 2022 のインストール: 別ページ »で説明
- Windows での NVIDIA ドライバ,NVIDIA CUDA ツールキット 11.8,NVIDIA cuDNN v8.9.7 のインストール手順: 別ページ »で説明
【関連する外部ページ】
- Build Tools for Visual Studio 2022 (ビルドツール for Visual Studio 2022)の公式ダウンロードページ: https://visualstudio.microsoft.com/ja/visual-cpp-build-tools/
- NVIDIA ドライバのダウンロードの公式ページ: https://www.nvidia.co.jp/Download/index.aspx?lang=jp
- NVIDIA CUDA ツールキットのアーカイブの公式ページ: https://developer.nvidia.com/cuda-toolkit-archive
- NVIDIA cuDNN のダウンロードの公式ページ: https://developer.nvidia.com/cudnn
PyTorch のインストール(Windows 上)
Windows 環境に PyTorch をインストールする手順を解説します.主に pip を使用する方法と Miniconda (conda) を使用する方法を紹介します.
1. 実行前の準備
インストール作業を行う前に,以下の準備と確認を行ってください.
- 管理者権限でのコマンドプロンプト/Miniconda Prompt 起動:
インストールコマンドは管理者権限で実行することを推奨します.Windows キーを押し「cmd」または「Miniconda Prompt」と入力し,「管理者として実行」を選択して起動してください. - Python 環境:
システムに Python がインストールされ,pip または Miniconda (conda) が利用可能な状態であることを確認してください. - NVIDIA CUDA Toolkit (GPU版を利用する場合):
PyTorch で NVIDIA GPU を利用する場合は,対応する GPU と,適切なバージョンの NVIDIA CUDA Toolkit が事前にインストールされている必要があります.- CUDA バージョンの確認: コマンドプロンプト等で
nvcc --versionを実行し,バージョンを確認します.この例では CUDA 11.8 がインストール済みであると仮定します. - 互換性の確認: インストールする PyTorch と互換性のある CUDA バージョンを PyTorch 公式サイトで確認してください.
- CUDA バージョンの確認: コマンドプロンプト等で
2. PyTorch 公式サイトでのコマンド確認
【重要】 PyTorch のインストールコマンドは,OS,パッケージ管理ツール (pip/conda),Python バージョン,CUDA バージョンによって異なります.必ず以下の PyTorch 公式サイトで,ご自身の環境に合った最新のインストールコマンドを確認・実行してください.
- PyTorch 公式サイト (インストールページ): https://pytorch.org/get-started/locally/
以下の手順で示すコマンドは,特定の環境(例: CUDA 11.8)における一例です.
3. pip を使用したインストール
Python 標準のパッケージ管理ツール pip を使用する方法です.
(1) pip の更新 (任意)
python -m pip install --upgrade pip
(2) 既存の PyTorch 関連パッケージのアンインストール (推奨)
古いバージョン等がインストールされている場合に実行します.
python -m pip uninstall torch torchvision torchaudio
# 必要に応じて torchtext, xformers などもアンインストール
# python -m pip uninstall torchtext xformers
(3) PyTorch のインストール
【注意】 必ず公式サイトで生成したコマンドを使用してください.以下は CUDA 11.8 環境向けの 一例 です.
# 公式サイトで取得した pip install コマンドを実行
# 例 (CUDA 11.8):
python -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
(4) インストールの確認
python -c "import torch; print(f'PyTorch Version: {torch.__version__}'); print(f'CUDA Available: {torch.cuda.is_available()}')"
CUDA Available: True と表示されれば,GPU が正しく認識されています (GPU 環境の場合).
4. Miniconda (conda) を使用したインストール
データサイエンス環境構築によく使われる Miniconda (または Anaconda) を使用している場合は,conda コマンドでもインストールできます.
conda 環境では,PyTorch のような複雑な依存関係を持つライブラリの場合,pip よりも依存関係の問題が発生することがあります.問題が発生した場合は,pip を使用したインストール(セクション3)を試すことを検討してください.
(1) Miniconda Prompt (または Anaconda Prompt) の起動
管理者として実行で Miniconda Prompt を起動します.
(2) PyTorch のインストール
【注意】 必ず公式サイトで Package に Conda を選択し,生成されたコマンドを使用してください.以下は CUDA 11.8 環境向けの 一例 です.
# 公式サイトで取得した conda install コマンドを実行
# 例 (CUDA 11.8):
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
-c pytorch -c nvidia は,PyTorch と NVIDIA の公式 conda チャネルを指定しています.
(3) インストールの確認
python -c "import torch; print(f'PyTorch Version: {torch.__version__}'); print(f'CUDA Available: {torch.cuda.is_available()}')"
関連情報
【サイト内の関連ページ】
【関連する外部ページ】
- PyTorch 公式サイト (インストール): https://pytorch.org/get-started/locally/
- PyTorch 公式サイト (トップ): https://pytorch.org/
YOLOv8 のインストール(Windows 上)
YOLOv8 の公式の GitHub リポジトリ https://github.com/ultralytics/ultralytics に従ってインストールを実施する.
- 以下の手順を管理者権限のコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー →
cmdと入力 → 右クリック → 「管理者として実行」)。 - 必要なパッケージのインストールおよびソースコードのダウンロード
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 - Windows で,コマンドプロンプトを実行
- 物体検出機能の実行
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
- セグメンテーション機能の実行
公式ドキュメント 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
- 画像分類機能の実行
公式ドキュメント 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 上)
コマンドラインでの実行
- Windows で,コマンドプロンプトを実行
- 以下のコマンドで物体検出を実行
「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
- 実行結果は runs\detect\predict\labels ディレクトリに保存される
- そのディレクトリ内のファイルを確認
1列目はクラス番号,2列目から5列目はバウンディングボックスの座標データとなる.
Python プログラムによる物体検出結果の取得
- Python プログラムの実行
Python プログラムの実行環境:
- Windows では python (Python ランチャーは py)
- Ubuntu では python3
Python 開発環境(Jupyter Qt Console, Jupyter ノートブック (Jupyter Notebook), Jupyter Lab, Nteract, Spyder, PyCharm, PyScripterなど)も利用可能.
Python の詳細については:別ページ »を参照
python - 以下の 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 をダウンロードし,次の処理を実施した上で学習を実行する
- クラス番号のうち 0から 79は COCOデータセットで使用される番号であるため,
Traffic Signs Dataset では,80, 81, 82, 83 を使用する.
Traffic Signs Dataset は,0, 1, 2, 3 を使用しても学習は可能であるが, COCOデータセットとの混同を防ぐため,80, 81, 82, 83 を使用する.
- Traffic Signs Dataset のデータセットを,train(学習)データと validation(検証)データに分割する
- ファイルは次のディレクトリ構成で配置する.
├── images/ ├─train/ └─val/ ├── labels/ ├─train/ └─val/ - 画像の横幅を統一する.本実装では,640にリサイズしている.
- Traffic Signs Dataset in YOLO format のページにアクセスする
- 「Download」 をクリックしてダウンロードを開始する
- Kaggleへの登録もしくはGoogle アカウントでのサインインが要求された場合は,画面の指示に従って処理を進める.その後,再度「Download」 をクリック
- archive.zip がダウンロードされる.
- C:\archive ディレクトリを作成し,archive.zip をこのディレクトリ内に展開する.
次のように配置する.
- Windows でコマンドプロンプトを起動
- 以下のコマンドでカレントディレクトリを「C:\archive」に移動し,python を起動
cd C:\archive\ts python
- 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() - 処理完了の確認
このプログラムの実行により,クラス番号を 80, 81, 82, 83 に変更する.
各クラス番号に対応するクラス名は,ファイル c:\archive\classes.names に記載されており,以下の通りである.
80, prohibitory 81, danger 82, mandatory 83, other
- 画像の幅を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()
- 検証用のディレクトリを作成し,指定のファイルを移動する.
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 - データセット設定ファイル 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
再学習の実行
- 以下の手順を管理者権限のコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー →
cmdと入力 → 右クリック → 「管理者として実行」)。
する
- 再学習を実行する
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- 再学習の終了の確認
このとき,結果が保存されているディレクトリを確認する. 最後のところに「Results saved to runs\detect\...」のように表示されるので確認
dir コマンドでファイルを結果を確認.
dir runs\detect\train dir runs\detect\train\weights
- 学習したデータで物体検出してみる
「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」の設定をつけることで,転移学習を行うことができる.
- 以下の手順を管理者権限のコマンドプロンプトで実行する
(手順:Windowsキーまたはスタートメニュー →
cmdと入力 → 右クリック → 「管理者として実行」)。 - 転移学習の実行
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- 転移学習の終了の確認
このとき,結果が保存されているディレクトリを確認する. 最後のところに「Results saved to runs\detect\...」のように表示されるので確認
dir コマンドでファイルを結果を確認.
dir runs\detect\train dir runs\detect\train\weights
- 学習したデータで物体検出してみる
「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
- 転移学習の終了の確認
- 再学習の終了の確認