検出サイズの限界に挑む　～X線CT画像による工業製品内部の欠陥領域推定～

## 1. はじめに
本記事では、X線CTにより撮影された3次元データから、鋳造製品の鋳巣を領域抽出する手法[^alcon2019]について紹介します。鋳巣とは鋳造製品に空洞が発生してしまう欠陥のことです。鋳巣は、「いす」または「ちゅうす」と読みます。
本手法は、2019年の外観検査アルゴリズムコンテスト[^alcon]で提示された課題に対して取り組んだ際の手法です。非常に小型の鋳巣含め、複雑な形状を精細に推定する必要があり、独自のニューラルネットワーク構造を提案しています。この手法を用いた応募プログラムは、コンテストで最優秀賞を受賞しました。

## 2. 背景・目的
工業製品の検査方法の1つにX線CTを用いた内部検査があります。対象物に照射した放射線の減衰量から対象物内部の3次元構造を再構成することで、内部構造を非破壊で検査することができます。
今回取り扱う、外観検査アルゴリズムコンテスト2019の課題は、下図の「入力」のようなX線CTによる再構成画像から、鋳巣の領域を検出するというものです。画像中央に明るい灰色で写っている正方形の箇所が検査対象物のある領域です。またその中の濃い灰色領域が鋳巣領域になります。コンテストではこのような入力画像から鋳巣の領域を推定し、3次元的につながっている鋳巣ごとに異なる色で塗り分けたラベル画像を生成することが求められました。また学習・評価用データとして、再構成データとラベル画像のペアが3次元データ5サンプル分公開されました。
なお、本記事中の正解ラベルの画像は、視認性向上を目的に、公開されたラベル画像から鋳巣領域ごとの色を変更しています。

![概要](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2990701/5020f5bb-6561-b531-1408-82383b74ebee.png "概要")

またX線CT撮影で再構成された3次元データには、「アーチファクト」とよばれるノイズが含まれることがあります。撮影方法の工夫により軽減可能なものもありますが、発生を完全に防ぐことは難しいため、再構成画像から領域を推定する際にはアーチファクトの影響を考慮する必要があります。今回取り扱う課題では一部の再構成画像において、以下のような縞模様状のアーチファクトが発生していました。このようなアーチファクトによる陰影の中から、数ボクセル[^voxel]しかないような非常に小さい鋳巣を検出することが求められます。


![アーチファクトの例](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2990701/9aeeb4d1-4c1f-4f7a-5eb6-a11bddcd7cf7.png "アーチファクトの例")

## 3. 提案手法概要
本提案手法では、以下の3段階のステップで、鋳巣領域の推定を行いました。
* Step1. 検査対象物の輪郭形状の推定
* Step2. 鋳巣領域の推定
* Step3. 鋳巣領域のラベリング

以下各ステップについて詳しく見ていきます。

## 4. (Step1) 検査対象物の輪郭形状の推定

はじめに検査対象物の輪郭形状を推定します。この処理は対象画像に対して大津の2値化[^otsu]を行い、検出された前景の最外輪郭を検査対象物の輪郭として推定します。
再構成画像において、検査対象物の外側には検出対象の鋳巣は存在しません。本処理は、検査対象物の外側領域を、鋳巣領域推定の処理対象外とすることで、Step2の鋳巣検出モデルの精度の向上を狙った前処理となります。

## 5. (Step2) 鋳巣領域の推定

Step1で推定した検査対象物の内側領域を対象に、CNNをベースとする独自のニューラルネットワークモデルで鋳巣領域の推定を行います。

### ニューラルネットワーク構造
本手法ではCNN構造が途中で3つに分岐する、以下のニューラルネットワークを利用しました。

![ニューラルネットワーク構造](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2990701/a90684e6-30e4-ad05-2abf-39b2a4e3d8a0.png "ニューラルネットワーク構造")

通常、CNNを用いた特徴抽出では、段階的に特徴マップの解像度を下げていくことが一般的です。この特徴抽出の過程で細かい位置情報が失われていく一方で、より広範囲のコンテクストを考慮した推定を行うことが可能になります。
一方、鋳巣領域の推定に関しては、基本的には周囲の画素値との比較により推定でき、あまり大域的な情報は不要と想定されます。また本課題で対象としているCT画像には、非常に小さい鋳巣も含まれており、ボクセル単位まで細かく領域を推定する必要がありました。このため、位置情報の詳細が失われてしまう低解像度の特徴量による特徴抽出を積み重ねる方法は適していないと考えられました。このため、低解像度での特徴抽出以外に、入力画像と同じ解像度での特徴抽出と入力画像より高解像度での特徴抽出を同時に行い、これらをすべて考慮して領域の推定を行うネットワーク構造としました。このような入力画像より高解像度の特徴マップを利用するという構造は、超解像のためのネットワーク(たとえばSuper-Resolution CNN[^srcnn])などでも利用されています。

### アーチファクト対応
前述のとおりX線CTの撮影画像の中には、アーチファクトと思われるノイズが発生しているものが含まれます。しかしながら、公開されたデータの中でアーチファクトが発生しているのは全体の中のごく一部しかありません。このため、公開データをそのまま利用して学習を行う方法では、アーチファクトの陰影の大半が鋳巣領域として誤検出するようになってしまいました。
本手法では、学習データを取り出す際に、アーチファクトが発生している画像データが多く選ばれるようにサンプリングの比率を調整することで、アーチファクトの陰影に対する誤検出を抑制しました。

### その他

[細胞領域推定に関する記事](https://qiita.com/mhrt-tech-biz-blog/items/38751db7ef41bb5435d5 "限定的・局所的なアノテーションデータでの学習~細胞領域の推定~")に記載の手法と同様、以下のような工夫も行っています。
* ある断面の鋳巣領域の推定に、前後に隣接する断面画像を含め計5枚を入力データとして利用
* 損失関数にはDice係数を利用
* 検査対象領域の内部領域のマスクを「学習領域」マスクとして利用し、損失関数の計算時には、この領域に該当するピクセルのみに限定

https://qiita.com/mhrt-tech-biz-blog/items/38751db7ef41bb5435d5

## 6. (Step3) 鋳巣領域のラベリング
本手法では、最終ステップとして、推定された鋳巣領域を3次元的に連続している鋳巣ごとに分割します。
Step2で推定された鋳巣領域の3次元推定結果に対して、面、辺、頂点のいずれかが接している鋳巣領域が同一ラベルになるように3次元ラベリング処理を行うことで、個々の鋳巣領域を分離しました。

## 7. 推定結果
以下に、本手法による推定結果の一部を示します。左列が入力画像(入力断面画像5枚のうちの中央のもの)、中央列がコンテストで公開された正解ラベル、右列が、本提案手法による推定ラベルになります。正解ラベルと推定ラベルは3次元的に連続している鋳巣ごとにランダムな色で表示していますが、両者で色の対応はとっていません。
![推定結果](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2990701/57678474-5b1d-6567-1291-9067c44e2981.png "推定結果")
小さな鋳巣や細かな形状を含め、正解ラベルと似た形状に推定できているように見えます。また拡大図を見ると、アーチファクトのノイズに隠れた鋳巣を一部とはいえ検出していることが確認できます[^mushiro]。
なお、下段の画像中央にある、円形の領域は、検査対象物内部を貫通する穴の領域であり、正確には、鋳巣の領域ではないと思われます。しかしながら本課題では、欠陥ではない箇所含め検査対象領域内部に存在する空洞をすべて出力することが求められていたため、その指定に従っています。

## 8. おわりに
本記事では、X線CT画像による工業製品内部の欠陥領域抽出のための提案手法において、当社が独自のニューラルネットワーク構造を設計する際に考慮した点などを紹介しました。
深層学習を用いた推定では、ネットワーク構造のベースに、学習済み重みが公開されている有名な既存手法を利用し、転移学習などを活用して学習を行うことが多いです。しかし一般にセマンティックセグメンテーションのために公開されている手法は、汎用的ではあるものの、今回の課題のように高精細な領域推定を行う手法としては最適と言えません。取り扱う課題によっては、本手法のように1からネットワーク構造を設計することも検討するべきだと考えています。
ニューラルネットワーク構造を選択あるいは設計する際には、上記のように取り扱うデータのことをよく分析し、適した構造を採用することが必要になります。本記事が、その一助になれば幸いです。

情報通信研究部　橋本　大樹


[^alcon2019]: 橋本大樹, 水谷麻紀子, 杉原裕規, 松下裕也, 永田亮, 重信薫, 永田毅, "U-Netベースの新しいニューラルネットワーク構造による鋳巣検出～ 複数解像度による特徴抽出を組み合わせた鋳巣の検出～, " 外観検査アルゴリズムコンテスト (2019).
[^alcon]: 精密工学会　画像応用技術専門委員会　主催
[^unet]: O. Ronneberger, P. Fischer and T. Brox, "U-Net: Convolutional Networks for Biomedical Image Segmentation," in Medical Image Computing and Computer-Assisted Intervention (MICCAI), Springer, Cham, vol 9351, pp 234–241 (2015).
[^voxel]: ピクセルの3次元版。3次元データの最小単位。
[^otsu]: N. Otsu (1979). "A threshold selection method from gray-level histograms," in IEEE Transactions on Systems, Man, and Cybernetics, vol 9, issue 1, pp 62–66 (1979).
[^srcnn]: C. Dong, C. C. Loy and X. Tang "Accelerating the Super-Resolution Convolutional Neural Network," in ECCV, 2016. Lecture Notes in Computer Science, vol 9906. Springer, Cham (2016)
[^mushiro]: 目視では、本手法による推定結果の方が、入力画像で確認できる鋳巣領域らしき陰影を正しく反映しているようにすら見えます。