機械学習を用いた空洞内面検査ソフトの開発○荒木 隼人高エネルギー加速器研究機構 加速器研究施設
1.はじめに超伝導加速器の心臓部である超伝導空洞は、さまざまな原因によってその性能を制限される。その 1つが溶接部内面に発生する欠陥であり、これを発見・除去するために内面検査装置が広く使われている。
これは内面から写真を撮影することで欠陥を発見するものであるが、撮影された写真の中に欠陥が含まれているかどうかは人間が判断している。
今回、機械学習を用いた物体検出アルゴリズムによって欠陥の有無を自動で判断できるソフトウェア
図 1 内面検査装置で発見された欠陥を開発したので報告する。
2.超伝導空洞の内面欠陥

3.ソフトウェアの作成

ニオブ製の超伝導空洞は、プレス加工した板材をソフトウェアの制作は、GUI のないプロトタイプ真空中で電子ビーム溶接することで製造される。こと、本番アプリケーションの 2 段階で開発した。この際、溶接パラメータや不純物の混入などの原因にの節では開発の流れを簡潔に記し、使用したツール

よって表面に凹凸が形成されることがある。例えば等については次節で述べる。

内表面に常伝導の不純物が存在すると、RF の表面電流によって非常に大きなジュール熱を生み、周辺部

3.1 プロトタイプ開発を温めることで熱的超伝導破壊を引き起こすことに試作段階では、参考記事 [2]で公開されているコーなる。このように、空洞性能に影響を与える内面のドを Google Colaboratory [3]上で動作するよう微修正異常を欠陥と呼んでいる。

し、また記事と同じ方法で欠陥を含む画像 76 枚から欠陥による性能制限を克服するために開発された学習用データセットを作成した。このプロトタイプのが空洞内面検査装置(京都カメラ)である [1]。このでの結果は定量的に評価していないが、この時点で装置を使うことで、空洞内面をカメラで撮影して欠概ね欠陥の検出には成功していた。また、プロトタ

陥を発見し、局所研磨装置で欠陥を研磨し除去するイプに着手してから 1 日足らずでテストすることがことができる。これによって性能の限界を大きく引できた。

き上げることができるだけでなく、空洞内面の詳細な観察結果を溶接や電解研磨の工程にもフィードバ

3.2 本番アプリケーション開発
プロトタイプで作成した学習・推論部分はそのまックできるようになった。内面検査装置で実際に発見された欠陥の画像を図 1 に示す。

まで、他に前提となるソフトウェアが必要ないよう必要な機能を GUI で実装した。このアプリケーショ

しかしながら、この装置で撮影された画像は全てンは全て python で作成し、GUI 操作や学習を含む全人間の目によって欠陥の有無を判断してきた。9 セての機能が同じコードで Windows, MacOS, Linux のル空洞 1 台の検査で撮影される画像は約 4000 枚で3 つの OS で動作する。主な機能は次の通りである。

あり、その中に欠陥が 1 箇所でも見つかればそこで

l

学習性能が制限されてしまう恐れがある。また、除去す画像と欠陥の位置情報のペアからなるデータセべき欠陥であるかどうかの判定は難しく、検査の精ットから、検出モデルを学習する。

度は熟練作業者の能力に依存しているのが現状である。

l

推論
学習したモデルを検査画像に適用し、検出結果を出力する。

l

結果の確認・編集結果になっている。これは、熟練者 A と比べて欠陥検出された欠陥の位置を表示し、その結果を学習と判定する基準が厳しいということを表しているも用のデータセットとして出力する。また，手動でのと考えられる。

欠陥位置の追加・編集・削除を行う。この画面のスクリーンショットを図 2 に示す。

検出ソフトの結果は正答検出率が 3 者の中で最も高い一方で、正答含有率はそれほど高くないという結果になった。これは、見逃しを少なくするために誤検知を許容するという方針で閾値を低く設定していることによる。この結果によって、最終的な人間の判断を前提とするのであれば十分な性能を有しているといえる。
表 1 性能評価結果

正答検出率

図 2 確認・編集画面
正答含有率

3.3 性能評価
作成したソフトウェアの性能評価として、人間による検査結果との比較を行った。
実験には A，B，C の 3 名に協力を依頼した。A は内面検査の熟練者で、現在全ての内面検査を担当している。今回は欠陥の客観的な定義が困難であるたB
44.0%(33/75)89.5%(34/38)C
46.7%(35/75)56.3%(45/80)

検出ソフト
81.3%
(61/75)52.7%(89/169)

4.使用したツール等
今回、このソフトウェアを開発するにあたって使用した技術やツールを列挙する。
l Faster R-CNN [4]メインとなる物体検出アルゴリズム。ニューラル

め、A の判断を欠陥の定義とした。B は初心者で、ネットワークを end-to-end で用いた物体検出アル

内面検査画像を見るのは今回が初めてであるため事あるが、最近数年間は内面検査を担当していない。

ゴリズムとして最初に発表された。
l PyTorch [5]Python で機械学習を実装するためのライブラリ。

評価に用いた画像は、過去の内面検査レポートに機械学習に必要な道具が揃っていて、今回はこれ含まれている約 4,000 枚の画像であり、この中にはに既に定義されている faster R-CNN の学習済みモ欠陥が写っていない画像も含まれている。これらのデルを使用した。
l CUDA [6]
GPU を汎用計算に使うためのプラットフォーム。

前に簡単な説明を与えた。C も内面検査の熟練者で中から 100 枚をランダムで抽出し、テストデータとした。さらにテストデータを除いた画像のうち、欠陥を含む画像 1,566 枚を学習用データとして用いた。
A, B, C の 3 名と検査ソフトにそれぞれ欠陥検出してNVIDIA 社が自社製 GPU 用に開発している。
l PySimpleGUI [7]Python で GUI を実装するためのライブラリ。非常もらい、A を定義として B, C および検出ソフトの正に少ないコード量で記述することができ，また答検出率と正答含有率を比較する。それぞれの定義

Windows, MacOS, Linux のマルチプラットフォー

評価方法は次の通りである。同じテストデータを正答含有率 = (正答検出数 + 正答重複数) / 正答数

ムに対応する。
l Google Colaboratory
Jupyter notebook と同様にブラウザ上で python がである。正答検出率が高いほど欠陥の見逃しが少な実行できる環境だが、Google のサーバ上で動作さく、正答含有率が高いほど誤検出が少ないというこせられるサービス。ローカルへの環境構築が不要とになる。

で、サーバの強力なハードウェアを使用することは、正答検出率 = 正答検出数 / 正答数以上の条件で検出性能の比較を行った結果を表 1ができる。に示す。初心者 B は両方の指標で 50%を下回っているが、これは内面検査の難しさを考えれば筆者の体5.まとめと展望感と矛盾しないものである。熟練者 C は正答検出率

機械学習を用いて超伝導加速空洞の内面欠陥を自が高くないものの、正答含有率が非常に高いという動で検査するソフトウェアを開発し、その性能評価によって従来の人間による検査と同程度の精度があることを確認した。まだ改良の余地はあるが、実用可能なレベルに達していると考えられる。
今後、物体検出の基本的なテクニックである学習データ水増しやハイパーパラメータの調整などの方法でさらなる精度向上を目指している。また、実際にこのソフトを実用化するにあたっての利便性向上として、検査結果のレポートを自動生成する機能などの追加を予定している。さらに、過去の膨大な画像データを再検査し、情報のデータベース化や再解析を行って新たな知見が得られるのではないかと考えている。
参考文献[1] Y. Iwashita et al., “Development of high resolution
camera for observations of superconducting
cavities,” Phisical Review Special Topics Accelerators and Beams 11, 093501 (2008).
http://dx.doi.org/10.1103/PhysRevSTAB.11.093501[2] 【人類最難関の挑戦】サイゼリヤの間違い探しを現代技術を駆使し片面だけで解く（深層学習）
https://qiita.com/grouse324/items/9f49dafc97b7886
9476f[3] https://colab.research.google.com/notebooks/welco
me.ipynb?hl=ja[4] Ren Shaoqing et al. "Faster R-CNN: Towards ealtime object detection with region proposal networks"
Advances in neural information processing systems,
28 (2015). https://arxiv.org/abs/1506.01497[5] https://pytorch.org/[6] https://developer.nvidia.com/cuda-toolkit[7] https://pysimplegui.readthedocs.io/en/latest/