読書メモ「Deep Learning-Based Crack Damage Detection Using Convolutional Neural Networks」

#はじめに
最近の社内論文輪講会のネタを紹介します．
インフラ点検に関連する論文です．

論文内容の詳細については，参考文献1「Deep Learning-Based Crack Damage Detection Using Convolutional Neural Networks」にご確認ください．  

本記事で使用したすべての図，画像は，参考文献１からのものです．

#1.背景
民間インフラ，橋梁，ダム，超高層ビルなどは，使用により劣化します． 
そのため，定期的な点検やメンテナンスを行う必要があります．

著者は，点検の２つのアプローチが挙げられました．

１．構造ヘルスモニタリング技術
大規模なインフラを監視するため，多数のセンサーを設置し，分散ソースからのデータを統合して分析を行います．様々な不確実性と不均一に分布した環境への影響のため，収集されたデータを補正する必要があります．収集されたデータが実際に構造的な損傷を示しているかどうか，システムの誤動作，ノイズ信号などの確認も必要です．これらの作業を実施するのは，簡単ではありません．

２．画像処理技術
ほとんどすべての表面的な欠陥は，おそらく識別可能です．エッジの検出方法を用いて，鋼，コンクリートのひび割れを検出する研究が行われています．ただし，撮影環境が大幅に異なる場合に（照明や影の変化など），画像処理技術は，適用できない場合があります．

#2.提案手法
これらの課題を解決するために，コンクリートのひび割れ検出用の畳み込みニューラルネットワークのアーキテクチャを提案します．
下記の図は，提案手法のフローチャートです．

![Cha_et_al-2017-Computer-Aided_Civil_and_Infrastructure_Engineering.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/400491/fbd5ec84-545e-f63b-eb87-58743100ca93.jpeg)

事前に用意した学習用，検証用の画像データセットを使って，提案した畳み込みニューラルネットワークを訓練します．学習済モデルを用いて，テスト画像のひび割れ領域を検出します．

下記の図は，提案した畳み込みニューラルネットワークのアーキテクチャです．

![Cha_et_al-2017-Computer-Aided_Civil_and_Infrastructure_Engineering2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/400491/698954aa-249a-3d42-c1de-211bd5f39c09.jpeg)

入力画像のサイズは，256×256ピクセルです．L1，L3，L5，およびL7は，畳み込みレイヤーです．L2およびL4は，プーリングレイヤーです．L6は，ReLUレイヤーです．L8は，ソフトマックス層です．アーキテクチャには，バッチ正規化及びドロップアウトを採用します．確率的勾配降下法を適用します．重みの減衰率は，0.0001に，運動量パラメータは，0.9に設定します．ミニバッチサイズは100です．

#3.実験
実験用の画像データセットの作成方法について紹介します．

約1.0から1.5mの撮影距離で撮影作業を行い，332枚のロー画像が入手できました．そのうち277枚はトレーニング，検証の画像データの作成に使用します．55枚のロー画像はテストに使用します．テストのため，撮影距離が0.1m未満で，照明強度が大幅に異なる画像も複数枚を撮りました．

277枚のロー画像は，256×256ピクセルの画像にトリミングされ，各画像に無損傷画像またはひびの入った画像として注釈をつけました．これらのデータはトレーニング，検証に使用します．ひび割れありと無損傷の画像データ数の比率は1：1であり，トレーニングと検証の画像データ数の比率は4：1です．トレーニング用の画像枚数は32k，検証用のは8kです．

下記の画像は，トレーニングで使用された画像例です．(a)は良い画像例，(b)は歪んだ画像例，(c)は強い光の斑点のある画像例です．画像の解像度は256×256ピクセルです．

![Cha_et_al-2017-Computer-Aided_Civil_and_Infrastructure_Engineering4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/400491/53160ce9-34b5-861d-7cc3-9b0439aebf3f.jpeg)

トレーニングと検証の画像データセットで得られた精度は、それぞれ51エポックで98.22%、49エポックで97.95%です．

下記の図は，畳み込み層C1の受容野を可視化したものです．
(a)はトレーニングの少ないネットワークの場合，(b)はよく訓練されたネットワークの場合です．(b)は，(a)より明確なスポットと線を示しています．

![Cha_et_al-2017-Computer-Aided_Civil_and_Infrastructure_Engineering7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/400491/cb38d2fd-19a0-ed62-b938-6268fcb73a86.jpeg)

学習済モデルを使って，テスト画像全体に対して，スライディング・ウィンドウ法で2回のスキャンをします．下記の図は，スキャン方法のイメージです．

![Cha_et_al-2017-Computer-Aided_Civil_and_Infrastructure_Engineering9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/400491/6617debf-1541-bb11-c34b-c206f8d2039d.jpeg)

#4.結果
テスト用の画像は，5つのパターンがあります．それは，薄いひび割れ，薄いひび割れと照明スポット，影付きの画像，クローズアップ画像，及びクローズアップ，ぼやけ，強い照明スポットです．

下記の画像は，影付きの場合の結果です．(a)はオリジナル画像，(b)は提案された手法の結果，(c)はキャニーエッジ検出の結果，(d)はソーベルエッジの検出結果です．
提案手法は，従来の画像処理アプローチより良い結果が得られたことが確認できます．

![Cha_et_al-2017-Computer-Aided_Civil_and_Infrastructure_Engineering16.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/400491/dc4e3e5d-665d-72cf-6785-d84cac69ac65.jpeg)

コンクリートのひび割れを検出するには，ディープラーニングを使用することで，テスト画像の撮影環境が大幅に異なる場合でも，高い検出精度が得られることが可能です．

#5.所感
テスト画像のパターンの中で，影付きの画像の場合は，一番難しいと思います．提案手法は従来のアプローチと比べ，より良い検出結果が得られました．それに対して大変興味があります．今後，時間がある時，この手法を検証してみたいです．

#参考文献
1．Young-Jin Cha and Wooram Choi. Deep Learning-Based Crack Damage Detection Using Convolutional Neural Networks. Computer-Aided Civil and Infrastructure Engineering, 2017.