ダークネットオブジェクト検出フレームワークとYOLO
ダウンコード小编 公開 BitTorrent トラッカーのリストを更新しました
リスト
これらのリストは毎日自動的に更新されます。最終更新日 2024/10/31:
DNS に問題がありますか?これらのリストには同じトラッカーが含まれていますが、ドメインの代わりに IP アドレスが含まれています。
注意事項
貢献する
接触
ンゴサン [@] ホットメール [.es]
サードパーティツール
サードパーティのオンラインツール
例:
Apache-2.0ライセンス
目次
ダークネットオブジェクト検出フレームワークとYOLO
論文
一般情報
ダークネットバージョン
MSCOCO 事前トレーニング済み重み
建物
Googleコラボ
Linux CMake メソッド
Windows CMake メソッド
ダークネットの使用
CLI
トレーニング
その他のツールとリンク
ロードマップ
短期的な目標
中期目標
長期的な目標
ダークネットオブジェクト検出フレームワークとYOLO
Darknet は、主に C、C++、CUDA で書かれたオープンソースのニューラル ネットワーク フレームワークです。
YOLO (You Only Look Once) は、Darknet フレームワーク内で動作する最先端のリアルタイム物体検出システムです。
Hank.ai がダークネット/YOLO コミュニティをどのようにサポートしているかをお読みください。
ダークネット/YOLO Web サイトを探索してください。
よくある質問への回答については、Darknet/YOLO FAQ を参照してください。
Darknet/YOLO Discord サーバーに参加して、ディスカッションや支援を受けてください。
論文
1.論文YOLOv7
2. 紙のスケール - YOLOv4
3.論文YOLOv4
4.論文YOLOv3
一般情報
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、クラウドおよび Colab サーバー、デスクトップ、ラップトップ、ハイエンド トレーニング リグなどのさまざまなデバイス上で実行されます。 GPU バージョンには CUDA 対応の NVIDIA GPU が必要です。
Darknet/YOLO は、Linux、Windows、および Mac と互換性があることが知られています。詳細については、以下の組み立て説明書を参照してください。
ダークネットバージョン
2013 年から 2017 年にかけて Joseph Redmon によって開発されたオリジナルの Darknet ツールにはバージョン番号がありませんでした。このバージョンは 0.x であると考えます。
その後、2017 年から 2021 年まで Alexey Bochkovskiy によって管理され人気を博した Darknet リポジトリにもバージョン番号がありませんでした。これをバージョン 1.x とみなします。
Hank.ai がスポンサーとなり、2023 年から Stéphane Charette によって保守されている Darknet リポジトリには、version コマンドが初めて含まれています。 2023 年から 2024 年後半まで、バージョン 2.x「OAK」が返されました。
主な目的は、コードベースに慣れながら、既存の機能への混乱を最小限に抑えることでした。
主な変更点:
統合ビルド: Windows と Linux の両方で CMake を使用する単一の一貫したメソッドを確立するためにビルド ステップを書き直しました。
C++ の移行: C++ コンパイラを利用するようにコードベースを変換しました。
チャートの強化: トレーニング中の chart.png の視覚化が改善されました。
バグ修正と最適化: 多数のバグに対処し、主にトレーニング時間の短縮に重点を置いたパフォーマンスの最適化を実装しました。
このコードベースの最後のブランチはバージョン 2.1 で、v2 ブランチにあります。
開発の次の段階は 2024 年半ばに開始され、2024 年 10 月のバージョン 3.x "JAZZ" のリリースで最高潮に達しました。
Darknet V3 (「ジャズ」) の主な改善点:
パフォーマンス: トレーニングと推論の両方でパフォーマンスが大幅に最適化されます。
API の変更: 従来の C API を変更しました。オリジナルの Darknet API を利用するアプリケーションには、若干の調整が必要になります。参照: https://darknetcv.ai/api/api.html
新しい API: 新しい Darknet V3 C および C++ API を導入しました: https://darknetcv.ai/api/api.html
更新された例: src-examples ディレクトリ内に新しいアプリケーションとサンプル コードを追加しました: https://darknetcv.ai/api/files.html
特定のコマンドを実行する必要がある場合は、いつでも前の v2 ブランチに戻すことができます。不足しているコマンドが見つかった場合は、それらを再度組み込む方法を検討できるよう、お知らせください。
Darknet V3 (「Jazz」) キーの削除:
古いコマンド: 多くの古いコマンドやメンテナンスされていないコマンドが削除されました。
MSCOCO 事前トレーニング済み重み
便宜上、YOLO のいくつかの一般的なバージョンが MSCOCO データセットで事前トレーニングされています。このデータセットには 80 のクラスが含まれており、テキスト ファイル cfg/coco.names にあります。
MSCOCO 以外にも、LEGO Gears や Rolodex など、他のさまざまな単純なデータセットや事前トレーニングされた重みが Darknet/YOLO のテストに利用できます。詳細については、Darknet/YOLO FAQ を確認してください。
MSCOCO の事前トレーニングされた重みは、次のリポジトリを含む複数のソースからダウンロードできます。
YOLOv2、2016 年 11 月:
YOLOv2-小さな
YOLOv2-フル
YOLOv3、2018 年 5 月:
YOLOv3-tiny
YOLOv3-フル
YOLOv4、2020 年 5 月:
YOLOv4-tiny
YOLOv4-フル
YOLOv7、2022 年 8 月:
YOLOv7-小さな
YOLOv7-フル
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 用のダークネット ビルド チュートリアル
オプション: 最新の NVIDIA GPU を所有している場合は、この時点で CUDA または CUDA+cuDNN のいずれかをインストールします。インストールされている場合、Darknet は GPU を活用して画像 (およびビデオ) 処理を高速化します。
CMake に必要なファイルをすべて再検出させるには、Darknet ビルド ディレクトリから CMakeCache.txt ファイルを削除する必要があります。
ダークネットを再構築することを忘れないでください。
ダークネットはこれらがなくても機能しますが、カスタム ネットワークをトレーニングする場合は CUDA または CUDA+cuDNN が必要です。
1. CUDA をインストールします: https://developer.nvidia.com/cuda-downloads にアクセスして、CUDA をダウンロードしてインストールします。
2. cuDNN をインストールします。https://developer.nvidia.com/rdp/cudnn-download または https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager- にアクセスします。 cuDNN をダウンロードしてインストールするには、インストールの概要を参照してください。
CUDA をインストールした後、nvcc と nvidia-smi を実行できることを確認します。 PATH 変数の変更が必要になる場合があります。
CUDA または CUDA+cuDNN を後でインストールする場合、または新しい NVIDIA ソフトウェア バージョンにアップグレードする場合:
CMake をアップグレードする: CMake のバージョンが古い場合は、次のコマンドを使用してアップグレードします。
「バッシュ」
sudo apt-get パージ cmake
sudo snap install cmake --classic
`
シェルの再起動: コマンド シェルとして bash を使用している場合は、シェルを再起動します。 Fish を使用する場合、パスは自動的に更新されるはずです。
ダークネットの構築:
「バッシュ」
sudo apt-get install build-essential git libopencv-dev cmake
mkdir ~/srccd ~/src
git clone https://github.com/hank-ai/darknetcd ダークネット
mkdir ビルドcd ビルド
cmake -DCMAKEBUILDTYPE=リリース ..
make -j4
パッケージ
sudo dpkg -i darknet-VERSION.deb
`
上級ユーザー:
RPM インストール: DEB ファイルの代わりに RPM インストール ファイルを作成するには、CM_package.cmake 内の関連する行を変更します。 make -j4 package を実行する前に、次の行を編集します。
`cmake
SET (CPACKGENERATOR "DEB")# SET (CPACKGENERATOR "RPM")
`
CentOS や OpenSUSE などのディストリビューションの場合は、次のように行を調整します。
`cmake
SET (CPACK_GENERATOR "DEB")
SET (CPACK_GENERATOR "RPM")
`
インストール パッケージ: ビルドが完了したら、ディストリビューションのパッケージ マネージャーを使用してパッケージをインストールします。 Debian ベースのシステム (Ubuntu など) の場合:
「バッシュ」
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 がない場合は、Darknet を構築しただけで、インストールしていません。上で説明したように、必ず .deb または .rpm ファイルをインストールしてください。
Windows CMake メソッド
これらの手順は、Windows 11 22H2 の新規インストールを前提としています。
1. 前提条件のインストール: 標準の cmd.exe コマンド プロンプトを開き、次のコマンドを実行します。
「バッシュ」
winget インストール Git.Git
winget インストール Kitware.CMake
winget インストール nsis.nsis
winget インストール Microsoft.VisualStudio.2022.Community
`
2. Visual Studio を変更します。C++ アプリケーションをサポートするように Visual Studio を構成します。
「Windows スタート」メニューをクリックし、「Visual Studio インストーラー」を実行します。
「変更」を選択します。
「C++ によるデスクトップ開発」を選択します。
右下隅の「変更」をクリックし、「はい」をクリックします。
3. 開発者コマンド プロンプト: インストールが完了したら、[Windows スタート] メニューをクリックし、[VS 2022 の開発者コマンド プロンプト] を選択します。問題が発生する可能性があるため、これらの手順では PowerShell を使用しないでください。
上級ユーザー:
開発者コマンド プロンプトを使用する代わりに、通常のコマンド プロンプトを選択するか、SSH 経由で接続して「Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat」を手動で実行することができます。
4. Microsoft VCPKG をインストールします。開発者コマンド プロンプト (PowerShell ではなく) で次のコマンドを実行して、OpenCV のビルドに使用される Microsoft VCPKG をインストールします。
「バッシュ」
CDC:
mkdir c:src
cd 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 を実行して、完全なリストを表示します。
オプション: 最新の 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. ダークネットのクローンを作成して構築する: 前の手順が正常に完了したら、ダークネットのクローンを作成して構築します。この手順では、CMake が OpenCV およびその他の依存関係を見つけるための VCPKG の場所を指定します。
「バッシュ」
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
`
CUDA または cuDNN DLL (例: cublas64_12.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 インストール パッケージをインストールすると、次のことが行われます。
C:Program FilesDarknet のような Darknet という名前のディレクトリを作成します。
CLI アプリケーション (darknet.exe) およびその他のサンプル アプリをインストールします。
OpenCV などの必要なサードパーティの .dll ファイルをインストールします。
別のアプリケーションから darknet.dll を使用するために必要な Darknet .dll、.lib、および .h ファイルをインストールします。
テンプレートの .cfg ファイルをインストールします。
これで完了です。インストール ウィザードが完了すると、Darknet が C:Program FilesDarknet にインストールされます。 C:Program FilesDarknetbindarknet.exe バージョンを実行してテストします。
C:/Program Files/darknet/bin/darknet.exe がない場合、Darknet は構築されるだけで、インストールされません。前のステップの NSIS インストール ウィザードの各パネルを必ず完了してください。
ダークネットの使用
CLI
以下は、Darknet でサポートされるすべてのコマンドの包括的なリストではありません。
Darknet CLI に加えて、Darknet/YOLO の代替 CLI を提供する DarkHelp プロジェクト CLI も覚えておいてください。 DarkHelp CLI には、Darknet では直接アクセスできないさまざまな高度な機能が含まれています。 Darknet CLI と DarkHelp CLI の両方を同時に利用できます。それらは相互に排他的ではありません。
以下のほとんどのコマンドでは、.weights ファイルと、対応する .names および .cfg ファイルが必要です。独自のネットワークをトレーニングするか (強く推奨!)、誰かがオンラインで無料で利用できるようにした事前トレーニング済みのニューラル ネットワークをダウンロードすることができます。事前トレーニングされたデータセットには次のようなものがあります。
LEGO Gears (画像内のオブジェクト検出)
Rolodex (画像内のテキスト検出)
MSCOCO (標準 80 クラスの物体検出)
実行するコマンド:
使用可能なコマンドとオプションのリスト:
「バッシュ」
ダークネットのヘルプ
`
バージョンを確認します。
「バッシュ」
ダークネットバージョン
`
画像を使った予測:
V2:
「バッシュ」
ダークネット ディテクタ テストcars.datacars.cfgcars_best.weights image1.jpg
`
V3:
「バッシュ」
darknet02displayannotatedimagescars.cfg image1.jpg
`
ダークヘルプ:
「バッシュ」
DarkHelp 車.cfg 車.cfg 車_ベスト.重み image1.jpg
`
出力座標:
V2:
「バッシュ」
ダークネット ディテクタ テスト Animals.data Animals.cfg Animalsbest.weights -extoutput Dog.jpg
`
V3:
「バッシュ」
darknet01inference_images 動物 犬.jpg
`
ダークヘルプ:
「バッシュ」
DarkHelp --json 動物.cfg 動物.名前 動物ベスト.重み 犬.jpg
`
ビデオの操作:
V2:
「バッシュ」
ダークネット ディテクタ デモ Animals.data Animals.cfg Animalsbest.weights -extoutput test.mp4
`
V3:
「バッシュ」
darknet03display_videos 動物.cfg test.mp4
`
ダークヘルプ:
「バッシュ」
DarkHelp 動物.cfg 動物.名前 動物ベスト.重みテスト.mp4
`
ウェブカメラからの読み取り:
V2:
「バッシュ」
ダークネット検出器のデモ Animals.data Animals.cfg Animals_best.weights -c 0
`
V3:
「バッシュ」
darknet08display_webカメラの動物
`
結果をビデオに保存する:
V2:
「バッシュ」
ダークネット ディテクタ デモ Animals.data Animals.cfg Animalsbest.weights test.mp4 -outfilename res.avi
`
V3:
「バッシュ」
darknet05processvideosマルチスレッド動物.cfg動物.名前動物_ベスト.重みテスト.mp4
`
ダークヘルプ:
「バッシュ」
DarkHelp 動物.cfg 動物.名前 動物ベスト.重みテスト.mp4
`
JSON:
V2:
「バッシュ」
ダークネット ディテクタ デモ Animals.data Animals.cfg Animalbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
`
V3:
「バッシュ」
darknet06imagestojson 動物 image1.jpg
`
ダークヘルプ:
「バッシュ」
DarkHelp --json 動物.名前 動物.cfg 動物ベスト.重み image1.jpg
`
特定の GPU で実行:
V2:
「バッシュ」
ダークネット検出器のデモ Animals.data Animals.cfg Animals_best.weights -i 1 test.mp4
`
ニューラル ネットワークの精度を確認する:
「バッシュ」
ダークネット検出器マップ 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
`
精度を確認するには mAP@IoU=75:
「バッシュ」
ダークネット検出器マップ Animals.data Animals.cfg Animalsbest.weights -iouthresh 0.75
`
アンカーの再計算: アンカーの再計算は、100 回連続して実行され、計算されたすべてのオプションから最適なアンカーが選択されるため、DarkMark で実行するのが最適です。ただし、古いダークネット方式を使用したい場合は、次のようにします。
「バッシュ」
ダークネット検出器 calcanchors 動物.データ -numof_clusters 6 -幅 320 -高さ 256
`
新しいネットワークをトレーニングする:
「バッシュ」
cd ~/nn/動物/
ダークネット ディテクタ -map -dont_show train Animals.data Animals.cfg
`
(詳細については、以下のトレーニングのセクションを参照してください。)
トレーニング
ダークネット/YOLO FAQ の関連セクションへのクイック リンク:
ファイルとディレクトリのセットアップ: ファイルとディレクトリはどのように設定すればよいですか?
設定ファイル: どの設定ファイルを使用すればよいですか?
トレーニング コマンド: 独自のネットワークをトレーニングする場合はどのコマンドを使用する必要がありますか?
注釈を付けてトレーニングする最も簡単な方法は、DarkMark を使用することです。これにより、必要なすべての Darknet ファイルを作成するプロセスが簡素化されます。新しいニューラル ネットワークをトレーニングするには、DarkMark を使用することを強くお勧めします。
カスタム ネットワーク トレーニング用にファイルを手動でセットアップする場合は、次のようにします。
1. フォルダーの作成: ファイルを保存する新しいフォルダーを作成します。この例では、動物を検出するニューラル ネットワークを作成します。したがって、ディレクトリ ~/nn/animals/ が作成されます。
2. 設定ファイルのコピー: テンプレートとして使用する Darknet 設定ファイルをコピーします。たとえば、cfg/yolov4-tiny.cfg を参照してください。作成したフォルダに置きます。この例では、~/nn/animals/animals.cfg が作成されました。
3. Animals.names の作成: 構成ファイルと同じフォルダーに、animals.names という名前のテキスト ファイルを作成します。この例には ~/nn/animals/animals.names が含まれています。
4. Animals.names を編集する: テキスト エディターを使用して、animals.names ファイルを編集します。使用する予定のクラスをリストします。各クラスは、空白行やコメントを含めずに、個別の行を占有する必要があります。この例では、.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 ファイルの変更: テキスト エディタを使用して .cfg ファイルを変更します。
バッチ=64であることを確認してください。
細分化を観察します。ネットワークの規模と GPU メモリ容量に基づいて、サブディビジョンを増やす必要がある場合があります。理想的な値は 1 なので、そこから始めます。 1 が機能しない場合は、Darknet/YOLO FAQ を参照してください。
maxbatches=.... に注意してください。適切な開始値はクラス数の 2000 倍です。この例では、動物が 4 匹いるため、4 * 2000 = 8000、つまり最大バッチ数 = 8000 となります。
ステップ =..... これを最大バッチの 80% および 90% に設定することに注意してください。この例では、maxbatches を 8000 に設定し、steps=6400,7200 を使用します。
width=... と height=..... これらはネットワークの寸法であることに注意してください。 Darknet/YOLO FAQ では、最適なサイズを決定する方法について説明しています。
出現する行 class=... をすべて検索し、.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
`
その他のツールとリンク
Darknet/YOLO プロジェクトの管理、画像の注釈付け、注釈の検証、Darknet でのトレーニングに必要なファイルの生成については、DarkMark を参照してください。
Darknet に代わる堅牢な CLI、画像タイリング、ビデオ内のオブジェクト追跡、商用アプリケーション向けの堅牢な C++ API を利用するには、DarkHelp を参照してください。
Darknet/YOLO FAQ で質問が解決できるかどうかを確認してください。
Stéphane の YouTube チャンネルで多数のチュートリアルとサンプルビデオをご覧ください。
サポートに関する問い合わせがある場合、または他の 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 の半分を再度有効にしました。
11. CUDA アーキテクチャのハードコーディングを回避しました。
12. CUDA バージョン情報が強化されました。
13. AVX を再度有効にしました。
14. 古いソリューションと Makefile を削除しました。
15. OpenCVを必須にしました。
16. 古い pthread ライブラリへの依存関係を削除しました。
17. STBを取り外しました。
18. 新しい CUDA 検出を組み込むために CMakeLists.txt を書き換えました。
19. 古い「アルファベット」コードを削除し、データ/ラベル内の 700 以上の画像を削除しました。
20. アウトオブソースで構築されています。
21. バージョン番号の出力が改善されました。
22. トレーニングに関連するパフォーマンスの最適化を実装しました (進行中のタスク)。
23. 推論に関連するパフォーマンスの最適化を実装しました (進行中のタスク)。
24. 可能な限り参照渡しを使用します。
25. .hpp ファイルをクリーンアップしました。
26. darknet.h を書き換えました。
27. cv::Mat を void* にキャストすることを回避し、それを適切な C++ オブジェクトとして使用しました。
28. 内部イメージ構造の利用方法の一貫性を修正または確保しました。
29. ARM ベースの Jetson デバイスのビルドを修正しました。
30. NVIDIA がサポートを終了している (C++17 コンパイラーがない) ため、元の Jetson デバイスは修正される可能性は低いです。
31. 新しい Jetson Orin デバイスは機能します。
32. V3 の Python API を修正しました。
短期的な目標:
1. printf() を std::cout (進行中) に置き換えます。
2. 古い zed カメラのサポートを再検討します。
3. コマンド ライン解析の一貫性を改善および強化します (進行中)。
中期目標:
1. すべての char* コードを削除し、std::string に置き換えます。
2. 非表示の警告を削除し、コンパイラの警告をクリーンアップします (進行中)。
3. C のカスタム イメージ構造の代わりに cv::Mat をより有効に活用します (進行中)。
4. 古いリスト機能を std::vector または std::list に置き換えます。
5. 1 チャンネルのグレースケール画像のサポートを修正しました。
6. N > 3 の N チャネル画像 (追加の深さまたは熱チャネルを持つ画像など) のサポートを追加します。
7. 進行中のコードのクリーンアップ (進行中)。
長期的な目標:
1. すべての GPU にわたる CUDA/CUDNN の問題を解決します。
2. CUDA+cuDNN コードを書き換えます。
3. 非 NVIDIA GPU のサポートの追加を検討します。
4. 回転した境界ボックスまたは何らかの形式の「角度」サポートを導入します。
5. キーポイント/スケルトンを組み込みます。
6. ヒートマップを統合します (進行中)。
7. セグメンテーションを実装します。