目次
はじめに
弊社では、上記のような印刷検査画像の分類タスクに対して独自のDeep Learningモデルを開発するなど、印刷分野に応用するための研究開発を行っています。今回はこれまでの研究開発で効果を示した”Siamese Network”について紹介します。
Siamese Networkはいわゆる「距離学習」に使用されているアーキテクチャであり、変化検知モデル (Change Detection model)にも応用されており、弊社の研究開発チームの調査で、印刷検査画像へも効果的に活用できることが分かってきました。
今回は、社内での議論をまとめるとともに、個人的にこの手法の素晴らしい点や注目すべきポイントについてまとめてみました。
Siamese Networkの紹介となる主な論文はこちらです。
Koch, Gregory, Richard Zemel, and Ruslan Salakhutdinov. "Siamese neural networks for one-shot image recognition." ICML deep learning workshop. Vol. 2. 2015.
https://www.cs.cmu.edu/~rsalakhu/papers/oneshot1.pdf
Siamese Networkの紹介
読み方
まず、初見で悩んでしまう"Siamese Network"の読み方ですが、英語圏ではSiameseはサイミーズと発音することが多いようです。ただ、Siamese catのことを日本では一般に「シャム猫(ネコ)」と呼ばれ、Siameseは「シャム」に対応していることから、日本語ではSiamese Networkをシャムネットワークと呼ぶのが自然と思います。
日本国内の研究発表では「シャム ネットワーク」が大勢で、「サイミーズ ネットワーク」も稀に聞かれます。
どんなもの?
そもそも、Siameseとはどういう意味でしょうか?goo辞書から引用するとこの意味で使われています。
- 2〈双生児が〉体の接合した
ネットワーク構造を見ると、その意味がよく理解できます。
2つの特徴の距離を求めるために、それぞれの入力を同じサブネットワークを通ることで特徴ベクトルに変換し、それを活用する、という方法をとっています。
このサブネットワークが特徴(機械学習の意味での”特徴量”と、文章の中で「注目するべき点」としての”特徴”が分かりにくいですね。今回は後者です)で、同じ形状をしているだけではなく、パラメータも共有しています。この「パラメータを共有する」という点は以降のSiamese Network系のアーキテクチャに引き継がれています。
これにより、2つのインプットからの特徴量が途中まで全く同じ処理をされることになり、それらの間の違い(あるいは類似)を比べやすくなります。このあたりの「途中まで全く同じアーキテクチャを共有し、途中から分岐して距離を求める」あたりをSiameseと表現しているわけですね。
由来と歴史
第3次AIブーム以降ではSiamese Networkに関する論文として上記の論文を取り上げましたが、Siamese Network自体はこれよりも前に提案されています。引用をたどってみると、2005年の時点で、顔を識別する距離学習の手法が提案されています。
Chopra, Sumit, Raia Hadsell, and Yann LeCun. "Learning a similarity metric discriminatively, with application to face verification." 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR'05). Vol. 1. IEEE, 2005.
この中では、「同じ関数Gの同じパラメータWをそれぞれの入力に対して処理するのに使用される。これは、Siameseアーキテクチャと呼ばれている」と紹介され、さらに以下の1993年のNIPSの論文が引用されています。
Signature Verification using a "Siamese" Time Delay Neural Network
この論文では手書きのサイン (signature) の識別に用いるという研究ですが、さらにこの中ではTDNN (Time Delay Neural Network) を用いた音声認識の研究として、1988年のジェフリー・ヒントン氏の論文が引用されています。現在のDeep Learningブームのはるか前に、このアーキテクチャが提案されていたことは驚きです。
距離学習 (metric learning)
Siamese Networkが新しいのは、ネットワークの構造がだけではなく、対になっているネットワーク同士の出力を距離学習によって最適化することです。
Contrasive Lossと呼ばれる損失関数を使用し、2つの入力に対して距離的に近いものか遠いものかを認識するように最適化します。単純な分類タスクをDeep Learningで実験する場合と比べて、データセットの作りやニューラルネットワークの構造の作りが異なるため、手軽に試しにくい点ではありますが、多くのタスクで本質的に理にかなった方法であるとも思います。
産業界への応用
印刷業界などの産業界への応用について考えてみたいと思います。
このモデルは以下のように設計されています。
- 2つの画像を入力
- 距離学習を行う
- 新規の未知クラスに対して表現を獲得できる
この特性をうまく生かした応用例が様々に提案されています。
人物などの情報の特定
距離学習によるOne-shot Learningの有名な応用例の1つが顔認証です。事前に大量の顔画像データで学習し、埋め込むための空間を作っておくことにより、新規の顔画像を登録後、少ないデータ数で予測をすることができるようになります。これが顔認証の考え方と相性が良く、建物の入館審査や電子機器のある種の生体認証に使われています。
こうした考え方を応用することで、例えば
- 印刷物に写った人物や物体が狙ったものとして認識されるかの検査
- これまでの出版データと組み合わせることで売れた出版物と傾向が似ている人、キャラクタの表紙を選ぶようなマーケティング的活用
のような活用ができるかもしれません。
変化検知モデル
"Change Detection model" 変化検知モデルというものがいくつも提案されています。この応用先としては、様々なものが提案されています。
- 衛星画像からの土地利用の変化検知
- 道路上の放置残留物の検知
- 骨とう品など物体の損傷の検出
基本的には、セマンティックセグメンテーション(領域検出)タスクとなります。通常は変化が無いものの、稀に起こる変化を検出するものが多いため、異常検知手法を応用したり、データの水増し方法を工夫するなどがポイントとなります。
印刷検査への応用
2つのインプット間の類似度が学習できるということは、どの程度変化があったかを学習することにも応用が効くという発想が出てきます。そこで例えば、印刷の正解データに対して実際の検査段階での画像を照合することで差分(=汚れなどの検知すべき物体)を把握することができるようになることが期待されます。
印刷検査への応用としては、具体的には2つが挙げられます。(実はこの2つを組み合わせたEnd-to-Endモデルも考えられなくは無いですが、後述するように既に普及している検査装置を活用するという観点で、ここではあくまで別の工程として考えています。)
- 欠陥領域の検出(インライン検査、オフライン検査)
- 検出領域の分類(目視ベリファイ、目視検査)
1.欠陥領域の検出
インライン検査やオフライン検査と呼ばれる検査工程で行われているのが、欠陥領域の検出処理です。一般に、印刷検査では以下の様なルールベースの画像処理で検出が行われます。
- 撮像
- 位置合わせ
- 差分処理
- ノイズ除去
- 領域検出
- 装置制御
一見、この工程だけで検査が完了するようにも思えますが、以下の様に印刷の検査は多くのノイズとの戦いになります。
印刷物のスキャン画像には様々な要因でノイズが混入しており、単純な1画素間の差分処理では本来検出したい欠陥箇所を特定することは困難です。位置合わせ、差分処理、ノイズ除去など、それぞれのプロセスで様々な工夫を行い、検出するにふさわしい結果を得るために検査装置メーカー各社が工夫を凝らしています。
そのような抽象度の高い比較を行う場合にDeep Learningを活用するというのは自然な発想です。様々なDeep Learningのモデルの中で、Siamese Networkは基準となる画像に対する抽象的な画像特徴を距離学習できるという点で、印刷などのパターンマッチングを必要とする検査に対して有効に機能すると思われます。
しかしながら、Deep Learningを検出に対して用いる場合は、従来型のルールベース画像処理に対して処理速度の問題や、精度保証の問題があるのと、ハードウェアベースでの画像処理ではDeep Learningの実装上のコストが見合わないこともあり、実利用は進んでいないのが現状です。
2.検出領域の分類
「2.検出領域の分類」については、より現実的です。現在でも一部の印刷製造工程では、ルールベース画像処理によって検出した後、目視による2次的な検査工程を踏まえることで歩留まりと精度の両立を目指しています。この2次的な検査工程は、画像分類タスクに置き替えることが出来るため、Deep Learningの活用がそのまま進みやすいと考えています。
この分類タスクが十分な精度で自動化できた場合は、単に目視ベリファイ工程を自動化できるというだけではなく、過検出の抑制により検査精度をさらに高めることが出来たり、検出した欠陥の品種を時系列的に解析することにより、製造装置や人材配置のマネジメントに活用できる情報が得られたりなどの応用が考えられます。
分類タスクにおいても、上の例のように、基準となる画像(マスター画像)と欠陥特徴が埋め込まれた検査対象画像(ターゲット画像)がついになって比較する必要があります。例えば、ごみの欠陥品種である場合に、ターゲット画像だけを見てもそれがもともとあったデザインなのか、欠陥なのかという判断はできません。あくまで基準となる画像との比較によって分類の答えが出るという点で、欠陥領域の検出と同じです。
実際にDeep Learningのモデルを設計する場合は、Siamese Networkアーキテクチャを踏襲した2つのインプットを持つ構造を採用しつつ、出力層には分類タスクに用いられるSoftmax関数を使用した層を利用するなどの工夫が必要となります。
まとめ
今回は、Siamese Networkアーキテクチャに絞って技術的に考察している内容についてまとめました。
弊社では、Siamese Networkアーキテクチャベースの独自のDeep Learningモデルを開発するなど、印刷分野に応用するための研究開発を行っています。これまであまり更新できておりませんでしたが、少しずつ社内の知見をまとめて行きたいと思います。