畳み込みニューラル ネットワークに基づく Python の交通標識認識の乳母レベルのチュートリアル (Tensorflow)

プロジェクト紹介

TensorFlow2.X は、畳み込みニューラル ネットワーク (CNN) を構築して交通標識認識を実現します。構築された畳み込みニューラル ネットワークは、VGG のような構造になっています (畳み込み層とプーリング層が繰り返し積み重ねられ、次に全結合層を通過し、最後にソフトマックスを使用して各カテゴリの確率と最も高い確率を持つカテゴリをマッピングします)は認識結果です)。

他のプロジェクト

果物と野菜の認識:畳み込みニューラル ネットワーク ベースの果物認識プロジェクト

conda と pycharm をインストールする

すでにインストールされている場合は無視してください。

コメント領域で取得します: Pycharm、Anaconda、Miniconda、TeamViewer (リモート アシスタンス)、FormatFactory (フォーマット ファクトリ) を含むインストール パッケージの共有リンク。
ここに画像の説明を挿入

acondaをインストールするには、AnacondaMiniconda
を選択できますが、インストール方法ややり方は全く同じです。ただし、Minicondaを選択することを強くお勧めします。これは、Anacondaに比べて、比較的「軽く」、メモリ使用量が非常に少なく、インストール時間が非常に短いためです。

次のステップに直接進み、このページのすべてのオプションをオンにします。オンにしないと、環境変数は追加されません。
ここに画像の説明を挿入

次のステップに直接Pycharm をインストールし
、このページですべてを確認します。
ここに画像の説明を挿入
リモート アシスタンス ソフトウェアをインストールする
リモート アシスタンスが必要な場合は、事前に TeamViewer をインストールしてください。
ここに画像の説明を挿入

プロジェクトの表示

ビデオ表示アドレス:交通標識認識ビデオ表示
1. PYQT5 インターフェイス: インタラクションを実現する PYQT5 GUI インターフェイスに基づいて、交通標識画像をアップロードし、認識結果をクリックすることができます。

ここに画像の説明を挿入

2. Flask Webフロントエンドインターフェース:Flaskをベースにインタラクションを実現するためのWebインターフェースを作成し、交通標識の画像をアップロードすることができ、予測モデルをクリックすると各カテゴリーの信頼度を出力し、Web上に表示しますページを大きい順に表示し、一番上に表示されているカテゴリが最終モデルの認識結果です。

ここに画像の説明を挿入

ネットワーク構造:
ここに画像の説明を挿入

開発環境:

  • Python==3.7
  • テンソルフロー==2.3

データセット (GTSRB):

ドイツの交通標識ベンチマークは、2011 年のニューラル ネットワークに関する国際合同会議 (IJCNN) で発表された、マルチクラスの単一画像分類の課題です。関連分野の研究者の参加を心より歓迎いたします。このコンテストは、特別な分野の知識がなくても参加できるように設計されています。私たちのベンチマークには次の特性があります。

主に単一画像、複数クラスの分類問題に使用されます。トレーニング セットの 39,209 サンプルとテスト セットの 12,630 サンプルを含む 43 クラス、合計 50,000 枚を超える画像を含む大規模で現実的なデータベース。

ここに画像の説明を挿入
ここに画像の説明を挿入
各トレーニング セットとテスト セットの各フォルダーに保存されるデータ カテゴリを次の図に示します。
ここに画像の説明を挿入

コードのデバッグ

ここに画像の説明を挿入

ここに画像の説明を挿入します
プロジェクトを取得したら、解凍後に次の図に示すようにファイルを解凍します。
ここに画像の説明を挿入

ステップ1: プロジェクトフォルダーを開く

ここに画像の説明を挿入

各ファイルとコードの紹介:
ここに画像の説明を挿入

Step2: 開発環境を構築する

ここに画像の説明を挿入

仮想環境を作成する

「cmd」と入力して Enter キーを押すと、コマンド ターミナルが開き、仮想環境の作成が開始されます。
ここに画像の説明を挿入
入力コマンドは次のとおりです。

conda create -n tf23_py37 python=3.7

コマンドを入力して Enter キーを押すと、次のプロンプトが表示されます。Enter キーを押し続けます。
ここに画像の説明を挿入

次に、Enter キーを押した後、次の図に示すように、環境名「tf23_py37」で仮想環境を作成しました。その Python バージョンは 3.7 です。

ここに画像の説明を挿入

仮想環境をアクティブ化する

このコマンドをコピーし、コマンド ラインを入力して、作成した仮想環境をアクティブ化します。

conda activate tf23_py37

ここに画像の説明を挿入

サードパーティの依存関係をインストールする

次に、プロジェクトで使用されるサードパーティの依存ライブラリ (tensorflow、matplotlib、pyqt5 など) のインストールを開始します。今回使用した依存ライブラリはすべてrequirements.txtファイルに記録されています。以下でインストールを開始します。

コマンドターミナルに次のコマンドを入力します。

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

: サードパーティの依存ライブラリをインストールするための上記のコマンド「-i」の後には、国内のミラー ソース アドレスが続きます。インストールが失敗し、指定したミラー ソースに対応するサードパーティ ライブラリに依存するバージョンがないというメッセージが表示された場合は、他のミラー ソースの選択を検討できます。
中国で一般的に使用されるミラーソースアドレス

清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:https://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/

インストールが成功すると、以下のようになります。

ここに画像の説明を挿入

プロジェクト構成環境を開きます

ここに画像の説明を挿入
次のプロンプトが表示された場合:
ここに画像の説明を挿入

次のプロンプトが表示された場合:

ここに画像の説明を挿入

インタプリタ (上で作成した仮想環境) を選択します。

フレンドチャームを開いた後、pycharm の右下隅にあるインタープリターの選択をクリックし、「インタープリターの追加」を選択してインタープリターの追加を選択します。

ここに画像の説明を挿入

ここに画像の説明を挿入

画像のプロンプトに従い、必要な「Python インタープリター」を追加すると、下の図に示すように pycharm の右下隅に表示されます。これは成功を意味します。

ここに画像の説明を挿入

ニューラル ネットワーク モデルをトレーニングする

プロジェクト「train_cnn.py」のコードを開き、図のプロンプトに従って操作します。

ここに画像の説明を挿入
操作が成功した場合の効果を次の図に示します。

ここに画像の説明を挿入
操作が成功したら、次に行うことは「待つ」ことです。各人のコンピュータの構成に応じて、ネットワークをトレーニングするためのコードを実行する時間も異なります (数分から数時間)。操作が完了しました。エラーが報告されなければ、トレーニングは成功です。

トレーニングが成功すると、モデル フォルダーに「cnn_fv.h5」ファイルが生成されます。

ここに画像の説明を挿入
トレーニングが成功すると、結果フォルダーに「results_cnn.png」画像が表示されます。この画像には、トレーニング プロセス中の精度と損失の変化が記録されています。
ここに画像の説明を挿入
また、「train_cnn.py」を実行する論理手順に従って「train_mobilenet.py」を実行すると、モバイルネット ニューラル ネットワークがトレーニングされます。操作の結果は、CNN との一連の比較を形成できます。それは私たちの記事執筆にさらに役立ちます!

テスト

モデルをトレーニングした後、モデルのテスト (モデルのパフォーマンスの評価) を開始し、「test_model.py」を開きます。

ここに画像の説明を挿入
画像の指示に従ってください。

正常に実行されると、以下に示すように、結果フォルダーの下に「heatmap_cnn.png」ヒート マップが生成されます (各カテゴリーの予測精度が確認できます)。 カテゴリが多いため、表示効果はあまり見栄えがよくありません
。 (-_-)。
ここに画像の説明を挿入

予測する

PYQT5のGUIインターフェース

トレーニングとテストを経て、交通標識認識に使用できるニューラル ネットワークの重みを取得したので、次に、認識する必要がある交通標識の画像の予測を開始します。「windows.py」コードを開き、クリックして直接実行すると、結果は次のようになります。

ここに画像の説明を挿入

正常に実行されると、pyqt5 GUI インターフェイスが表示され、この GUI 操作を使用して、プロジェクトによって予測される果物の画像を予測できます。

Flask ウェブ表示

コード「app.py」を開き、「直接実行」をクリックすると、結果は次のようになります。

ここに画像の説明を挿入
コンソールに出力されたリンクをクリックするか、ブラウザを開いて URL http://127.0.0.1:5000 を入力します。フラスコのフロントエンド ページにジャンプして、独自の操作、写真のアップロード、予測のクリックを行うことができます。モデルは各カテゴリの信頼度を出力し、大きいものから小さいものへの降順で Web ページに表示します。上のカテゴリにあります 最終モデルの認識結果です

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_34184505/article/details/129450388