Asp+Csv インテリジェント適応ユニバーサルスコア照会システム
今日は、Downcodes のエディターが、CSV 形式のデータをクエリするための ASP に基づいて開発および公開されたクエリ システムを紹介します。気に入っていただければ幸いです。
このソフトウェアは非常にシンプルですが、ほぼすべての Excel の 1 次元および 2 次元データ テーブルのクエリに使用できる、非常に多用途で便利なスコア クエリ システムです。
目的
本システムは、等級や賃金、不動産の公共料金など、修正頻度が低く機密性の低いさまざまな精密な照会に適しています。具体的な利用シーンは以下のとおりです。
1. スコア照会システム:すべての学校、教育機関、公的機関の試験などに適用されます。
2. 給与照会システム:すべての学校、教育機関、公的機関の試験などに適用されます。
3. 不動産料金照会システム:すべての企業、学校、すべての単位に適用されます。
4. 公共料金請求照会システム:地域社会、不動産会社、大学寮などに適しています。
5. 他のクエリ システム: クラス配置クエリ、入学クエリ、証明書クエリ、およびいくつかの変更を加えたその他のクエリ システムなど。
特徴と利点
1. 高い汎用性: ほぼすべての 2 次元テーブルで使用でき、ほとんどのニーズを満たすことができます。
2. シンプルで便利: コードは小さくてシンプルなので、複数テーブルの結合クエリなどのさまざまなシナリオに合わせてすぐに変更できます。
3. 柔軟で使いやすい: いくつかのパラメータを変更するだけでクエリをカスタマイズできます。
4. クイックユース: スコアの投稿は最速で 2 ~ 3 分で解決できます。
制限事項
1. 頻繁な変更には適していない: 成績、給与、水道料金、電気代などは変更せずに一度に公開されることが多いため、このシステムは頻繁に変更が行われるシナリオには適していません。
2. 2 次元テーブルにのみ適しています。一般に、データベースは最初の行と行にヘッダーがあり、それ以降は 1 行に 1 つのデータが含まれる 2 次元構造を採用しています。このシステムは現在、他の構造のデータをサポートしていません。
3. 単一データベースのレコード数の推奨制御: このシステムでは、単一データベースのレコード数に制限はありませんが、単一データベースのレコード数を 30,000 以内に制御することを推奨します。相互に影響を与えることなくデータベースに分割できます。
4. 数式、画像、URL などは当面サポートされません。このシステムでは、数式、画像、URL などは当面サポートされません。
使用方法の提案
FTP 経由で直接アップロードして使用できます。最初はクエリのテストのために直接アップロードすることをお勧めします。
フロントエンドアクセス: http://website/directory/ (mysql データベースのサポートなしで直接使用するためにアップロードするなど)
次に、notepad++ を使用して inc/conn.Asp を開いてパラメータと Web ページ間の対応関係を表示し、次にデフォルトの組み込みデータベースを開いてクエリ結果を比較し、対応関係を表示します。
利用手順
詳細は圧縮パッケージ内のhtml形式ファイルをご覧ください。
例
以下では、Darknet Object Detection Framework と YOLO を例として、Markdown の title タグ要素といくつかのレイアウト調整を使用して、情報をよりすっきりとユーザーが読みやすく表示する方法を示します。
ダークネットオブジェクト検出フレームワークとYOLO
!darknet と hank.ai のロゴ
Darknet は、C、C++、CUDA で書かれたオープンソースのニューラル ネットワーク フレームワークです。
YOLO (You Only Look Once) は、Darknet フレームワークで実行される最先端のリアルタイム物体検出システムです。
論文
論文YOLOv7
紙のスケール - YOLOv4
論文YOLOv4
論文YOLOv3
一般情報
Darknet/YOLO フレームワークは、他のフレームワークや YOLO バージョンよりも高速かつ正確であり続けます。
このフレームワークは完全に無料でオープンソースです。 Darknet/YOLO は、ライセンスや料金なしで、商用製品を含む既存のプロジェクトや製品で使用できます。
2024 年 10 月にリリースされた Darknet V3 (「Jazz」) は、NVIDIA RTX 3090 GPU を使用する場合、LEGO データセット ビデオを最大 1000 FPS で正確に実行できます。つまり、Darknet による各ビデオ フレームの読み取り、サイズ変更、処理にかかる時間は 1 ミリ秒以下です。 /YOLO 秒単位で。
サポートが必要な場合、または 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」に戻ります。
目標は、既存の機能をできるだけ壊さないようにしながら、コード ベースに慣れることです。
CMake を使用して Windows と Linux 上でビルドするための統一されたアプローチが得られるように、ビルド ステップを書き直しました。
C++ コンパイラを使用するようにコード ベースを変換します。
トレーニング中の chart.png が強化されました。
バグ修正とパフォーマンス関連の最適化。主にネットワークのトレーニングに必要な時間の短縮に関連します。
このコード ベースの最後のブランチは、v2 ブランチのバージョン 2.1 です。
開発の次の段階は 2024 年半ばに始まり、2024 年 10 月にリリースされます。 version コマンドは 3.x "JAZZ" を返すようになりました。
これらのコマンドのいずれかを実行する必要がある場合は、いつでも以前の v2 ブランチをチェックアウトできます。サポートが必要な場合は、不足しているコマンドの追加を調査できるようお知らせください。
多くの古いコマンドやメンテナンスされていないコマンドが削除されました。
トレーニングや推論中を含め、多くのパフォーマンスの最適化が行われました。
古い C API は変更されています。元の Darknet API を使用するアプリケーションには若干の変更が必要です: https://darknetcv.ai/api/api.html
新しい Darknet V3 C および C++ API: https://darknetcv.ai/api/api.html
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
*YOLOv2-フル
YOLOv3、2018 年 5 月
* YOLOv3-tiny
*YOLOv3-フル
YOLOv4、2020 年 5 月
* YOLOv4-tiny
*YOLOv4-フル
YOLOv7、2022 年 8 月
* YOLOv7-tiny
*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 メソッド
オプション: 最新の NVIDIA GPU を使用している場合は、この時点で CUDA または CUDA+cuDNN をインストールできます。インストールされている場合、Darknet は GPU を使用して画像 (およびビデオ) 処理を高速化します。
必須: CMake に必要なファイルをすべて再検索させるには、Darknet ビルド ディレクトリから CMakeCache.txt ファイルを削除する必要があります。
必須: ダークネットを忘れずに再構築してください。
Darknet はこれなしでも実行できますが、カスタム ネットワークをトレーニングする場合は 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 を実行していることを前提としています (ただし、必ずしも必須ではありません)。別のディストリビューションを使用している場合は、必要に応じて調整してください。
`
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
`
古いバージョンの CMake を使用している場合は、上記の cmake コマンドを実行する前に CMake をアップグレードする必要があります。 Ubuntu で CMake をアップグレードするには、次のコマンドを使用できます。
`
sudo apt-get パージ cmake
sudo snap install cmake --classic
`
コマンド シェルとして bash を使用している場合は、シェルを再起動する必要がある場合があります。魚を使用する場合は、すぐに新しいパスを選択する必要があります。
上級ユーザー:
DEB ファイルではなく RPM インストール ファイルをビルドする場合は、CM_package.cmake の関連する行を参照してください。 make -j4 package を実行する前に、次の 2 行を編集する必要があります。
`
SET (CPACKGENERATOR "DEB")# SET (CPACKGENERATOR "RPM")
`
Centos や OpenSUSE などのディストリビューションの場合、CM_package.cmake のこれら 2 行を次のように変更する必要があります。
`
SET (CPACKGENERATOR "DEB")SET (CPACKGENERATOR "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 がない場合は、インストールしたのではなく、ビルドしただけであることを意味します。必ず上記のように .deb または .rpm ファイルをインストールしてください。
Windows CMake メソッド
これらの手順は、Windows 11 22H2 がクリーン インストールされていることを前提としています。
通常の cmd.exe コマンド プロンプト ウィンドウを開き、次のコマンドを実行します。
`
winget インストール Git.Git
winget インストール Kitware.CMake
winget インストール nsis.nsis
winget インストール Microsoft.VisualStudio.2022.Community
`
この時点で、C++ アプリケーションのサポートを含めるように Visual Studio インストールを変更する必要があります。
※「Windows スタート」メニューをクリックし、「Visual Studio インストーラー」を実行します。
* 「変更」をクリックします。
* [C++ によるデスクトップ開発] を選択します。
* 右下隅の [変更] をクリックし、[はい] をクリックします。
すべてがダウンロードされてインストールされたら、[Windows スタート] メニューを再度クリックし、VS 2022 の開発者コマンド プロンプトを選択します。これらの手順を実行するのに PowerShell を使用しないでください。問題が発生する可能性があります。
上級ユーザー:
開発者コマンド プロンプトを実行する代わりに、通常のコマンド プロンプトまたは SSH を使用してデバイスに接続し、「Program FilesMicrosoft Visual Studio2022CommunityCommon7ToolsVsDevCmd.bat」を手動で実行できます。
上記の手順に従って開発者コマンド プロンプト (PowerShell ではありません!) を実行したら、次のコマンドを実行して、OpenCV のビルドに使用される Microsoft VCPKG をインストールします。
`
cd c:mkdir c:srccd c:src
git clone https://github.com/microsoft/vcpkgcd vcpkg
bootstrap-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 ファイルを削除する必要があります。
必須: ダークネットを忘れずに再構築してください。
Darknet はこれなしでも実行できますが、カスタム ネットワークをトレーニングする場合は 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 を再インストールしてください。
これまでの手順がすべて正常に完了したら、Darknet のクローンを作成して構築する必要があります。このステップでは、OpenCV やその他の依存関係を見つけられるように、vcpkg の場所を CMake に伝える必要もあります。
`
cd c:src
git clone https://github.com/hank-ai/darknet.gitcd darknetmkdir buildcd build
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 インストール パッケージをインストールすると、次のことが行われます。
Darknet という名前のディレクトリを作成します (例: C:Program FilesDarknet)。
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 がない場合は、インストールしたのではなく、ビルドしただけです。前の手順で説明したように、NSIS インストール ウィザードの各パネルを必ず実行してください。
ダークネットの使用
CLI
以下は、Darknet でサポートされるすべてのコマンドの完全なリストではありません。
Darknet CLI に加えて、Darknet/YOLO の代替 CLI を提供する DarkHelp プロジェクト CLI にも注目してください。 DarkHelp CLI には、Darknet では直接利用できないいくつかの高度な機能もあります。 Darknet CLI と DarkHelp CLI は一緒に使用できますが、相互に排他的ではありません。
以下に示すほとんどのコマンドでは、対応する .names および .cfg ファイルの .weights ファイルを使用する必要があります。独自のネットワークをトレーニングすることも (強くお勧めします!)、他の人がトレーニングした無料で利用できるニューラル ネットワークをインターネットからダウンロードすることもできます。事前トレーニング データセットの例は次のとおりです。
レゴ ギア (画像内のオブジェクトを見つけます)
Rolodex (画像内のテキストを検索)
MSCOCO (標準 80 カテゴリのターゲット検出)
実行するコマンドには次のものがあります。
実行できるいくつかのコマンドとオプションをリストします。
`
ダークネットのヘルプ
`
バージョンを確認します:
`
ダークネットバージョン
`
画像を使用して予測を行う:
`
V2: ダークネット ディテクタ テストcars.datacars.cfgcars_best.weights image1.jpg
V3: darknet02displayannotatedimagescars.cfg image1.jpg
DarkHelp: DarkHelp 車.cfg 車.cfg 車_ベスト.ウェイト image1.jpg
`
出力座標:
`
V2: ダークネット検出器テスト Animals.data Animals.cfg Animalsbest.weights -extoutput Dog.jpg
V3: darknet01inference_images 動物 犬.jpg
DarkHelp: DarkHelp --json Animals.cfg Animals.names Animals_best.weights Dog.jpg
`
ビデオを使用する:
`
V2: ダークネット検出器のデモ Animals.data Animals.cfg Animalsbest.weights -extoutput test.mp4
V3: darknet03display_videos Animals.cfg test.mp4
DarkHelp: DarkHelp Animals.cfg Animals.names Animals_best.weights test.mp4
`
ウェブカメラからの読み取り:
`
V2: ダークネット検出器のデモ Animals.data Animals.cfg Animals_best.weights -c 0
V3: darknet08display_webcam 動物
`
結果をビデオに保存:
`
V2: ダークネット ディテクタ デモ Animals.data Animals.cfg Animalsbest.weights test.mp4 -outfilename res.avi
V3: darknet05processvideosmultithreaded Animals.cfg Animals.name Animals_best.weights test.mp4
DarkHelp: DarkHelp Animals.cfg Animals.names Animals_best.weights test.mp4
`
JSON:
`
V2: ダークネット検出器デモ Animals.data Animals.cfg Animalsbest.weights test50.mp4 -jsonport 8070 -mjpegport 8090 -extoutput
V3: darknet06imagestojson 動物 image1.jpg
DarkHelp: DarkHelp --json Animals.names Animals.cfg Animals_best.weights 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
`
アンカー ポイントの再計算は、DarkMark で 100 回連続して実行され、計算されたすべてのアンカー ポイントから最適なアンカー ポイントが選択されるため、最もよく実行されます。ただし、ダークネットで古いバージョンを実行したい場合は、次のようにします。
`
ダークネット検出器 calcanchors 動物.データ -numof_clusters 6 -幅 320 -高さ 256
`
新しいネットワークをトレーニングします。
`
darknet detecter -map -dont_show train Animals.data Animals.cfg (以下のトレーニング セクションも参照)
`
トレーニング
ダークネット/YOLO FAQ の関連セクションへのクイック リンク:
* ファイルとディレクトリを設定するにはどうすればよいですか?
* どのプロファイルを使用すればよいですか?
* 独自のネットワークをトレーニングする場合はどのコマンドを使用する必要がありますか?
DarkMark を使用して、必要なすべての Darknet ファイルを作成します。これは、注釈を付けてトレーニングする最も簡単な方法です。これは間違いなく、新しいニューラル ネットワークをトレーニングする場合に推奨される方法です。
カスタム ネットワークをトレーニングするためにさまざまなファイルを手動でセットアップする場合は、次の手順を実行します。
1. ファイルを保存する新しいフォルダーを作成します。この例では、動物を検出するためにニューラル ネットワークが作成されるため、次のディレクトリが作成されます: ~/nn/animals/。
2. テンプレートとして使用する Darknet 構成ファイルの 1 つをコピーします。たとえば、cfg/yolov4-tiny.cfg を参照してください。作成したフォルダーに置きます。この例では、~/nn/animals/animals.cfg が作成されました。
3. 構成ファイルを配置したのと同じフォルダーに、animals.names テキスト ファイルを作成します。この場合、~/nn/animals/animals.names になります。
4. テキスト エディタを使用して、animals.names ファイルを編集します。使用するカテゴリをリストします。 1 行に 1 つのエントリを入力し、空白行やコメントを含めないでください。この例では、.names ファイルにはちょうど 4 行が含まれます。
`
犬
猫
鳥
馬
`
5. 同じフォルダーに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. .data ファイル内に名前を付けた「train」および「valid」テキスト ファイルを作成します。これら 2 つのテキスト ファイルには、ダークネットがトレーニングと検証 (mAP% の計算時) に使用する必要があるすべての画像をそれぞれリストする必要があります。 1 行に 1 つの画像が存在します。パスとファイル名は相対パスまたは絶対パスにすることができます。
8. テキスト エディタを使用して .cfg ファイルを変更します。
* バッチ=64 であることを確認してください。
※細分化に注意してください。ネットワークの規模と GPU で利用可能なメモリの量に応じて、サブディビジョンを増やす必要がある場合があります。使用するのに最適な値は 1 なので、それから始めます。 1 がうまくいかない場合は、Darknet/YOLO FAQ を参照してください。
maxbatches=… であることに注意してください。最初は、カテゴリ数の 2000 倍が適切な値です。この例では動物が 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=... を含むすべてのインスタンスを検索します。使用する値は (カテゴリの数 + 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
完了しました
トレーニング中に使用される qsort() を std::sort() に置き換えました (その他のあまり一般的ではないものもまだ存在します)
check_missing、getchar()、system() を削除
C++ コンパイラを使用するように Darknet を変換します (Linux では g++、Windows では Visual Studio)
Windows ビルドを修正する
Python サポートを修正
ダークネットライブラリを構築する
予測のラベルを再度有効にします (「アルファベット」コード)
CUDA/GPU コードを再度有効にする
CUDNNを再度有効にする
CUDNN 半分を再度有効にする
CUDA アーキテクチャをハードコードしないでください
CUDA バージョン情報の改善
AVXを再度有効にする
古いソリューションと Makefile を削除します
OpenCVを非オプションにする
古い pthread ライブラリへの依存関係を削除する
STBの削除
新しい CUDA 検出を使用するように CMakeLists.txt を書き換えます
古い「アルファベット」コードを削除し、データ/ラベル内の 700 以上の画像を削除しました
ソースコードを超えて構築する
バージョン番号の出力が改善されました
トレーニング関連のパフォーマンスの最適化 (継続的なタスク)
推論に関連するパフォーマンスの最適化 (進行中のタスク)
可能な限り値による参照を使用する
.hpp ファイルをクリーンアップする
darknet.hを書き換える
cv::Mat を void にキャストしないでください。代わりに、適切な C++ オブジェクトとして使用してください。
一貫して使用される内部イメージ構造を修正または維持する
ARM ベースの Jetson デバイスのビルドを修正
* NVIDIA はオリジナルの Jetson デバイスをサポートしなくなったため、修正される可能性は低いです (C++17 コンパイラはありません)
* 新しい Jetson Orin デバイスが実行中
V3 で Python API を修正
より優れた Python サポートが必要です (これについて協力したい Python 開発者はいますか?)
短期的な目標
printf() を std::cout に置き換えます (作業中)
古い Zed カメラのサポートを確認してください
コマンドライン解析の改善と一貫性の向上 (作業中)
中期目標
すべての文字コードを削除し、std::string に置き換えます。
警告を非表示にせず、コンパイラ警告をクリーンアップします (作業中)
C のカスタム イメージ構造の代わりに cv::Mat を使用する方が良い (作業中)
古いリスト関数を std::vector または std::list に置き換えます。
1 チャンネルのグレースケール画像のサポートを修正
N > 3 の N チャネル画像のサポートを追加します (例: 深度または熱チャネルが追加された画像)
進行中のコードのクリーンアップ (進行中)
長期的な目標
すべての GPU の CUDA/CUDNN の問題を修正
CUDA+cuDNNコードを書き換える
非 NVIDIA GPU のサポートの追加を検討してください
回転された境界ボックス、または何らかの形式の「角度」サポート
キーポイント・骨格
ヒートマップ (作業中)
セグメンテーション
この例では、Markdown タイトル タグ要素が使用され、一部のコンテンツが論理的に補足され、洗練され、組版が調整されます。たとえば、中国語のシリアル番号、アラビア数字のシリアル番号、改行、その他の書式を追加すると、情報がより整然と表示され、ユーザーが確認しやすくなります。
この記事が皆さんのお役に立てれば幸いです!