プロジェクト紹介
TensorFlow2.X は、畳み込みニューラル ネットワーク (CNN) を構築して交通標識認識を実現します。構築された畳み込みニューラル ネットワークは、VGG のような構造になっています (畳み込み層とプーリング層が繰り返し積み重ねられ、次に全結合層を通過し、最後にソフトマックスを使用して各カテゴリの確率と最も高い確率を持つカテゴリをマッピングします)は認識結果です)。
他のプロジェクト
果物と野菜の認識:畳み込みニューラル ネットワーク ベースの果物認識プロジェクト
conda と pycharm をインストールする
すでにインストールされている場合は無視してください。
コメント領域で取得します: Pycharm、Anaconda、Miniconda、TeamViewer (リモート アシスタンス)、FormatFactory (フォーマット ファクトリ) を含むインストール パッケージの共有リンク。
acondaをインストールするには、AnacondaかMiniconda
を選択できますが、インストール方法ややり方は全く同じです。ただし、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 ページに表示します。上のカテゴリにあります 最終モデルの認識結果です。