YOLOv8 モデルに基づくタバコの吸い殻ターゲット検出システム (PyTorch+Pyside6+YOLOv8 モデル)

要約: YOLOv8 モデルに基づくタバコの吸い殻ターゲット検出システムは、日常生活における車両ターゲットの検出と位置特定に使用できます。深層学習アルゴリズムを使用して、写真、ビデオ、カメラなどでターゲット検出を実現できます。システムは、画像、ビデオ、その他の形式での結果もサポートしており、視覚化と結果のエクスポートも可能です。このシステムは、YOLOv8 ターゲット検出アルゴリズムのトレーニング データ セットを使用し、Pysdie6 ライブラリを使用してフロントエンド ページ表示システムを構築します。さらに、このシステムがサポートする機能には、トレーニング モデルのインポートと初期化、検出信頼スコアと検出後処理 IOU しきい値の調整、画像のアップロード、検出、視覚的結果の表示と検出結果のエクスポート、ビデオのアップロード、検出、検出結果のエクスポート、カメラ画像の入力、検出および可視化結果の表示、検出されたターゲットの数とリスト、位置情報、前方推論時間などの機能。このブログ投稿では、完全な Python コード、インストールおよび使用方法のチュートリアルが提供されており、初心者の参照に適しています。一部の重要なコード部分にはコメントが付いています。完全なコード リソース ファイルについては、記事の最後にあるダウンロード リンクにアクセスしてください。
ここに画像の説明を挿入します

ソース コードが必要な友人は、バックグラウンドでブロガーにプライベート メッセージを送信して、ダウンロード リンクを取得できます。

基本的な紹介

近年、機械学習とディープラーニングが大きく進歩し、ディープラーニング手法は検出精度や検出速度の点で従来の手法に比べて優れた性能を示しています。YOLOv8 は、Ultralytics が YOLOv5 アルゴリズムの後に開発した次世代アルゴリズム モデルで、現在、画像分類、オブジェクト検出、インスタンス セグメンテーション タスクをサポートしています。YOLOv8 は、以前の YOLO シリーズ モデルの成功を基盤とし、パフォーマンスと柔軟性をさらに向上させるための新機能と改善を導入した SOTA モデルです。具体的なイノベーションには、新しいバックボーン ネットワーク、新しいアンカーフリー検出ヘッド、CPU から GPU までのさまざまなハードウェア プラットフォームで実行できる新しい損失関数が含まれます。したがって、このブログ投稿では、YOLOv8 ターゲット検出アルゴリズムを使用してタバコの吸い殻ターゲット検出モデルを実装し、次に Pyside6 ライブラリを使用してインターフェイス システムを構築し、ターゲット検出ページの開発を完了します。このブロガーは以前に YOLOv5 アルゴリズムに関する関連モデルとインターフェイスを公開しているので、必要な友人は私の以前のブログからチェックしてください。さらに、このブロガーは YOLOv5、YOLOv6、YOLOv7、YOLOv8 を共同リリースする予定です。必要な友達は引き続き注目してください。友達はフォローして収集することを歓迎します。

環境設定

(1) プロジェクトディレクトリを開き、検索ボックスに「cmd」と入力してターミナルを開きます。
ここに画像の説明を挿入します

(2) 新しい仮想環境を作成します (conda create -n yolo8 python=3.8)
ここに画像の説明を挿入します

(3) 環境をアクティブ化し、ultralytics ライブラリ (yolov8 公式ライブラリ) をインストールし、pip install Ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
ここに画像の説明を挿入します

(4) このインストール方法では CPU バージョンの torch のみがインストールされることに注意してください。gpu バージョンの torch をインストールする必要がある場合は、パッケージをインストールする前に torch をインストールする必要があります: pip install torch2.0.1+cu118 トーチビジョン0.15.2+cu118 -f https://download.pytorch.org/whl/torch_stable.html;再、pip install Ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple
ここに画像の説明を挿入します

(5) グラフィカル インターフェイス ライブラリ pyside6 をインストールします: pip install pyside6 -i https://pypi.tuna.tsinghua.edu.cn/simple

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

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

モデルの選択と初期化

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

信頼スコアと IOU の変化

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

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

ユーザーは、「画像の選択」ボタンをクリックして、検出および認識用のリーフレット画像をアップロードできます。アップロードが成功すると、システム インターフェイスに入力画像が同時に表示されます。
ここに画像の説明を挿入します

画像検出ボタンをもう一度クリックすると、入力画像のターゲット検出機能が完了し、時間列に検出時間が出力され、ターゲット数列に検出されたターゲットの数が出力されます。ドロップで検出されたターゲットを選択できます。 -down ボックス。ターゲットの位置変更 (つまり、xmin、ymin、xmax、ymax) ラベル値に対応します。
ここに画像の説明を挿入します

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

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

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

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

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

次に、ビデオ検出ボタンをクリックして、入力ビデオのターゲット検出機能を完了します。その後、システムは時間列に検出時間を出力し、ターゲット数列に検出されたターゲットの数を出力します。ドロップで検出されたターゲットを選択できます。 -down ボックス。ターゲットの位置変更 (つまり、xmin、ymin、xmax、ymax) ラベル値に対応します。
ここに画像の説明を挿入します

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

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

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

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

カメラ検出ボタンをもう一度クリックすると、入力カメラのターゲット検出機能が完了し、システムは時間列に検出時間を出力し、ターゲット数列に検出されたターゲットの数を出力します。ドロップで検出されたターゲットを選択できます。 -down ボックス。ターゲットの位置変更 (つまり、xmin、ymin、xmax、ymax) ラベル値に対応します。
ここに画像の説明を挿入します

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

アルゴリズムの原理の紹介

本システムは深層学習による一段階ターゲット検出アルゴリズムYOLOv8を採用しており、従来のYOLOシリーズターゲット検出アルゴリズムと比較して、(1)導入・運用方法がよりわかりやすく、(2)という利点があります。より高速かつ正確; (3) 新しいバックボーン、YOLOv5 の C3 を C2F に置き換える; (4) YOLO シリーズは初めてアンカーフリーの使用を試みる; (5) 新しい損失関数。YOLOv8 モデルの全体構造は次の図に示されており、元の画像は mmyolo の公式ウェアハウスにあります。
ここに画像の説明を挿入します

YOLOv8 モデルと YOLOv5 モデルの最も明らかな違いは、C2F モジュールが元の C3 モジュールの代わりに使用されていることです。2 つのモジュールの構造は、下の図に示すとおりです。元の図は、myolo の公式ウェアハウスにあります。 。
ここに画像の説明を挿入します

また、ヘッド部分はオリジナルのカップリングヘッドからデカップリングヘッドへ、YOLOv5のAnchor-BasedからAnchor-Freeへ、と最も大きく変更されました。構造比較を下図に示します。
ここに画像の説明を挿入します

データセットの紹介

このシステムで使用されるタバコの吸い殻データ セットは、タバコの吸い殻のカテゴリとして手動でラベル付けされており、データ セットには合計 1023 枚の画像が含まれています。このデータセットのカテゴリはすべて、回転数が多く、照明条件が異なるため、より堅牢な検出モデルをトレーニングするのに役立ちます。この記事の実験で使用される吸い殻の検出および認識データ セットには、トレーニング セットに 824 枚の画像、検証セットに 199 枚の画像が含まれており、その一部のデータといくつかのサンプル データ セットは、次の図に示すように選択されています。さらに、モデルの一般化能力と堅牢性を強化するために、ランダムな回転、スケーリング、トリミング、色変換などのデータ拡張手法も使用して、データセットを拡張し、過剰適合のリスクを軽減しました。

キーコード解析

トレーニング フェーズでは、事前トレーニングされたモデルをトレーニングの初期モデルとして使用し、複数回の反復を通じてネットワーク パラメーターを最適化して、より優れた検出パフォーマンスを実現しました。トレーニング プロセス中に、学習率の減衰やデータ強化などの手法を採用して、モデルの汎化能力と堅牢性を強化しました。単純なシングルカード モデルのトレーニング コマンドは次のとおりです。
ここに画像の説明を挿入します

トレーニング中にさらに多くのパラメータを指定することもできます。重要なパラメータのほとんどは次のとおりです。ここに画像の説明を挿入します

テスト段階では、トレーニングされたモデルを使用して新しい画像とビデオを検出しました。閾値を設定することで、その閾値よりも信頼度が低い検出枠が除外され、最終的に検出結果が得られます。同時に、その後の分析や応用のために、検出結果を画像またはビデオ形式で保存することもできます。このシステムは YOLOv8 アルゴリズムに基づいており、PyTorch を使用して実装されています。コードで使用される主なライブラリには、PyTorch、NumPy、OpenCV、Pyside6 などが含まれます。
ここに画像の説明を挿入します

Pyside6 インターフェース設計

PySide は、C++ 版 Qt をベースに開発された Python GUI ライブラリです。基本的には C++ 版と使い方に大きな違いはありません。他の Python GUI ライブラリと比較して、PySide は開発が速く、より完全な機能を備え、ドキュメントのサポートも充実しています。このブログ投稿では、Pyside6 ライブラリを使用してグラフィカル インターフェイスを作成し、シンプルで使いやすい対話型インターフェイスをユーザーに提供し、ユーザーがターゲット検出用の写真やビデオを選択できるようにします。
Qt Designer を使用してグラフィカル インターフェイスを設計し、Pyside6 を使用して設計された UI ファイルを Python コードに変換します。グラフィカル インターフェイスには、ラベル、ボタン、テキスト ボックス、複数選択ボックスなどの複数の UI コントロールが含まれています。Pyside6 のシグナルおよびスロット メカニズムを通じて、UI コントロールとプログラム ロジック コードを相互に接続できます。

実験結果と分析

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

以下の図は、検証セットで学習させた YOLOv8 モデルの PR 曲線を示しており、図からわかるように、このモデルは高い再現率と精度を実現し、全体的なパフォーマンスが良好であることがわかります。
ここに画像の説明を挿入します

以下の図は、YOLOv8 モデルを使用してタバコの吸い殻ターゲット データ セットをトレーニングした場合の、このブログ投稿のモザイク データ拡張画像を示しています。
ここに画像の説明を挿入します

要約すると、このブログ投稿でトレーニングされた YOLOv8 モデルは、データセット上で良好にパフォーマンスし、高い検出精度と堅牢性を備えており、実際のシナリオに適用できます。さらに、このブロガーはシステム全体の詳細なテストを実施し、最終的にスムーズで高精度のターゲット検出システム インターフェイスを開発しました。これは、このブログ投稿のデモ部分で示されています。完全な UI インターフェイス、テスト画像とビデオ、コード ファイル、などはすべてパッケージ化されてアップロードされています。興味のある友達は私のプライベートメッセージをフォローして入手してください。さらに、このブログ投稿の PDF やその他のターゲット検出および認識システムについては、著者の WeChat パブリック アカウント BestSongC (旧 Nuist Computer Vision and Pattern Recognition) をフォローしてください。

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

完全なプロジェクト ディレクトリは次のとおりです。
ここに画像の説明を挿入します

おすすめ

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