深層学習に基づく高精度6カテゴリー外航船舶検知・認識システム(PyTorch+Pyside6+YOLOv5モデル)

要約: 深層学習に基づく高精度の 6 クラス外航船舶検出および認識システムを使用して、外航船舶ターゲット (ばら積み貨物船、コンテナ船、漁船、一般貨物船) を日常的に検出および位置特定することができます。生命(一般貨物船)、鉱石運搬船(鉱石運搬船)、客船(客船))において、ディープラーニングアルゴリズムを活用することで、写真、ビデオ、カメラなどのターゲット検出・認識を実現し、結果の視覚化と画像またはビデオの検出結果のエクスポート。このシステムは、YOLOv5 ターゲット検出モデルのトレーニング データ セットを使用し、Pysdie6 ライブラリを使用してページ表示システムを構築し、重みモデルの出力として ONNX、PT、およびその他のモデルをサポートします。本システムがサポートする機能としては、学習モデルのインポートと初期化、信頼度スコアとIOU閾値の調整、画像アップロード、検出、可視化結果表示、結果エクスポート、終了検出、ビデオアップロード、検出、可視化結果表示、結果が含まれます。検出のエクスポートと終了、カメラのアップロード、検出、視覚的結果の表示と検出の終了、検出されたターゲットのリスト、位置情報、前方推論時間。また、外航船舶探知システムは、元画像と探知結果画像の同時表示、元動画と探知結果動画の同時表示にも対応しています。このブログ投稿では、初心者が参照するのに適した完全な Python コードと使用方法のチュートリアルを提供します。完全なコード リソース ファイルについては、投稿の最後にあるダウンロード リンクにアクセスしてください。
ここに画像の説明を挿入

基本的な紹介

近年、機械学習とディープラーニングが大きく進歩し、ディープラーニング手法は検出精度や検出速度の点で従来の手法に比べて優れた性能を示しています。YOLOv5 は、一段階ターゲット検出アルゴリズム YOLO の第 5 世代です。実験によると、速度と精度の点で大幅に向上しています。オープン ソース コードは、https://github.com/ultralytics/yolov5 で見つけることができます。 。したがって、このブログ投稿では、YOLOv5 検出アルゴリズムを使用して高精度の 6 カテゴリーの外航船舶検出モデルを実現し、その後、Pyside6 ライブラリとのインターフェイス システムを作成して、ターゲットの検出と認識ページの開発を完了します。YOLO シリーズのアルゴリズムの最新の進歩には、YOLOv6、YOLOv7、YOLOv8 などのアルゴリズムがあることに気付きました。このシステムの検出アルゴリズムを最新のアルゴリズムに置き換えるコードも後でリリースされる予定です。コレクションに注目してください。

環境構築

(1) 完全なファイルをコンピューターにダウンロードし、cmd を使用してファイル ディレクトリを開きます。
(2) Conda を使用して環境 (Anacodna) を作成し、conda create -n yolo5 python=3.8 を実行してから、torch と torchvision をインストールします (pip install)松明1.10.0+cu113 トーチビジョン0.11.0+cu113 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple) ここで、-i https://pypi.tuna .tsinghua.edu.cn/simple は清華ソースの使用を表します。このコマンドには、nvidia-smi >=11.3 で表示される CUDA バージョンが必要です。最後に、pip install -r required.txt -i https: を使用して残りの依存パッケージをインストールします。 //pypi.tuna.tsinghua.edu.cn/simple
ここに画像の説明を挿入
ここに画像の説明を挿入

(3) Pyside6 ライブラリをインストール pip install pyside6==6.3 -i https://pypi.tuna.tsinghua.edu.cn/simple
ここに画像の説明を挿入

(4) Windows システムでの pycocotools ライブラリのインストールの場合: pip install pycocotools-windows -i https://pypi.tuna.tsinghua.edu.cn/simple

インターフェースと機能表示

このブログ投稿で設計されたソフトウェア インターフェイスは次のとおりです。全体的なインターフェイスはシンプルでエレガントです。一般的な機能には、トレーニング モデルのインポートと初期化、信頼スコアと IOU しきい値の調整、画像のアップロード、検出、視覚的な結果の表示、結果のエクスポートと終了が含まれます検出、ビデオのアップロード、検出、結果の視覚的表示、結果のエクスポートと検出の終了、検出されたターゲットのリスト、位置情報、前方推論時間。気に入っていただければ幸いです。初期インターフェイスは次のとおりです。
ここに画像の説明を挿入

モデルの選択と初期化

ユーザーはモデルの重み選択ボタンをクリックしてトレーニングされたモデルの重みをアップロードできます。トレーニングの重みの形式は .pt、.onnx、および .onnx です。エンジンなどを選択し、モデル重み初期化ボタンをクリックすると、選択したモデル初期化情報の設定が実現されます。
ここに画像の説明を挿入
ここに画像の説明を挿入

信頼スコアと IOU の変更

[信頼性] または [IOU] の下の入力ボックスの値を変更すると、スライダーの進行状況が同期的に変更されます。同時に、スライダーの進行状況の値を変更すると、入力ボックスの値も同期的に変更できます。つまり、[信頼性] または [IOU] の値の変更も同期して行われます。モデル内の設定と同期され、検出信頼度のしきい値と IOU のしきい値が変更されます。

画像の選択、検出、エクスポート

ユーザーは、「画像の選択」ボタンをクリックして、検出と認識のために単一の画像をアップロードできます。
ここに画像の説明を挿入

画像検出ボタンをクリックすると、入力画像のターゲット検出機能が完了し、経過時間の欄に検出時間が出力され、ターゲット数量の欄に検出されたターゲットの数が出力されます。ドロップダウン ボックスで検出されたターゲット。位置のラベル値の変更 (つまり、xmin、ymin、xmax、ymax) に対応します。
ここに画像の説明を挿入

次に、検出結果表示ボタンをクリックすると、システムの左下に入力画像の検出結果が表示され、画像内の認識対象のカテゴリ、位置、信頼度情報が表示されます。
ここに画像の説明を挿入

画像検出結果エクスポートボタンをクリックして検出画像をエクスポートし、保存バーに保存画像名とサフィックスを入力して検出結果画像を保存します。
ここに画像の説明を挿入

[画像検出の終了] ボタンをクリックしてシステム インターフェイスの更新を完了し、すべての出力情報をクリアしてから、[画像の選択] または [ビデオの選択] ボタンをクリックして画像またはビデオをアップロードします。

ビデオの選択、検出、エクスポート

ユーザーは [ビデオの選択] ボタンをクリックして、検出と認識のためにビデオをアップロードすると、システムはビデオの最初のフレームをシステム インターフェイスの左上に入力して表示します。
ここに画像の説明を挿入

次に、ビデオ検出ボタンをクリックして、入力ビデオのターゲット検出機能を完了すると、システムは経過時間の列に検出時間を出力し、ターゲット数量の列に検出されたターゲットの数を出力します。ドロップダウン ボックス内の検出されたターゲット。ターゲットの位置のラベル値の変更 (つまり、xmin、ymin、xmax、および ymax) に対応します。
ここに画像の説明を挿入

入力ビデオを一時停止するには、[ビデオ検出の一時停止] ボタンをクリックします。このとき、ボタンはビデオ検出を続行するように変わります。入力ビデオ フレームとフレーム検出結果はシステム インターフェイスに残ります。ドロップダウン ターゲット ボックスをクリックして選択できます。検出されたターゲットの座標位置情報を取得し、ビデオ検出続行ボタンをクリックして入力ビデオの検出を実現します。
ビデオ検出結果のエクスポートボタンをクリックして検出されたビデオをエクスポートし、保存バーに保存された画像の名前とサフィックスを入力して検出結果ビデオを保存します。
ここに画像の説明を挿入

[ビデオ検出の終了] ボタンをクリックしてシステム インターフェイスの更新を完了し、すべての出力情報をクリアしてから、[画像の選択] または [ビデオの選択] ボタンをクリックして画像またはビデオをアップロードします。

カメラの開始、検出、終了

ユーザーは、「カメラを開く」ボタンをクリックしてカメラデバイスを開き、検出と識別を行うことができます。その後、システムはカメラ画像をシステムインターフェースの左上に入力して表示します。
ここに画像の説明を挿入

次に、カメラ検出ボタンをクリックして入力カメラのターゲット検出機能を完了すると、システムは経過時間の列に検出時間を出力し、ターゲット数量の列に検出されたターゲットの数を出力します。ドロップダウン ボックスで、ターゲットの位置のラベル値の変更 (つまり、xmin、ymin、xmax、および ymax) に対応する、検出されたターゲットを選択します。
ここに画像の説明を挿入

[ビデオ検出の終了] ボタンをクリックしてシステム インターフェイスの更新を完了し、すべての出力情報をクリアしてから、[画像の選択] ボタン、または [ビデオの選択] または [カメラを開く] ボタンをクリックして画像、ビデオをアップロードするか、カメラを開きます。

アルゴリズム原理の紹介

本システムは、ディープラーニングによる一段階ターゲット検出アルゴリズムであるYOLOv5を採用しており、YOLOv3やYOLOv4と比べて検出精度と速度が大幅に向上しています。YOLOv5 アルゴリズムの中心となるアイデアは、オブジェクトの中心点の座標を直接予測することでアンカー ボックスを置き換え、ターゲット検出問題を回帰問題に変換することです。さらに、YOLOv5ではSPP(Spatial Pyramid Pooling)の特徴抽出手法を採用しており、計算量を増やすことなくマルチスケールの特徴を効果的に抽出し、検出性能を向上させることができます。YOLOv5s モデルの全体構造を次の図に示します。
ここに画像の説明を挿入

YOLOv5 ネットワーク構造は、入力、バックボーン、ネック、予測で構成されます。YOLOv5 の入力部分はネットワークの入力端であり、モザイク データ拡張手法を使用して入力データをランダムにクロップしてからスプライシングします。バックボーンは、特徴を抽出する YOLOv5 のネットワーク部分であり、特徴抽出能力はネットワーク全体のパフォーマンスに直接影響します。特徴抽出段階では、YOLOv5 は CSPNet (Cross Stage Partial Network) 構造を使用します。これは、入力特徴マップを 2 つの部分に分割し、1 つの部分は一連の畳み込み層を通じて処理され、もう 1 つの部分は直接ダウンサンプリングされ、最後に2つの部分のフィーチャーマップを融合させます。この設計により、ネットワークの非線形表現力が強化され、ターゲット検出タスクにおいて複雑な背景や多様なオブジェクトをより適切に処理できるようになります。ネックステージでは、連続畳み込みカーネル C3 構造ブロックを使用して特徴マップが融合されます。予測ステージでは、モデルは結果の特徴マップを使用して、ターゲットの中心座標とサイズ情報を予測します。ブロガーは、YOLOv5 が高精度でターゲットを分類して位置を特定できる、ターゲット検出用の高性能ソリューションであると感じています。もちろん、YOLOv6、YOLOv7、YOLOv8 およびその他のアルゴリズムは常に提案および改良されており、フォローアップ ブロガーもこれらのアルゴリズムをこのシステムに統合する予定ですので、ご期待ください。

データセットの紹介

このシステムで使用される 6 種類の外航船データセットは、ばら積み貨物船、コンテナ船、漁船、一般貨物船、鉱石運搬船、旅客船(客船)と手動でマークされています。これら 6 つのカテゴリ、データセットには合計があります。 7000枚の写真。このデータセットのカテゴリには多数の回転とさまざまな照明条件があり、より堅牢な検出モデルをトレーニングするのに役立ちます。この論文で実験した外洋船舶探知データセットには、訓練セットに 5601 枚の画像、検証セットに 1399 枚の画像が含まれており、選択されたデータの一部とサンプルデータセットの一部を下図に示します。YOLOv5 アルゴリズムには入力画像のサイズに制限があるため、すべての画像を同じサイズに調整する必要があります。検出精度に影響を与えずに画像の歪みを可能な限り減らすために、すべての画像のサイズを 640x640 に変更し、元のアスペクト比を維持します。さらに、モデルの一般化能力と堅牢性を強化するために、ランダムな回転、スケーリング、トリミング、色変換などを含むデータ拡張手法も使用して、データセットを拡張し、過剰適合のリスクを軽減します。
ここに画像の説明を挿入

キーコード解析

このシステムの深層学習モデルは PyTorch を使用して実装されており、ターゲット検出は YOLOv5 アルゴリズムに基づいています。トレーニング フェーズでは、事前トレーニングされたモデルをトレーニングの初期モデルとして使用し、複数回の反復を通じてネットワーク パラメーターを最適化して、より優れた検出パフォーマンスを実現しました。トレーニング中に、学習率の減衰やデータ拡張などの手法を採用して、モデルの汎化能力と堅牢性を強化します。
テスト段階では、トレーニングされたモデルを使用して新しい画像とビデオを検出しました。閾値を設定することで、その閾値よりも信頼度が低い検出枠が除外され、最終的に検出結果が得られます。同時に、その後の分析や応用のために、検出結果を画像またはビデオ形式で保存することもできます。このシステムは YOLOv5 アルゴリズムに基づいており、PyTorch を使用して実装されています。コードで使用される主なライブラリには、PyTorch、NumPy、OpenCV、PyQt などが含まれます。
ここに画像の説明を挿入
ここに画像の説明を挿入

Pyside6 インターフェース設計

Pyside6 は、Python 言語用の GUI プログラミング ソリューションの 1 つで、Python プログラム用の GUI アプリケーションを迅速に作成できます。このブログ投稿では、Pyside6 ライブラリを使用してグラフィカル インターフェイスを作成し、ユーザーに使いやすい対話型インターフェイスを提供し、ユーザーがターゲット検出用の写真やビデオを選択できるようにします。
Qt Designer を使用してグラフィカル インターフェイスを設計し、Pyside6 を使用して設計された UI ファイルを Python コードに変換します。グラフィカル インターフェイスには、ラベル、ボタン、テキスト ボックス、複数選択ボックスなどの複数の UI コントロールが含まれています。Pyside6 のシグナル スロット メカニズムを通じて、UI コントロールとプログラム ロジック コードを相互に接続できます。

実験結果と分析

実験結果と分析セクションでは、適合率や再現率などの指標を使用してモデルのパフォーマンスを評価し、損失曲線や PR 曲線を通じてトレーニング プロセスを分析します。訓練フェーズでは、先ほど紹介した6種類の外航船のデータセットを訓練に使用し、データセットの訓練にはYOLOv5アルゴリズムを使用し、合計300エポックの訓練を行いました。トレーニング プロセス中に、テンソルボードを使用してトレーニング セットと検証セット上のモデルの損失曲線を記録しました。以下の図からわかるように、トレーニングの数が増加するにつれて、モデルのトレーニング損失と検証損失が徐々に減少し、モデルがより正確な特徴を学習し続けていることがわかります。トレーニング後、データセットの検証セットでモデルを評価し、次の結果が得られました。
ここに画像の説明を挿入

以下の図は、検証セットでトレーニングされた YOLOv5 モデルの PR 曲線を示しており、このモデルが高い再現率と適合率を達成しており、全体的なパフォーマンスが良好であることがわかります。
ここに画像の説明を挿入

以下の図は、YOLOv5 モデルを使用して 6 種類の船舶データセットをトレーニングした場合の、このブログ投稿のモザイク データ拡張イメージを示しています。
ここに画像の説明を挿入
ここに画像の説明を挿入

要約すると、このブログ投稿でトレーニングされた YOLOv5 モデルは、データセット上で良好にパフォーマンスし、高い検出精度と堅牢性を備えており、実際のシナリオに適用できます。さらに、ブロガーはシステム全体の詳細なテストを実施し、最終的にこのブログ投稿のデモ部分である高精度ターゲット検出システム インターフェイスのスムーズなバージョンを開発しました。完全な UI インターフェイス、テスト画像ビデオ、コードファイルなどがパッケージ化されてアップロードされています。興味のある友達は私のプライベートメッセージをフォローして入手してください。

その他の深層学習ベースのターゲット検出システムには、トマト、犬猫、ヤギ、野生ターゲット、タバコの吸い殻、QR コード、ヘルメット、交通警察、野生動物、野煙、人間の転倒認識、赤外線歩行者、家禽豚、リンゴなどがあります。ブルドーザー、ミツバチを必要としている友達、電話、ハト、サッカーボール、牛、フェイスマスク、安全ベスト、煙感知システムなど、私をフォローして、ブロガーの他のビデオからダウンロード リンクを取得してください。

完全なプロジェクト ディレクトリは次のとおりです。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/sc1434404661/article/details/131873157