この投稿では、YOLOv3 (You Only Look Once) を使用してカスタム オブジェクト検出を実装する方法について説明します。YOLO は、高速で正確な 1 段階のオブジェクト検出アルゴリズムです。データセットを準備し、YOLOv3 モデルを構成し、カスタム データセットでトレーニングする方法について説明します。
1. データセットを準備する
YOLOv3 モデルをトレーニングするには、画像とそれに対応するラベル付きデータを含むデータセットが必要です。通常、注釈付きデータには、各画像内のオブジェクトの境界ボックスとクラス ラベルが含まれます。この例では、次の情報を含むファイル (CSV や JSON 形式など) が既にあると想定しています。
annotations = {} # 从 CSV 或 JSON 文件中加载标注数据
2.ダークネットをインストールして構成する
YOLOv3 は、Darknet フレームワークに基づいて開発されています。まず、Darknet をインストールする必要があります。Darknet GitHub ページの指示に従います。
次に、YOLOv3 モデルを構成する必要があります。これには、元のファイルに基づいているが、カスタム データセット用に変更された、yolov3_custom.cfg
というyolov3.cfg
。主な変更点は次のとおりです。
- カテゴリの数を調整する
classes
- アンカーボックスを調整
anchors
- ネットワーク入力サイズなどを調整します。
また、データセット内のすべてのオブジェクト カテゴリの名前を含む という名前のファイルと、トレーニングおよび検証データセットへのパスを含む という名前のファイルobj.names
を作成する必要があります。obj.data
3.トレーニングにYOLOv3を使用する
データセットと構成ファイルを準備したら、YOLOv3 モデルのトレーニングを開始できます。まず、YOLOv3 の事前トレーニング済みの重みをダウンロードする必要があります。ウェイト ファイルは、Darknet Web サイトにあります。
次に、次のコマンドでトレーニング プロセスを開始します。
./darknet detector train cfg/obj.data cfg/yolov3_custom.cfg yolov3.weights
データセットのサイズやハードウェアのパフォーマンスなどの要因によっては、トレーニング プロセスに時間がかかる場合があります。トレーニングが完了すると、yolov3_custom_final.weights
という名前の。
4. オブジェクト検出にトレーニング済みの YOLOv3 モデルを使用する
トレーニングが完了したら、オブジェクト検出に次のコマンドを使用できます。
./darknet detector test cfg/obj.data cfg/yolov3_custom.cfg yolov3_custom_final.weights data/test_image.jpg
すべてが正しければ
通常、画面に検出結果が表示され、同時に、検出されたオブジェクトとその境界ボックスを含むpredictions.jpg
名前の付いた保存されます。
5. モデルのパフォーマンスを評価する
トレーニング後、新しい目に見えないデータでモデルのパフォーマンスを評価する必要があります。この目的のために、精度、再現率、F1 スコア、平均精度 (mAP) などの一般的なオブジェクト検出評価指標を使用できます。
まず、予測を生成するために、テスト データに対してモデルを実行する必要があります。次のコマンドを使用して、画像をバッチ検出できます。
./darknet detector map cfg/obj.data cfg/yolov3_custom.cfg yolov3_custom_final.weights
このコマンドを実行した後、Darknet はテスト セット全体でモデルの mAP を計算します。mAP を計算することで、テスト セット全体でのモデルのパフォーマンスを理解できます。これは、モデルが実際のアプリケーションで直面する可能性のある課題を理解するのに役立ち、モデルを改善するための方向性を提供します。
この記事では、YOLOv3 を使用してカスタム オブジェクト検出を実装する方法について詳しく説明します。データセットを準備し、YOLOv3 モデルを構成し、カスタム データセットでトレーニングする方法について説明しました。また、トレーニング済みの YOLOv3 モデルをオブジェクト検出に使用する方法と、モデルのパフォーマンスを評価する方法についても説明しました。この記事が、深層学習の分野での探索に役立つガイダンスを提供できることを願っています。
この記事では、カスタム オブジェクト検出に YOLOv3 を使用する方法を詳しく説明しました。次に、モデルのパフォーマンスを最適化し、モデルをデプロイするための提案をいくつか追加します。
6. モデルのパフォーマンスを最適化する
実際のアプリケーションでは、プロジェクトの要件に従ってモデルを最適化する必要がある場合があります。以下にいくつかの提案を示します。
-
データ拡張: トレーニング データセットにランダムな変換 (回転、スケーリング、反転など) を適用することで、モデルの一般化能力を高め、新しいデータのパフォーマンスを向上させることができます。
-
ハイパーパラメーターの調整: 学習率、バッチ サイズ、オプティマイザーなどのハイパーパラメーターを調整することで、トレーニング プロセスを最適化し、モデルのパフォーマンスを向上させることができます。
-
モデル構造の調整: プロジェクトの要件に応じて、YOLOv3 のネットワーク構造の調整を試みることができます。たとえば、より単純なタスクの場合、計算効率を高めるために、YOLOv3-tiny などの小さな YOLOv3 モデルを使用してみてください。
-
事前トレーニングされたモデルを使用する: 大規模なデータセット (ImageNet や COCO など) で事前トレーニングされたモデルの使用を試すことができます. 転移学習技術により、モデルのパフォーマンスと収束速度を向上させることができます.
7. モデルをデプロイする
トレーニング済みの YOLOv3 モデルは、デスクトップ コンピューター、組み込みデバイス、モバイル デバイスなど、さまざまなデバイスにデプロイできます。展開モデルに関するいくつかの提案を次に示します。
-
モデルの圧縮と高速化: モデルの圧縮と高速化の手法 (モデルの枝刈り、量子化、蒸留など) を使用して、モデルのサイズを縮小し、推論時間を短縮できます。これは、計算能力が限られているデバイスにモデルを展開する場合に役立ちます。
-
ディープ ラーニング展開フレームワークを使用する: TensorRT、OpenVINO、TensorFlow Lite などのディープ ラーニング展開フレームワークを使用して、モデルのパフォーマンスを最適化できます。これらのフレームワークは通常、推論速度を向上させ、メモリとコンピューティング リソースのフットプリントを削減します。
-
クラウド展開: デバイス リソースが限られている場合、モデルをクラウド サーバーに展開し、API を介してアクセスできます。これにより、クラウドサーバーの演算能力をフルに活用し、デバイス側の負担を軽減することができます。
これらの提案が、カスタム YOLOv3 モデルの最適化とデプロイに役立つことを願っています。深層学習の分野での探求を頑張ってください!