橋梁形式分類AIを実装してみよう(阿部雅人,杉崎光一)
その2 犬猫分類問題を応用して橋梁形式を分類してみよう
データ,手法と合わせてユースケースの設定が重要となりますが,犬猫分類の応用で,例えば,土木で考えた事例としては,桁橋とその他の橋梁形式(トラス、アーチ、吊橋)を分類するような問題を考えてみましょう.これは,腐食などの損傷を評価するようなAI技術において,そもそも対象物(鋼材,部材等)の位置を認識するなどの基礎的な技術と考えることができます.
〇データの準備とアノテーション
犬猫分類では,犬猫画像を収集して,画像に対して犬なのか猫なのかを目視でタグ付けを行うアノテーションをしました.同様に橋の画像をネット上で収集する必要があります.橋の全景画像データはインターネットに多くあるため収集が可能です.アノテーションをどのようにするかを考える必要がありますが,より簡単な問題として,桁橋とそれ以外でフォルダ分けしてみましょう.ここでは,学習データ150枚 検証データ50枚 テストデータ50枚で整理することとします.
桁橋 | その他形式(トラス,吊橋,アーチ) |
〇モデルの構築
深層学習モデルを構築します.層の比較的浅いニューラルネットワークと,層の深い転移学習を行ったモデルを比較することで深層学習の特徴を考察しましょう.転移学習とは様々な画像で学習したモデルを利用して,自分で集めた画像で再度学習をする方法です.ただし,モデルの答えが犬や猫だけでは困りますので,橋の分類に合った答えを返してくれるようにモデルを改良する必要があります.具体的には,プログラムの最終層を変更します.また,ファインチューニングという方法があり,こちらは集中した画像で最終層だけでなく,途中のモデルのパラメータも学習しなおす方法です.
〇モデルの結果を評価する
適用結果を以下に示しました.層の比較的浅い深層学習では,正答率が低く,また、学習が進むことで正答率は上がっていきますが,検証データに対しての正答率は増えていきません.これは過学習という問題です.それに対して,既存の様々な画像データの特徴を学習したモデルによって転移学習を行うことで,正答率が高くなっています.学習に利用していないテストデータの分類もうまくいくので,過学習の問題も起こらないことがわかります.
・適用結果1 層が浅い場合
学習モデルは以下の4層のCNN
・転移学習を利用した場合
ImageNetで学習済みのVGG16モデルを転移学習
〇モデルの評価
以上でモデルが学習できましたがAIは画像のどこをみて分類しているのでしょうか.これを可視化する方法として,GradCamという方法があります.浅いモデルのヒートマップを表示してみると橋でない場所を見ているデータがよく出てきます.それに対して転移学習の結果では橋の特徴を利用して分類しているように見えますね.また正解できなかった画像のヒートマップを見てみることでどうして間違ったかがわかるかもしれません.それにより,AIモデルの適性や,どのような学習データを追加して改良する必要があるかなどわかるかもしれません.
・浅いニューラルネットワークの結果
・深いニューラルネットワークの結果(block5_conv3 層の可視化)
より総合的に判断している?
桁橋 | その他形式(トラス,吊橋,アーチ) |
桁以外に間違えそうになった画像の確認は?
※サンプルプログラム
〇概要
・橋梁形式を分類する画像認識プログラム
・pytorchで作成
・データ(桁形式と桁以外の形式の橋の画像がフォルダ分けして整理されている)
※橋の画像については,(一社)日本橋梁建設協会ホームページの画像データを許諾の上使用させていただいています.
https://committees.jsce.or.jp/struct10/system/files/bridgedata.zip
〇ファイル名
・sampleprog1_1
モデルのパラメータを学習するプログラム
https://committees.jsce.or.jp/struct10/system/files/sampleprog1_1.py_.txt
・sampleprog1_2
モデルの学習したパラメータを読み込んで画像をテストするプログラム.
grad-camでAIの学習内容を確認するプログラム.
https://committees.jsce.or.jp/struct10/system/files/sampleprog1_2.py_.txt
添付 | サイズ |
---|---|
gradcam結果1.png | 126.78 KB |
gradcam結果2.png | 95.24 KB |
gradcam結果3.png | 92.64 KB |
gradcam結果4.png | 92.17 KB |
gradcam結果5.png | 81.08 KB |
gradcam結果6.png | 100.08 KB |
トラス.jpg | 13.68 KB |
学習結果1.png | 15.78 KB |
学習結果2.png | 10.4 KB |
桁橋.jpg | 12.69 KB |
深いモデル.png | 32.6 KB |
浅いモデル.png | 21.53 KB |
bridgedata.zip | 15.98 MB |
sampleprog1_1.py_.txt | 14.71 KB |
sampleprog1_2.py_.txt | 13.07 KB |