Citra「PabloMK7 フォーク」
このフォークは開発を停止しました。新しいより本格的な Citra 継続プロジェクトがすぐに続きます。
ライセンス: Apache-2.0 ライセンス
目次
1. ダークネットオブジェクト検出フレームワークとYOLO
2. 論文
3. 一般情報
4. ダークネットバージョン
5. MSCOCO 事前トレーニング済み重み
6. 建物
* Googleコラボ
* Linux CMake メソッド
* Windows CMake メソッド
7. ダークネットの使用
* CLI
* トレーニング
8. その他のツールとリンク
9. ロードマップ
* 短期的な目標
※中期目標
* 長期的な目標
ダークネットオブジェクト検出フレームワークとYOLO
Darknet は、C、C++、CUDA で書かれたオープンソースのニューラル ネットワーク フレームワークです。
YOLO (You Only Look Once) は、Darknet フレームワーク内で実行される最先端のリアルタイムの物体検出システムです。
Hank.ai がダークネット/YOLO コミュニティをどのように支援しているかをご覧ください: https://hank-ai.com/
Darknet V3「ジャズ」の発表: https://darknetcv.ai/
Darknet/YOLO FAQ をよくお読みください: https://darknetcv.ai/faq/
Darknet/YOLO Discord サーバーに参加します: https://discord.gg/zSq8rtW
論文
1.論文YOLOv7: https://arxiv.org/abs/2207.02696
2. 紙スケール-YOLOv4: https://arxiv.org/abs/2102.05909
3. 論文 YOLOv4: https://arxiv.org/abs/2004.10934
4.論文YOLOv3: https://arxiv.org/abs/1804.02769
一般情報
Darknet/YOLO フレームワークは、他のフレームワークや YOLO バージョンよりも高速かつ正確であり続けます。
このフレームワークは完全に無料でオープンソースです。 Darknet/YOLO は、ライセンスや料金を支払うことなく、商用プロジェクトを含む既存のプロジェクトや製品に組み込むことができます。
2024 年 10 月にリリースされた Darknet V3 (「Jazz」) は、NVIDIA RTX 3090 GPU を使用する場合、LEGO データセット ビデオを最大 1000 FPS で正確に実行できます。つまり、各ビデオ フレームは Darknet/YOLO によって 1 つのプロセスで読み取られ、サイズ変更され、処理されます。ミリ秒以下。
サポートが必要な場合、または Darknet/YOLO について議論したい場合は、Darknet/YOLO Discord サーバーに参加してください: https://discord.gg/zSq8rtW
Darknet/YOLO の CPU バージョンは、Raspberry Pi、クラウドおよびコラボ サーバー、デスクトップ、ラップトップ、ハイエンド トレーニング リグなどのシンプルなデバイス上で実行できます。 Darknet/YOLO の GPU バージョンには、NVIDIA の CUDA 対応 GPU が必要です。
Darknet/YOLO は、Linux、Windows、および Mac で動作することが知られています。以下の組み立て説明書を参照してください。
ダークネットバージョン
2013 年から 2017 年に Joseph Redmon によって作成されたオリジナルの Darknet ツールにはバージョン番号がありませんでした。このバージョンは 0.x であると考えます。
Alexey Bochkovskiy が 2017 年から 2021 年にかけて管理していた次に人気のある Darknet リポジトリにもバージョン番号がありませんでした。これをバージョン 1.x とみなします。
Hank.ai が後援し、2023 年から Stéphane Charette によって保守されている Darknet リポジトリは、バージョン コマンドを備えた最初のリポジトリでした。 2023 年から 2024 年後半まで、バージョン 2.x「OAK」が返されました。
バージョン 2.x「OAK」の目標:
1. コードベースに慣れながら、既存の機能をできるだけ壊さないようにします。
2. Windows と Linux の両方で CMake を使用して 1 つの統合された方法でビルドできるようにビルド ステップを書き直します。
3. C++ コンパイラを使用するようにコードベースを変換します。
4. トレーニング中に chart.png を強化します。
5. バグ修正とパフォーマンス関連の最適化。主にネットワークのトレーニングにかかる時間の短縮に関連します。
このコードベースの最後のブランチは、v2 ブランチのバージョン 2.1 です。
開発の次のフェーズは 2024 年半ばに開始され、2024 年 10 月にリリースされました。version コマンドは 3.x "JAZZ" を返すようになりました。
これらのコマンドのいずれかを実行する必要がある場合は、いつでも以前の v2 ブランチをチェックアウトできます。不足しているコマンドを再度追加するよう調査いたしますので、お知らせください。
バージョン 3.x の「JAZZ」の変更点:
1. 多くの古い、メンテナンスされていないコマンドを削除しました。
2. トレーニング時と推論時の両方で、多くのパフォーマンスが最適化されます。
3. レガシー C API が変更されました。オリジナルの Darknet API を使用するアプリケーションには若干の変更が必要です: https://darknetcv.ai/api/api.html
4. 新しい Darknet V3 C および C++ API: https://darknetcv.ai/api/api.html
5. src-examples の新しいアプリとサンプル コード: https://darknetcv.ai/api/files.html
MSCOCO 事前トレーニング済み重み
YOLO のいくつかの一般的なバージョンは、便宜上 MSCOCO データセットで事前トレーニングされました。このデータセットには 80 のクラスがあり、テキスト ファイル cfg/coco.names で確認できます。
Darknet/YOLO のテストに利用できる、LEGO Gears や Rolodex などのより単純なデータセットと事前トレーニングされた重みが他にもいくつかあります。詳細については、ダークネット/YOLO FAQ を参照してください。
MSCOCO の事前トレーニングされた重みは、いくつかの異なる場所からダウンロードできます。また、このリポジトリからもダウンロードできます。
YOLOv2、2016 年 11 月:
* yolov2-tiny.weights
* yolov2-full.weights
YOLOv3、2018 年 5 月:
* yolov3-tiny.weights
* yolov3-full.weights
YOLOv4、2020 年 5 月:
* yolov4-tiny.weights
* yolov4-full.weights
YOLOv7、2022 年 8 月:
* yolov7-tiny.weights
* yolov7-full.weights
MSCOCO の事前トレーニングされた重みは、デモの目的でのみ提供されています。 MSCOCO に対応する .cfg および .names ファイルは、cfg ディレクトリにあります。コマンドの例:
「バッシュ」
wget --no-clobber https://github.com/hank-ai/darknet/releases/download/v2.0/yolov4-tiny.weights
darknet02displayannotatedimages coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
darknet03display_videos coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights image1.jpg
DarkHelp coco.names yolov4-tiny.cfg yolov4-tiny.weights video1.avi
`
人々は自分自身のネットワークをトレーニングすることが期待されていることに注意してください。 MSCOCO は通常、すべてが正しく動作していることを確認するために使用されます。
建物
過去 (2023 年以前) に利用可能だったさまざまなビルド方法が、単一の統合ソリューションに統合されました。 Darknet には C++17 以降の OpenCV が必要で、CMake を使用して必要なプロジェクト ファイルを生成します。
車を運転するのに整備士である必要がないのと同じように、Darknet/YOLO を構築、インストール、または実行するために C++ の知識は必要ありません。
Googleコラボ
Google Colab の手順は Linux の手順と同じです。新しいネットワークのトレーニングなど、特定のタスクの実行方法を示すいくつかの Jupyter ノートブックが利用可能です。
colab サブディレクトリ内のノートブックを参照するか、以下の Linux の手順に従ってください。
Linux CMake メソッド
Linux 用の Darknet ビルド チュートリアル:
1. 前提条件をインストールします。
「バッシュ」
sudo apt-get install build-essential git libopencv-dev cmake
`
2. ダークネット リポジトリのクローンを作成します。
「バッシュ」
mkdir ~/srccd ~/src
git clone https://github.com/hank-ai/darknet
CDダークネット
mkdir ビルド
CD ビルド
`
3. 以下を構成および構築します。
「バッシュ」
cmake -DCMAKEBUILDTYPE=リリース ..
-j4 パッケージを作成する
sudo dpkg -i darknet-VERSION.deb
`
4. オプション: CUDA/cuDNN をインストールします。
最新の NVIDIA GPU を使用している場合は、この時点で CUDA または CUDA+cuDNN をインストールできます。インストールされている場合、Darknet は GPU を使用して画像 (およびビデオ) の処理を高速化します。
CMake に必要なファイルをすべて再検索させるには、Darknet ビルド ディレクトリから CMakeCache.txt ファイルを削除する必要があります。ダークネットを再構築することを忘れないでください。
ダークネットはこれなしでも実行できますが、カスタム ネットワークをトレーニングする場合は、CUDA または CUDA+cuDNN のいずれかが必要です。
* https://developer.nvidia.com/cuda-downloads にアクセスして、CUDA をダウンロードしてインストールします。
* https://developer.nvidia.com/rdp/cudnn-download または https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview にアクセスして、 cuDNNをダウンロードしてインストールします。
CUDA をインストールしたら、nvcc と nvidia-smi を実行できることを確認します。 PATH 変数の変更が必要になる場合があります。
後で CUDA または CUDA+cuDNN をインストールする場合、または NVIDIA ソフトウェアの新しいバージョンにアップグレードする場合:
* これらの手順は、Ubuntu 22.04 を実行しているシステムを前提としています (ただし、必須ではありません)。別のディストリビューションを使用している場合は、必要に応じて調整してください。
* CMakeCache.txt ファイルを削除し、cmake と make を再実行します。
上級ユーザー:
DEB ファイルではなく RPM インストール ファイルをビルドする場合は、CM_package.cmake の関連する行を参照してください。 make -j4 package を実行する前に、次の 2 行を編集する必要があります。
`cmake
# SET (CPACK_GENERATOR "DEB")
SET (CPACK_GENERATOR "RPM")
`
Centos や OpenSUSE などのディストリビューションの場合、CM_package.cmake の 2 行を次のように変更する必要があります。
`cmake
# SET (CPACK_GENERATOR "DEB")
SET (CPACK_GENERATOR "RPM")
`
インストール パッケージの構築が完了したら、インストール パッケージをインストールするには、ディストリビューションの通常のパッケージ マネージャーを使用します。たとえば、Ubuntu などの Debian ベースのシステムでは次のようになります。
「バッシュ」
sudo dpkg -i darknet-2.0.1-Linux.deb
`
.deb パッケージをインストールすると、次のファイルがコピーされます。
/usr/bin/darknet は通常の Darknet 実行可能ファイルです。 CLI からダークネット バージョンを実行して、正しくインストールされていることを確認します。
/usr/include/darknet.h は、C、C++、Python 開発者向けの Darknet API です。
/usr/include/darknet_version.h には、開発者向けのバージョン情報が含まれています。
/usr/lib/libdarknet.so は、C、C++、Python 開発者向けにリンクするライブラリです。
/opt/darknet/cfg/... は、すべての .cfg テンプレートが保存される場所です。
これで完了です。 Darknet が構築され、/usr/bin/ にインストールされています。これを実行してテストします: ダークネット バージョン。
/usr/bin/darknet がない場合は、インストールしたのではなく、ビルドしただけであることを意味します。必ず上記のように .deb または .rpm ファイルをインストールしてください。
Windows CMake メソッド
これらの手順は、Windows 11 22H2 の新規インストールを前提としています。
1. 前提条件をインストールします。
「バッシュ」
winget インストール Git.Git
winget インストール Kitware.CMake
winget インストール nsis.nsis
winget インストール Microsoft.VisualStudio.2022.Community
`
2. Visual Studio のインストールを変更します。
* 「Windows スタート」メニューをクリックし、「Visual Studio インストーラー」を実行します。
*「変更」をクリックします
* C++ を使用したデスクトップ開発を選択します
※右下の「変更」をクリックし、「はい」をクリックします。
3. Microsoft VCPKG をインストールします。
すべてがダウンロードされてインストールされたら、[Windows スタート] メニューを再度クリックし、VS 2022 の開発者コマンド プロンプトを選択します。これらの手順では PowerShell を使用しないでください。問題が発生します。
上級ユーザー:
開発者コマンド プロンプトを実行する代わりに、通常のコマンド プロンプトまたは SSH を使用してデバイスに接続し、Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat を手動で実行できます。
上記のように開発者コマンド プロンプトを実行したら (PowerShell ではありません!)、次のコマンドを実行して Microsoft VCPKG をインストールします。これは OpenCV のビルドに使用されます。
「バッシュ」
CDC:
mkdir c:srccd c:src
git clone https://github.com/microsoft/vcpkg
cd vcpkg
ブートストラップ-vcpkg.bat
.vcpkg.exe 統合インストール
.vcpkg.exe は PowerShell を統合します
.vcpkg.exe インストール opencv[contrib,dnn,freetype,jpeg,openmp,png,webp,world]:x64-windows
`
この最後のステップは実行に時間がかかる場合があるため、しばらくお待ちください。多くのものをダウンロードしてビルドする必要があります。
上級ユーザー:
OpenCV を構築するときに追加したいオプションのモジュールが他にもたくさんあることに注意してください。 .vcpkg.exe search opencv を実行して、完全なリストを表示します。
4. オプション: CUDA/cuDNN をインストールします。
最新の NVIDIA GPU を使用している場合は、この時点で CUDA または CUDA+cuDNN をインストールできます。インストールされている場合、Darknet は GPU を使用して画像 (およびビデオ) の処理を高速化します。
CMake に必要なファイルをすべて再検索させるには、Darknet ビルド ディレクトリから CMakeCache.txt ファイルを削除する必要があります。ダークネットを再構築することを忘れないでください。
ダークネットはこれなしでも実行できますが、カスタム ネットワークをトレーニングする場合は、CUDA または CUDA+cuDNN のいずれかが必要です。
* https://developer.nvidia.com/cuda-downloads にアクセスして、CUDA をダウンロードしてインストールします。
* https://developer.nvidia.com/rdp/cudnn-download または https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows にアクセスして、cuDNN をダウンロードしてインストールします。
CUDA をインストールしたら、nvcc.exe および nvidia-smi.exe を実行できることを確認します。 PATH 変数の変更が必要になる場合があります。
cuDNN をダウンロードしたら、解凍して、bin、include、lib ディレクトリを C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/[バージョン]/ にコピーします。一部のファイルを上書きする必要がある場合があります。
後で CUDA または CUDA+cuDNN をインストールする場合、または NVIDIA ソフトウェアの新しいバージョンにアップグレードする場合:
※CUDAはVisual Studioの後にインストールする必要があります。 Visual Studio をアップグレードする場合は、必ず CUDA を再インストールしてください。
5. ダークネットのクローンを作成して以下を構築します。
これまでの手順がすべて正常に完了したら、Darknet を複製して構築する必要があります。このステップでは、OpenCV やその他の依存関係を見つけられるように、vcpkg の場所を CMake に伝える必要もあります。
「バッシュ」
cd c:src
git clone https://github.com/hank-ai/darknet.git
CDダークネット
mkdir ビルド
CD ビルド
cmake -DCMAKEBUILDTYPE=リリース -DCMAKETOOLCHAINFILE=C:/src/vcpkg/scripts/buildsystems/vcpkg.cmake ..
msbuild.exe /property:Platform=x64;Configuration=Release /target:Build -maxCpuCount -verbosity:normal -detailedsummary darknet.sln
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
cublas64_12.dll などの CUDA または cuDNN DLL が見つからないことに関するエラーが発生した場合は、CUDA .dll ファイルを Darknet.exe と同じ出力ディレクトリに手動でコピーします。例えば:
「バッシュ」
「C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll」をコピー src-cliRelease
`
(これは例です。実行しているバージョンを確認し、インストールしたものに適したコマンドを実行してください。)
ファイルがコピーされたら、最後の msbuild.exe コマンドを再実行して NSIS インストール パッケージを生成します。
「バッシュ」
msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
`
上級ユーザー:
cmake コマンドの出力は、通常の Visual Studio ソリューション ファイル Darknet.sln であることに注意してください。プロジェクトのビルドに msbuild.exe ではなく Visual Studio GUI を定期的に使用するソフトウェア開発者の場合は、コマンド ラインを無視して Visual Studio に Darknet プロジェクトをロードできます。
これで、実行できるファイル C:srcDarknetbuildsrc-cli releasearknet.exe が完成しました。これを実行してテストします: C:srcDarknetbuildsrc-cli releasearknet.exe のバージョン。
Darknet、ライブラリ、インクルード ファイル、および必要な DLL を正しくインストールするには、最後の手順で構築した NSIS インストール ウィザードを実行します。ビルド ディレクトリ内のファイル darknet-VERSION.exe を参照してください。例えば:
「バッシュ」
darknet-2.0.31-win64.exe
`
NSIS インストール パッケージをインストールすると、次のことが行われます。
1. Darknet という名前のディレクトリ (C:Program FilesDarknet など) を作成します。
2. CLI アプリケーション、darknet.exe およびその他のサンプル アプリをインストールします。
3. OpenCV などの必要なサードパーティの .dll ファイルをインストールします。
4. 別のアプリケーションから darknet.dll を使用するために必要な Darknet .dll、.lib、および .h ファイルをインストールします。
5. テンプレート .cfg ファイルをインストールします。
これで完了です。インストール ウィザードが完了すると、Darknet が C:Program FilesDarknet にインストールされます。これを実行してテストします: C:Program FilesDarknetbindarknet.exe のバージョン。
C:/Program Files/darknet/bin/darknet.exe がない場合は、インストールしたのではなく、ビルドしただけであることを意味します。前のステップで NSIS インストール ウィザードの各パネルを必ず実行してください。
ダークネットの使用
CLI
以下は、Darknet でサポートされるすべてのコマンドの完全なリストではありません。
Darknet CLI に加えて、Darknet/YOLO の代替 CLI を提供する DarkHelp プロジェクト CLI にも注目してください。 DarkHelp CLI には、Darknet では直接利用できないいくつかの高度な機能もあります。 Darknet CLI と DarkHelp CLI は両方とも一緒に使用できますが、相互に排他的ではありません。
以下に示すほとんどのコマンドでは、対応する .names および .cfg ファイルを含む .weights ファイルが必要です。独自のネットワークをトレーニングすることも (強くお勧めします!)、誰かがすでにトレーニングしてインターネット上で無料で利用できるようにしたニューラル ネットワークをダウンロードすることもできます。事前トレーニングされたデータセットの例は次のとおりです。
1. LEGO Gears (画像内のオブジェクトを見つける)
2. Rolodex (画像内のテキストの検索)
3. MSCOCO (標準 80 クラスの物体検出)
実行するコマンドには次のものがあります。
1. 実行可能なコマンドとオプションをいくつかリストします。
「バッシュ」
ダークネットのヘルプ
`
2. バージョンを確認します。
「バッシュ」
ダークネットバージョン
`
3. 画像を使用して予測します。
* V2:
「バッシュ」
ダークネット ディテクタ テストcars.datacars.cfgcars_best.weights image1.jpg
`
* V3:
「バッシュ」
darknet02displayannotatedimagescars.cfg image1.jpg
`
* ダークヘルプ:
「バッシュ」
DarkHelp 車.cfg 車.cfg 車_ベスト.重み image1.jpg
`
4. 出力座標:
* V2:
「バッシュ」
ダークネット ディテクタ テスト Animals.data Animals.cfg Animalsbest.weights -extoutput Dog.jpg
`
* V3:
「バッシュ」
darknet01inference_images 動物 犬.jpg
`
* ダークヘルプ:
「バッシュ」
DarkHelp --json 動物.cfg 動物.名前 動物ベスト.重み 犬.jpg
`
5. ビデオの操作:
* V2:
「バッシュ」
ダークネット ディテクタ デモ Animals.data Animals.cfg Animalsbest.weights -extoutput test.mp4
`
* V3:
「バッシュ」
darknet03display_videos 動物.cfg test.mp4
`
* ダークヘルプ:
「バッシュ」
DarkHelp 動物.cfg 動物.名前 動物ベスト.重みテスト.mp4
`
6. Web カメラからの読み取り:
* V2:
「バッシュ」
ダークネット検出器のデモ Animals.data Animals.cfg Animals_best.weights -c 0
`
* V3:
「バッシュ」
darknet08display_webカメラの動物
`
7. 結果をビデオに保存します。
* V2:
「バッシュ」
ダークネット ディテクタ デモ Animals.data Animals.cfg Animalsbest.weights test.mp4 -outfilename res.avi
`
* V3:
「バッシュ」
darknet05processvideosマルチスレッド動物.cfg動物.名前動物_ベスト.重みテスト.mp4
`
* ダークヘルプ:
「バッシュ」
DarkHelp 動物.cfg 動物.名前 動物ベスト.重みテスト.mp4
`
8.JSON:
* V2:
「バッシュ」
ダークネット ディテクタ デモ Animals.data Animals.cfg Animalbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
`
* V3:
「バッシュ」
darknet06imagestojson 動物 image1.jpg
`
* ダークヘルプ:
「バッシュ」
DarkHelp --json 動物.名前 動物.cfg 動物ベスト.重み image1.jpg
`
9. 特定の GPU で実行:
* V2:
「バッシュ」
ダークネット検出器のデモ Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
10. ニューラル ネットワークの精度を確認するには、次の手順を実行します。
「バッシュ」
ダークネット検出器マップ Driving.data Driving.cfg Driving_best.weights ...
`
`
ID 名 AvgPrecision TP FN FP TN Accuracy ErrorRate Precision Recall Specificity FalsePosRate
-- ---- ------------ ------ ------ ------ ------ -------- --------- --------- ------ ----------- ------------
0 車両 91.2495 32648 3903 5826 65129 0.9095 0.0905 0.8486 0.8932 0.9179 0.0821
オートバイ 1 台 80.4499 2936 513 569 5393 0.8850 0.1150 0.8377 0.8513 0.9046 0.0954
2 自転車 89.0912 570 124 104 3548 0.9475 0.0525 0.8457 0.8213 0.9715 0.0285
3人 76.7937 7072 1727 2574 27523 0.8894 0.1106 0.7332 0.8037 0.9145 0.0855
4 多くの車両 64.3089 1068 509 733 11288 0.9087 0.0913 0.5930 0.6772 0.9390 0.0610
5 青信号 86.8118 1969 239 510 4116 0.8904 0.1096 0.7943 0.8918 0.8898 0.1102
6 黄信号 82.0390 126 38 30 1239 0.9525 0.0475 0.8077 0.7683 0.9764 0.0236
7 赤信号 94.1033 3449 217 451 4643 0.9237 0.0763 0.8844 0.9408 0.9115 0.0885
`
11. mAP@IoU=75 の精度を確認するには:
「バッシュ」
ダークネット検出器マップ Animals.data Animals.cfg Animalsbest.weights -iouthresh 0.75
`
12. アンカーの再計算は DarkMark で行うのが最適です。これは、連続 100 回実行され、計算されたすべてのアンカーから最適なアンカーが選択されるためです。ただし、古いバージョンをダークネットで実行したい場合は、次のようにします。
「バッシュ」
ダークネット検出器 calcanchors 動物.データ -numof_clusters 6 -幅 320 -高さ 256
`
トレーニング
ダークネット/YOLO FAQ の関連セクションへのクイック リンク:
ファイルとディレクトリはどのように設定すればよいですか?
どの設定ファイルを使用すればよいですか?
独自のネットワークをトレーニングする場合はどのコマンドを使用すればよいですか?
注釈を付けてトレーニングする最も簡単な方法は、DarkMark を使用して必要な Darknet ファイルをすべて作成することです。これは間違いなく、新しいニューラル ネットワークをトレーニングする場合に推奨される方法です。
カスタム ネットワークをトレーニングするためにさまざまなファイルを手動でセットアップしたい場合は、次のようにします。
1. プロジェクト用に新しいフォルダーを作成します。
この例では、動物を検出するためにニューラル ネットワークが作成されるため、次のディレクトリが作成されます: ~/nn/animals/。
2. ダークネット設定ファイルをテンプレートとしてコピーします。
たとえば、cfg/yolov4-tiny.cfg を参照してください。これを作成したフォルダーに置きます。この例では、~/nn/animals/animals.cfg が作成されました。
3. Animals.names テキスト ファイルを作成します。
構成ファイルを配置したのと同じフォルダーに、animals.names テキスト ファイルを作成します。この例では、~/nn/animals/animals.names が作成されました。
4. Animals.names ファイルを編集します。
テキストエディタでanimals.namesファイルを編集します。使用したいクラスをリストします。空白行やコメントを含めず、1 行に 1 つのエントリを入力する必要があります。この例では、.names ファイルにはちょうど 4 行が含まれます。
`
犬
猫
鳥
馬
`
5. Animals.data テキスト ファイルを作成します。
同じフォルダーにanimals.dataテキストファイルを作成します。この例では、.data ファイルには次のものが含まれます。
`
クラス = 4
train = /home/ユーザー名/nn/animals/animals_train.txt
有効 = /home/ユーザー名/nn/animals/animals_valid.txt
名前 = /home/ユーザー名/nn/animals/animals.names
バックアップ = /home/ユーザー名/nn/animals
`
6. 画像と注釈用のフォルダーを作成します。
たとえば、これは ~/nn/animals/dataset のようになります。各画像には、その画像の注釈を説明する対応する .txt ファイルが必要です。 .txt 注釈ファイルの形式は非常に特殊です。各注釈には注釈の正確な座標が含まれている必要があるため、これらのファイルを手動で作成することはできません。画像に注釈を付けるには、DarkMark または他の同様のソフトウェアを参照してください。 YOLO アノテーション形式については、Darknet/YOLO FAQ で説明されています。
7. 「train」テキスト ファイルと「valid」テキスト ファイルを作成します。
.data ファイル内に名前を付けた「train」および「valid」テキスト ファイルを作成します。これら 2 つのテキスト ファイルには、ダークネットが mAP% を計算する際のトレーニングと検証に使用する必要があるすべての画像を個別にリストする必要があります。 1 行に 1 つの画像が表示されます。パスとファイル名は相対的または絶対的です。
8. .cfg ファイルを変更します。
※バッチ=64であることを確認してください。
* 細分化に注意してください。ネットワークの規模と GPU で利用可能なメモリの量に応じて、サブディビジョンを増やす必要がある場合があります。使用するのに最適な値は 1 なので、それから始めます。 1 が機能しない場合は、Darknet/YOLO FAQ を参照してください。
注 maxbatches=.... 開始時に使用する適切な値は、2000 x クラス数です。この例では、動物が 4 匹いるため、4 2000 = 8000 となります。つまり、maxbatches=8000 を使用します。
* ステップ =..... これは最大バッチの 80% と 90% に設定する必要があることに注意してください。この例では、maxbatches が 8000 に設定されているため、steps=6400,7200 を使用します。
* width=... および height=.... に注意してください。これらはネットワークの寸法です。 Darknet/YOLO FAQ では、使用する最適なサイズを計算する方法が説明されています。
* 行classes=...のすべてのインスタンスを検索し、.namesファイル内のクラスの数で変更します。この例では、classes=4 を使用します。
各 [yolo] セクションの前の [convolutional] セクションで、行 filters=... のすべてのインスタンスを検索します。使用する値は (numberofclasses + 5) 3 です。この例では、(4 + 5) * 3 = 27 を意味します。したがって、適切な行で filters=27 を使用します。
9. トレーニングを始めましょう!
次のコマンドを実行します。
「バッシュ」
cd ~/nn/動物/
ダークネット ディテクタ -map -dont_show train Animals.data Animals.cfg
`
我慢して。最適な重みは、animals_best.weights として保存されます。また、トレーニングの進行状況は chart.png ファイルを表示することで確認できます。新しいネットワークをトレーニングするときに使用する追加パラメータについては、Darknet/YOLO FAQ を参照してください。
トレーニング中に詳細を確認したい場合は、--verbose パラメーターを追加します。例えば:
「バッシュ」
ダークネット ディテクタ -map -dont_show --verbose train Animals.data Animals.cfg
`
その他のツールとリンク
DarkMark: Darknet/YOLO プロジェクトを管理するには、画像に注釈を付け、注釈を検証し、Darknet でトレーニングするために必要なファイルを生成します。
DarkHelp: Darknet に代わる堅牢な CLI、画像タイルの使用、ビデオ内のオブジェクト追跡、または商用アプリケーションで簡単に使用できる堅牢な C++ API 用。
Darknet/YOLO FAQ: Darknet/YOLO FAQ が質問の答えに役立つかどうかを確認してください。
Stéphane の YouTube チャンネル: Stéphane の YouTube チャンネルで多くのチュートリアルとサンプルビデオをご覧ください。
Darknet/YOLO Discord サーバー: サポートについて質問がある場合、または他の Darknet/YOLO ユーザーとチャットしたい場合は、Darknet/YOLO Discord サーバーに参加してください。
ロードマップ
最終更新日: 2024 年 10 月 30 日:
完了しました
1. トレーニング中に使用される qsort() を std::sort() に置き換えます (その他のあいまいなものは残ります)。
2. check_missing、getchar()、および system() を削除します。
3. C++ コンパイラ (Linux では g++、Windows では VisualStudio) を使用するように Darknet を変換します。
4. Windows ビルドを修正します。
5. Python サポートを修正します。
6. ダークネットライブラリを構築します。
7. 予測のラベルを再度有効にします (「アルファベット」コード)。
8. CUDA/GPU コードを再度有効にします。
9. CUDNN を再度有効にします。
10. CUDNN の半分を再度有効にします。