[更新]:このレポは、私の研究のドライバーコードとして機能します。私は大学を卒業したばかりで、最終的にマスターに応募する前に、研究インターンシップ /フェローシップの役割を探すのに非常に忙しいです。当面の間、問題を調査する時間はありません。ありがとう。
このリポジトリには、Yolov3:An Incrementalの改善、Pytorchを実装するオブジェクト検出器のコードが含まれています。このコードは、ヨロV3の公式コードと、Marvisによる元のコードのPytorchポートに基づいています。このコードの目標の1つは、コードの冗長部分を削除することにより、元のポートを改善することです(公式コードは基本的に完全に吹き飛ばされた深い学習ライブラリであり、ヨロでは使用されていないシーケンスモデルなどが含まれます)。また、コードを最小限に抑え、できる限り文書化しようとしました。
この検出器をゼロから自分で実装する方法を理解したい場合は、PaperSpaceで書いたこの非常に詳細な5部構成のチュートリアルシリーズを実行できます。初心者から中級のPytorchスキルに移行したい人に最適です。
Yolo V3をゼロから実装します
現在のところ、コードには検出モジュールのみが含まれていますが、トレーニングモジュールはすぐに期待する必要があります。 :)
Pytorch 0.3を使用すると、検出器が破損します。
クローン、およびレポディレクトリにcd 。あなたがする必要がある最初のことは、今度はWeightsファイルを取得することです。V3の場合、著者はここでCOCOにのみWeightSFileを提供し、場所
Weightsはレポディレクトリにファイルします。または、入力することもできます(Linuxを使用している場合)
wget https://pjreddie.com/media/files/yolov3.weights
python detect.py --images imgs --det det
--imagesフラグは、画像をロードするためのディレクトリを定義する、または単一の画像ファイル(把握する)を定義し、 --det画像を保存するディレクトリです。バッチサイズ( --bsフラグを使用)などのその他の設定、オブジェクトのしきい値の信頼性は、調べることができるフラグで微調整できます。
python detect.py -h
入力画像の解像度を--resoフラグで変更できます。デフォルトの値は416です。選択した値が何であれ、それは32の倍数で32を超えるものでなければなりません。あなたがそうしないと奇妙なことが起こります。あなたは警告されています。
python detect.py --images imgs --det det --reso 320
このために、ビデオファイルを指定する-videoフラグをwith with with with with video_demo.pyを実行する必要があります。 OpenCVは入力形式としてOpenCVのみを受け入れるため、ビデオファイルは.AVI形式である必要があります。
python video_demo.py --video video.avi
-Hフラグでは、調整可能な設定を見ることができます。
ビデオの推論をスピードアップするために、32ビットフロートの代わりに16ビットの半精度フロートですべての推論を行うVideo_demo_half.pyファイルを使用してみてください。私は大きな改善を見ていませんが、それは古いカード(Tesla K80、Kepler Arch)を持っていることに起因しています。 Fast Float16のサポートを備えたカードのいずれかがある場合は、試してみてください。可能であれば、ベンチマークしてください。
ビデオモジュールと同じですが、カメラからフィードが取得されるため、ビデオファイルを指定する必要はありません。正確には、フィードはOpenCVからカメラ0として認識されるものから取得されます。デフォルトの画像解像度はここで160ですが、 resoフラグで変更できます。
python cam_demo.py
コードを簡単に調整して、YoloのWebサイトで入手可能なさまざまなWeightSfilesを使用できます
注:スケール機能は、リファクタリングを改善するために無効になっています。
Yolo V3は、さまざまなスケールで検出を行います。それぞれが、粗い特徴、細かい粒子の特徴、またはその間のものをキャプチャするかどうかに応じて、異なるサイズのオブジェクトを検出することに代わっています。 --scalesフラグでこれらのスケールを試すことができます。
python detect.py --scales 1,3