ガトリング
ガトリングとは何ですか?
Gatling は、パフォーマンスと信頼性を重視して設計された強力なオープンソースの負荷テスト ツールです。実際のユーザーの行動をシミュレートし、ストレス下でのアプリケーションのパフォーマンスを測定するための包括的なソリューションを提供します。
モチベーション
ガトリングを使用すると、次のことが可能になります。
1. アプリケーションの制限を理解する: ユーザーに影響を与える前に、ボトルネックとパフォーマンスの問題を特定します。
2. ユーザー エクスペリエンスの向上: アプリケーションがピーク トラフィックを処理し、すべてのユーザーにスムーズなパフォーマンスを提供できるようにします。
3. 貴重な洞察を得る: テスト結果を分析して、アプリケーションのパフォーマンス、スケーラビリティ、および信頼性を最適化します。
質問、ヘルプ?
ヘルプとサポートについては、次のことができます。
1. 公式ドキュメントを参照してください。詳細なチュートリアル、ガイド、API リファレンスを調べてください。
2. Gatling コミュニティ フォーラムに参加する: 他のユーザーとつながり、経験を共有し、アドバイスを求めます。
3. 問題を報告する: バグが発生した場合は、公式の Gatling GitHub リポジトリで問題を提起してください。
パートナー
Gatling はさまざまなパートナーと協力して、包括的な負荷テスト ソリューションを提供します。専門的な統合とサポート サービスについては、パートナー エコシステムを探索してください。
ダークネットオブジェクト検出フレームワークとYOLO
Darknet は、C、C++、CUDA で書かれたオープンソースのニューラル ネットワーク フレームワークで、その速度と効率性で有名です。
YOLO (You Only Look Once) は、Darknet フレームワークとシームレスに統合される最先端のリアルタイム物体検出システムです。
ダークネット/YOLO エコシステムを探索します。
1. Hank.ai の貢献: Hank.ai がどのようにダークネット/YOLO コミュニティに積極的に貢献しているかをご覧ください。
2. 公式 Web サイト: Darknet/YOLO Web サイトの最新情報、リソース、ニュースにアクセスします。
3. 包括的な FAQ: ダークネット/YOLO に関するよくある質問への回答を見つけます。
4. Discord サーバーに参加します: 他の Darknet/YOLO 愛好家とつながり、アイデアについて話し合ったり、サポートを受けたりできます。
論文
1. YOLOv7: YOLOv7 の最新の進歩を探索します。
2. Scaled-YOLOv4: Scaled-YOLOv4 アーキテクチャとそのパフォーマンス強化について詳しく説明します。
3. YOLOv4: YOLOv4 の主要な機能と革新性を理解します。
4. YOLOv3: YOLO の起源と YOLOv3 の基本原則について学びます。
一般情報
Darknet/YOLO フレームワークは、速度と精度の両方の点で他のフレームワークや YOLO バージョンよりも常に優れています。
これは完全に無料でオープンソースであるため、ライセンスの制限を受けることなくプロジェクトや製品に統合できます。
2024 年 10 月にリリースされた Darknet V3「Jazz」は、NVIDIA RTX 3090 GPU を使用して最大 1000 FPS で LEGO データセット ビデオを処理するという驚異的なパフォーマンスを実現しました。
ダークネットバージョン
1. バージョン 0.x: 2013 年から 2017 年にかけて Joseph Redmon によって開発されたオリジナルのダークネット ツール。
2. バージョン 1.x: 2017 年から 2021 年にかけて Alexey Bochkovskiy によって管理された人気の Darknet リポジトリ。
3. バージョン 2.x "OAK": Hank.ai が後援し、2023 年から Stéphane Charette によって保守されるダークネット リポジトリ。バージョン番号が導入され、次のような大幅な機能強化が行われました。
- Windows および Linux 用の CMake を使用した統合ビルド プロセス。
- C++ コンパイラへのコードベースの変換。
- トレーニング中の chart.png の視覚化が改善されました。
- バグ修正とパフォーマンスの最適化。
4. バージョン 2.1: バージョン 2.x の最後のブランチ。v2 ブランチで使用できます。
5. バージョン 3.x "JAZZ": 2024 年 10 月にリリースされた最新バージョン。以下の機能が含まれます。
- 従来のコマンドとメンテナンスされていないコマンドを削除しました。
- トレーニングと推論の両方に対する広範なパフォーマンスの最適化。
- レガシー C API を変更しました。
- 新しい Darknet V3 C および C++ API。
- src-examples のサンプル コードとアプリケーションを拡張しました。
MSCOCO 事前トレーニング済み重み
いくつかの人気のある YOLO バージョンは MSCOCO データセットで事前トレーニングされており、cfg/coco.names ファイルにリストされている 80 のオブジェクト クラスを提供します。
次のような他のデータセットと事前トレーニングされた重みをテストに使用できます。
レゴの歯車
ロロデックス
このリポジトリを含むさまざまな場所から 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 事前トレーニング済み重みを使用した例:
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 は主にテスト用であることに注意してください。
建物
Darknet には C++17 以降、OpenCV が必要で、ビルド自動化に CMake を使用します。
重要な注意: これらの手順は、2023 年 8 月以降に Darknet を構築するために更新されています。古いチュートリアルに従って問題が発生した場合は、この README で最新のビルド手順を参照してください。
Googleコラボ
以下の Linux の手順に従ってください。トレーニングなどの特定のタスクについては、colab サブディレクトリ内の Jupyter ノートブックを探索します。
Linux CMake メソッド
1. 必要な依存関係をインストールします。
- sudo apt-get install build-essential git libopencv-dev cmake
2. ダークネット リポジトリのクローンを作成します。
- mkdir ~/srccd ~/src git clone https://github.com/hank-ai/darknet
3. ビルド ディレクトリを作成します。
- cd darknet mkdir buildcd build
4. ダークネットを構成して構築します。
- cmake -DCMAKEBUILDTYPE=リリース ..
- make -j4 パッケージ
5. .deb パッケージをインストールします。
- sudo dpkg -i darknet-VERSION.deb
6. インストールを確認します。
- ダークネットバージョン
オプション: GPU アクセラレーションのために CUDA または CUDA+cuDNN をインストールします。
1. CUDA をダウンロードしてインストールします。
- https://developer.nvidia.com/cuda-downloads
2. cuDNN をダウンロードしてインストールします。
- https://developer.nvidia.com/rdp/cudnn-download
- https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#cudnn-package-manager-installation-overview
3. CUDA のインストールを確認します。
-nvcc
- nvidia-smi
4. ダークネットを再構築します。
- cmake -DCMAKEBUILDTYPE=リリース ..
- make -j4 パッケージ
5. 更新された .deb パッケージをインストールします。
- sudo dpkg -i darknet-VERSION.deb
Windows CMake メソッド
1. 必要な依存関係をインストールします。
- winget インストール Git.Git
- winget インストール Kitware.CMake
- winget インストール nsis.nsis
- winget インストール Microsoft.VisualStudio.2022.Community
2. Visual Studio のインストールを変更します。
- 「Visual Studio インストーラー」を開きます。
- 「変更」を選択します。
- 「C++ によるデスクトップ開発」を選択します。
- 「変更」をクリックし、「はい」をクリックします。
3. Microsoft VCPKG をインストールします。
- VS 2022 の開発者コマンド プロンプトを開きます (PowerShell ではありません)。
- 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
4. ダークネット リポジトリのクローンを作成します。
- cd c:src git clone https://github.com/hank-ai/darknet.gitcd darknet
5. ビルド ディレクトリを作成します。
- mkdir buildcd ビルド
6. ダークネットを構成して構築します。
- 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
7. 必要に応じて CUDA DLL をコピーします。
- CUDA DLL の欠落エラーが発生した場合は、出力ディレクトリにコピーします。
- 「C:Program FilesNVIDIA GPU Computing ToolkitCUDAv12.2bin*.dll」をコピー src-cliRelease
8. msbuild を再実行して、NSIS インストール パッケージを生成します。
- msbuild.exe /property:Platform=x64;Configuration=Release PACKAGE.vcxproj
9. NSIS インストール ウィザードを実行します。
- darknet-VERSION.exe
10. インストールを確認します。
- C:Program FilesDarknetbindarknet.exe のバージョン
オプション: GPU アクセラレーションのために CUDA または CUDA+cuDNN をインストールします。
1. CUDA をダウンロードしてインストールします。
- https://developer.nvidia.com/cuda-downloads
2. cuDNN をダウンロードしてインストールします。
- https://developer.nvidia.com/rdp/cudnn-download
- https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#download-windows
3. cuDNN を解凍し、ディレクトリをコピーします。
- C:/プログラム ファイル/NVIDIA GPU Computing Toolkit/CUDA/[バージョン]
4. ダークネットを再構築します。
- CUDA をインストールした後、手順 6 ~ 8 を繰り返します。
ダークネットの使用
CLI
コマンド:
ダークネットのヘルプ
ダークネットバージョン
画像予測:
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 ...
ダークネット検出器マップ Animals.data Animals.cfg Animalsbest.weights -iouthresh 0.75
アンカー:
ダークネット検出器 calcanchors 動物.データ -numof_clusters 6 -幅 320 -高さ 256
トレーニング
DarkMark: 注釈とトレーニングに DarkMark を利用します。これは、新しいニューラル ネットワークをトレーニングする場合に推奨されるアプローチです。
手動セットアップ:
1. プロジェクト ディレクトリを作成します (例: ~/nn/animals/)。
2. 構成ファイルをコピーします: cfg/yolov4-tiny.cfg
3. Animals.names ファイルを作成します。次のようにクラスをリストします (1 行に 1 つ)。
- 犬
- 猫
- 鳥
- 馬
4. Animals.data ファイルを作成します。
- クラス = 4
- train = /home/ユーザー名/nn/animals/animals_train.txt
- 有効 = /home/ユーザー名/nn/animals/animals_valid.txt
- 名前 = /home/ユーザー名/nn/animals/animals.names
- バックアップ = /home/ユーザー名/nn/animals
5. データセット フォルダーを作成します。画像と対応する注釈ファイル (.txt) を YOLO 形式で保存します。
6. Animalstrain.txt および Animalsvalid.txt を作成します: トレーニングと検証用の画像をリストします。
7. Animals.cfg を変更します。
- バッチ = 64
- サブディビジョン = 1
- max_batches = 8000 (4 クラス * 2000)
- ステップ = 6400,7200
- 幅 = ...
- 身長 = ...
- クラス = 4
- フィルター値を更新します (例: (4 + 5) * 3 = 27)。
8. トレーニングを開始します: cd ~/nn/animals/ darknet detecter -map -dont_show train Animals.data Animals.cfg
トレーニングパラメータ:
詳細な出力の場合は --verbose
その他のツールとリンク
DarkMark: ダークネット用のプロジェクト管理、画像注釈、およびファイル生成。
DarkHelp: 代替 CLI、画像タイリング、オブジェクト追跡、および堅牢な C++ API。
ダークネット/YOLO FAQ: よくある質問のための広範なリソース。
Stéphane の YouTube チャンネル: チュートリアルとサンプルビデオ。
Darknet/YOLO Discord サーバー: コミュニティのサポートとディスカッション。
ロードマップ
完了:
トレーニング中の qsort() の std::sort()
check_missing、getchar()、system() の削除
C++ コンパイラのサポート (Linux では g++、Windows では VisualStudio)
Windows ビルド修正
Python サポートの修正
ダークネットライブラリのビルド
予測のラベル (「アルファベット」コード)
CUDA/GPUコードを再度有効にする
CUDNNを再度有効にする
CUDNN を半分再有効化
非ハードコーディングの CUDA アーキテクチャ
CUDAバージョン情報の改善
AVX を再度有効にする
古いソリューションと Makefile の削除
オプションではない依存関係としての OpenCV
古い pthread ライブラリの依存関係の削除
STBの取り外し
新しい CUDA 検出のための CMakeLists.txt の書き換え
「アルファベット」コードとデータ/ラベル画像の削除
アウトオブソースビルド
強化されたバージョン番号出力
トレーニングと推論のパフォーマンスの最適化
可能な場合は参照渡し
クリーンアップされた .hpp ファイル
darknet.hを書き換えた
void* キャストの代わりに cv::Mat を使用する
内部イメージ構造の使用法を修正
ARM ベースの Jetson デバイスのビルド修正
V3 での Python API の修正
短期的な目標:
printf() の std::cout
Zed カメラのサポート
コマンドライン解析の改善
中期目標:
std::string を優先して char* コードを削除
コンパイラ警告のクリーンアップ
cv::Mat の使用方法の改善
古いリスト機能の std::vector または std::list への置き換え
1チャンネルのグレースケール画像のサポート
N チャネル画像のサポート (N > 3)
進行中のコードのクリーンアップ
長期的な目標:
すべての GPU に対する CUDA/CUDNN の修正
CUDA+cuDNNコード書き換え
非 NVIDIA GPU のサポート
回転された境界ボックスと角度のサポート
キーポイントとスケルトン
ヒートマップ
セグメンテーション