Python+VGG+MiniGoogLeNet の簡易版に基づくインテリジェントな 43 種類の交通標識認識 - 深層学習アルゴリズム アプリケーション (すべての Python プロジェクト ソース コードを含む) + データセット + モデル (1)


ここに画像の説明を挿入します

序文

このプロジェクトは、海外での自動運転ツアーの特定のシナリオにおける交通標識認識の問題の解決に焦点を当てています。Kaggle に設定された豊富な交通標識データを使用して、VGG や GoogLeNet などの畳み込みニューラル ネットワーク モデルをトレーニングに使用しました。ネットワーク アーキテクチャとパラメータを巧みに調整することで、さまざまな種類の交通標識を認識するモデルの精度を向上させることに取り組んでいます。

まず、トレーニング データの多様性と豊富さを確保するために、Kaggle 上の高品質の交通標識データセットを選択しました。次に、VGG や GoogLeNet などの高度な畳み込みニューラル ネットワーク モデルが使用され、画像分類タスクで優れたパフォーマンスを発揮します。

このプロジェクトは、賢明なネットワーク アーキテクチャとパラメータ調整を通じて、モデルの精度の向上に取り組んでいます。ネットワークがこれらの特徴をより具体的に学習できるようにするために、さまざまな交通標識の特徴について徹底的な調査を実施し、それによって複雑なシナリオにおけるモデルの一般化能力を強化しました。

最終的に、このプロジェクトは、車で海外旅行するユーザーに効率的かつ正確な交通標識認識システムを提供し、運転の安全性とユーザーエクスペリエンスを向上させることを目的としています。この革新的なソリューションは、自動運転やインテリジェントナビゲーションなどの分野に大きな影響を与えることが期待されています。

全体的なデザイン

このパートには、システム全体の構成図とシステム フローチャートが含まれます。

全体システム構成図

システムの全体構成を図に示します。

ここに画像の説明を挿入します

システムフローチャート

システムフローを図に示します。

ここに画像の説明を挿入します

動作環境

このセクションには、Python 環境と Anaconda 環境が含まれます。

Python環境

Python 3.6 以降の構成が必要です。Windows 環境では、Python に必要な環境の構成を完了するために Anaconda をダウンロードすることをお勧めします。ダウンロード アドレスはhttps://www.anaconda.com/です。仮想ファイルをダウンロードすることもできます。 Linux 環境でコードを実行するためのマシン。

「マイ コンピュータ」を右クリックし、「プロパティ」をクリックして、「システムの詳細設定」を選択します。「環境変数」をクリックし、システム変数でパスを見つけ、「編集」をクリックして新しい環境変数を作成し、Python インタープリターのパスを貼り付けて確認します。

アナコンダ環境

Anaconda をダウンロードします。ダウンロード アドレスは https://www.anaconda.com/ です。

Anaconda プロンプトを開き、清華イメージを使用して CPU バージョンの TensorFlow をインストールし、次のコマンドを入力します。

pip install tensorflow==1.14.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

他のライブラリをインストールする必要がある場合は、次のコマンドを入力します。

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install scikit-image -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install imutils -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

モジュールの実装

このプロジェクトには、データの前処理、モデルの構築、モデルのトレーニング、ストレージの 3 つのモジュールが含まれています。各モジュールの機能紹介と関連コードを以下に示します。

1. データの前処理

このプロジェクトでは、ドイツの交通標識認識ベンチマーク データセット (GTSRB) を使用しています。このデータ セットには、さまざまな環境で撮影された 50,000 個の交通標識の画像が含まれています。ダウンロード アドレスは: https://www.kaggle.com/datasets/meowmeowmeowmeowmeow/gtsrb -german-交通標識データセットをダウンロードした後、データをインポートして前処理を実行します。関連するコードは次のとおりです。

import matplotlib
from tensorflow.keras.preprocessing.image importlImageDataGenerator
from tensorflow.keras.utils import to categorical
from tensorflow,keras.optimizers import Adam
from sklearn.metrics import classification_report
from skimage import transform
from skimage import exposure
from skimage import io
import matplotlib.pyplot as plt
import numpy as np
import random
import os

GTSRB データセットはトレーニング セットとテスト セットに分かれており、load_split()トレーニング セットとテスト セットの画像データとラベルをインポートする関数を定義します。同じカテゴリに属する​​画像が隣接しているため、トレーニング効果を確実にするには画像をシャッフルする必要があります。すべての画像の解像度は統計解析によって求められており、図に示すように、画像のピクセルが 100×100 を超えるものはほとんどありません。トレーニングを容易にするために、画像ピクセルは一律に 32×32 に調整されます。画像のコントラストが低いため、skimage ライブラリの関数が呼び出されequalize_adapthist()、適応ヒストグラム等化アルゴリズム (CLAHE) が使用されて画像のコントラストが増加します。

ここに画像の説明を挿入します

load_split()関数の関連コードは次のとおりです。

def load_split(basePath, csvPath):
    #初始化data和labels列表
    data = []
    labels = []
    #加载存有训练集和测试集图像存储地址和标签的csv表格,去除空格,通过换行符识别各行
#并去除第一行标题行
    rows = open(csvPath).read().strip().split("\n")[1:]
    #打乱rows的各行
    random.shuffle(rows)
    for (i, row) in enumerate(rows):
        #每导入1000张图像后提示
        if i > 0 and i % 1000 == 0:
            print("[INFO] processed {} total images".format(i))
        #取csv表格最后的两列:标签和存储地址
        (label, imagePath) = row.strip().split(",")[-2:]
        #写出完整的图像存储地址
        imagePath = os.path.sep.join([basePath, imagePath])
        #读取图像数据
        image = io.imread(imagePath)
        #统一将图像调整为32*32像素
        image = transform.resize(image, (32, 32))
        #增加图像的对比度
        image = exposure.equalize_adapthist(image, clip_limit=0.1)
        #将当前图像的数据和标签添加到data和labels列表
        data.append(image)
        labels.append(int(label))
    data = np.array(data)
    labels = np.array(labels)
    return (data, labels)

画像の各カテゴリの特定の名前をインポートし、load_split()関数を呼び出してトレーニング セットとテスト セットの画像データとラベルを取得し、画像のデータ範囲を [0,225] から [0,1] に調整します。画像ラベルをホットエンコードします。関連するコードは次のとおりです。

#从signnames.csv表格中获取图像各类别的具体名称,该表格共两列,第二列是类别名称
labelNames = open("signnames.csv").read().strip().split("\n")[1:]
labelNames = [l.split(",")[1] for l in labelNames]
trainPath = os.path.sep.join(['gtsrb-german-traffic-sign', "Train.csv"])
testPath = os.path.sep.join(['gtsrb-german-traffic-sign', "Test.csv"])
print("[INFO] loading training and testing data...")
#通过调用load_split()函数获得训练集、测试集的图像数据和标签
(trainX, trainY) = load_split('gtsrb-german-traffic-sign', trainPath)
(testX, testY) = load_split('gtsrb-german-traffic-sign', testPath)
#把RGB图像的数据范围从[0,225]调整为[0,1]
trainX = trainX.astype("float32") / 255.0
testX = testX.astype("float32") / 255.0
#One-hot编码图像的标签
numLabels = len(np.unique(trainY))
trainY = to_categorical(trainY, numLabels)
testY = to_categorical(testY, numLabels)

関連する他のブログ

Python+VGG+MiniGoogLeNet の簡易版に基づくインテリジェントな 43 種類の交通標識認識 - 深層学習アルゴリズム アプリケーション (すべての Python プロジェクト ソース コードを含む) + データセット + モデル (2)

Python+VGG+MiniGoogLeNet の簡易版に基づくインテリジェントな 43 カテゴリの交通標識認識 - 深層学習アルゴリズム アプリケーション (すべての Python プロジェクト ソース コードを含む) + データ セット + モデル (3)

プロジェクトのソースコードのダウンロード

詳細については、私のブログ リソースのダウンロード ページをご覧ください。


その他の情報をダウンロードする

人工知能に関連する学習ルートと知識システムを引き続き理解したい場合は、私の別のブログ「ヘビー級 | 完全な人工知能 AI 学習 - 基礎知識の学習ルート」を参照してください。すべての情報はネットワーク ディスクから直接ダウンロードできます。》このブログは、Github の有名なオープンソース プラットフォーム、AI テクノロジー プラットフォーム、および関連分野の専門家 (Datawhale、ApacheCN、AI Youdao、Dr. Huang Haiguang など) について言及しています
。関連情報は 100G 近くあります。私の友人全員を助けることができれば幸いです。

おすすめ

転載: blog.csdn.net/qq_31136513/article/details/135080491