独自のデータを使ってシンプルな畳み込みニューラルネットワークを構築する

独自のデータを使ってシンプルな畳み込みニューラルネットワークを構築する

この記事では、花、車、猫、馬、人、自転車、犬の 7 種類の何千もの画像でトレーニングされ、特定の画像が猫、犬、または人のいずれであるかを予測できる畳み込みニューラル ネットワークを構築します。

 

このCNN実装では、以下のトピックをカバーする独自の画像データセットを使用します。

  • 独自のデータセットの読み込みと前処理
  • Keras での CNN モデルの設計とトレーニング
  • 損失と精度の曲線のプロット
  • モデルを評価し、テスト画像の出力クラスを予測する
  • CNNの中間層出力の可視化
  • 結果の混同行列をプロットする

独自のデータセットを読み込んで前処理します。

使用するデータセットは、インターネットから収集されラベル付けされた 7 つのクラスで構成されています。 Python コードは次のとおりです。

  1. PATH = os.getcwd()  
  2. #データパスを定義する 
  3. data_path = PATH + '/data'    
  4. data_dir_list = os.listdir(データパス)  
  5. データディレクトリリスト

出力:

  1. [ '自転車' '車' '猫' '犬' '花' '馬' '人間' ]

いくつかの画像を視覚化すると、画像が 128 x 128 ピクセルであることがわかります。Python コードは次のとおりです。

  1. #いくつかの画像を視覚化する 
  2. 画像 = X_train[1441,:].reshape((128,128))  
  3. plt.imshow(画像)  
  4. plt.show()

独自のデータを使ってシンプルな畳み込みニューラルネットワークを構築する 

次に、Keras で CNN モデルの設計とコンパイルを開始します。Python 実装は次のとおりです。

  1. #入力シェイプの初期化 
  2. input_shape = img_data[0].shape  
  3. #CNNシーケンシャルモデルの設計 
  4. モデル = シーケンシャル ([  
  5. 畳み込み2D(32,3,3, border_mode = 'same' 、 activation = 'relu' 、 input_shape = input_shape)、  
  6. 畳み込み2D(32,3,3, アクティベーション = 'relu' )、  
  7. MaxPooling2D(プールサイズ = (2,2))、  
  8. ドロップアウト(0.5)、  
  9. 畳み込み2D(64,3,3, アクティベーション = 'relu' )、  
  10. MaxPooling2D(プールサイズ = (2,2))、  
  11. ドロップアウト(0.5)、  
  12. フラット化()、  
  13. 密度(64, 活性化 = 'relu' ),  
  14. ドロップアウト(0.5)、  
  15. 密度(num_classes、アクティベーション = 'softmax' )  
  16. ])  
  17. #モデルのコンパイル 
  18. モデル.コンパイル(  
  19. 損失 = 'カテゴリクロスエントロピー'  
  20. オプティマイザー = 'adadelta'  
  21. メトリック = [ '精度' ])

モデルを適合させた後、反復を通してトレーニングと検証を視覚化できます。

  1. ist = model.fit(X_train, y_train,  
  2. バッチサイズ = 16、  
  3. nb_epoch = num_epoch、  
  4. 詳細=1、  
  5. 検証データ = (X_テスト、y_テスト)  



次のコードを使用して、モデルを使用して新しい画像の新しいクラスを予測できるようになりました。

  1. # テスト画像の予測 
  2. 印刷((モデル.予測(テストイメージ)))  
  3. print( '画像クラス:' , model.predict_classes(test_image))

以下に示すように、モデルは画像をクラス[0](自転車)に正しく分類しました。


  1. [[3.6560327e-01 2.7960737e-06 1.2630007e-03 2.9311934e-01 1.6894026e-02  
  2. 3.0998811e-01 1.3129448e-02]]  
  3. 画像クラス: [0]

これは正規化されていない混同行列である

これで、モデルと重みを保存して、実際のアプリケーションに実装できるようになりました。

<<:  機械学習: 密度ベースの外れ値検出アルゴリズム

>>:  200 の優れた機械学習チュートリアルの要約「史上最も完全」

ブログ    

推薦する

ヘルスケアにおける人工知能の応用

今年に入ってから、医療提供方法や患者がより積極的に医療に参加できる方法を変革するために AI を使用...

たった1ミリ低くなれば時間が遅くなります!科学者が初めてミリメートルスケールで一般相対性理論を検証

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

...

OpenAIが安全チームを設置 準備: AIのリスクを評価し、外部からの悪用を防ぐ

OpenAIは10月27日、汎用人工知能(AGI)によって引き起こされる可能性のある壊滅的なリスクを...

写真を3Dに変換する品質が急上昇! GitHub がショートポジションをオープンしたところ、300 人以上がスターを付けました

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

画像からの「テキスト生成」の難しさを克服し、同レベルの拡散モデルを粉砕せよ! TextDiffuser アーキテクチャの 2 世代の詳細な分析

近年、テキスト生成画像、特に詳細レベルでリアルな効果を示す拡散ベースの画像生成モデルの分野で大きな進...

Google X 中国博士がロボットシミュレーターSimGANをリリース、ICLR2021が出版

[[407004]]工学部の学生は、さまざまなシミュレーターから切り離すことはできません。シミュレー...

...

マイクロソフトのGitHub Copilotサービスは大きな損失を被っていると報じられており、同社は独自のAIチップを開発してNvidiaに対抗する予定だ

10月10日のニュース、過去1年間、生成AIの流行は多くの企業に莫大な利益をもたらしました。最大の受...

AIオープンクラス | データのラベル付けについてはあまりご存じないのではないでしょうか?

人工知能の分野が日々急速な発展と進歩を遂げていることは疑いの余地がありません。携帯電話の電源を入れ、...

日本メディア:中国は人工知能の分野で米国を追い越している

日本経済新聞は8日、中国が人工知能の分野で米国を追い越しつつあるとする記事を掲載した。データによれば...

2030 年までに人工知能はどのようになるでしょうか?

[[378797]]画像ソース: unsplashマッキンゼー・グローバル・インスティテュートの調...

AIとIoTはどのように連携するのでしょうか?

人工知能 (AI) とモノのインターネット (IoT) の統合により、技術革新と機能の新しい時代が到...

Facebook、MITなどが研究論文を発表:ディープラーニングの実際の仕組みを説明する理論

Facebook、プリンストン大学、MITのAI研究者らは最近、「ディープラーニング理論の原理:ニュ...

軍用ロボットは障害物を乗り越えるために車輪を使うか脚を使うかを決定できる

ロボットが環境内を移動するための最も効率的な方法の 1 つは、比較的滑らかな地形上で車輪を動かすこと...