見出し画像

【AIで製造業の現場を支援する】blue assistantを支える技術

先週、当社Queueは類似した工業図面の検索を図面で行えるSaaS「blue assistant」をリリースしました!
プロダクトについてはこちらの記事を参照→類似図面検索ツール 「blue assistant」 をリリースしました!|Queue Inc.

この記事では、プロダクトの裏側で使われている類似図面検索という機能とそこで使われている機械学習(AI)による画像検索技術の動向について語ろうと思います。

図面による図面の検索

検索...文書やデータの中から、必要な事項をさがし出すこと。
(広辞苑)

「検索」は、公私・アナログ/デジタルを問わず目の前の情報を処理するための最も基本的なプロセスです。特に繰り返し行う検索作業について効率の良い手段を持っているのといないのとでは、生産性とハピネスに決定的な差が生じてしまいます。
私たちの日常における調べ物は、ずいぶん前にGoogleが圧倒的に効率化してくれました。気になる本を入手するためにわざわざ図書館に行かなくても、誰かの書いたまとめで満足することができるようになりました。しかし、Googleの圧倒的利便性を持ってしても検索に時間がかかってしまうことは多々あるのではないでしょうか。

その原因の候補の一つは、「とりあえずググる」のが当たり前になった現在あまり意識しないことかもしれませんが、Googleが提供するのは語彙によるメディアの検索だということです。語彙でうまく表現できない、例えば「なんかこういうかんじの商品」を見つけるのは画像によるメディアの検索に特化したpinterestの方が得意かもしれません。他にもユニクロやZOZOTOWNなどのアパレルECサイトでは「いけてるファッションスナップ画像」から似た商品を検索する機能が用意されています。要するに検索の方法にも時と場合によって向き不向きがあるということです。

もう一つがConfidentiality(守秘義務)の問題です。そもそもインターネットに落ちていないコンテンツはGoogleでは拾い出せません。守秘義務が伴うコンテンツプールに対して検索を行うのであれば、特定の人だけに門戸を開く「図書館」が必要です。

----------------------------------------------------------------------------

製造業の現場でも、新しい商品の設計プロセスで既存図面を参照する際に、これら二つの問題によって非効率になってしまっています。第一に、多くの図面は社外秘のものですから、公の検索エンジンにあやかることはできません。更に、

・昔納品した図面は会社の書庫に眠っていてデジタル化されていない
・キーワード検索機能のある図面管理ソフトを使っているが、そもそもキーワード(ex: 顧客名、図面番号)を手動で紐づけなければいけない
・生き字引レベルの知識を持っていなければキーワードがわからない
 =若手には検索作業ができない

などの問題によって、検索業務を効率化することは難しくなっています。
そこで、メディア(=図面)によるメディア(=図面)の検索を製造業にも応用することで、図面検索をより直感的・効率的にすることを目指したのがblue assistantです。

画像検索における機械学習の活用

ここからは(深入りはしないですが)少し技術的な話になります。
先ほど触れたpinterestなどのサービスのように、画像による検索は産業応用も進んでいる他、研究界隈でも盛んに取り上げられるトピックです。

手法はたくさんありますが、多くのアプローチで共通している考え方はアイテム(=画像)をコンパクトな数値情報に落として、その情報に対して「距離」を定義して、それが近ければ似ている、遠ければ似ていないと判断する

というものです。コンパクトな数値情報に落とすためには、最近はもっぱらニューラルネットが使われます。この枠組みで、似ていると分かっているアイテム同士を近くに、似ていないと分かっているアイテム同士を遠くにマッピングするようNNを訓練することを距離学習(=Metric Learning)といいます。blue assistantの検索エンジン開発にも、この距離学習の手法が取り入れられています。その代表的な手法を何個か紹介します。

SiameseNet + Contrastive Loss
時系列的に最も初期に提案された代表的な手法です。二枚の画像を一組としてNNに入力し、それらの画像が同じものを表しているか、そうでないかを0~1のスコアで出力します。Contrastive Lossという損失関数に対してNNのパラメータを最適化します。

Triplet Loss
三枚の画像を一組としてNNに入力します。三枚の画像はそれぞれ基準画像・似ている画像・似ていない画像という役割があり、NNはTriplet Lossを最適化するように訓練することで基準画像と似ている画像の距離を近づけ、基準画像と似ていない画像の距離を遠ざけるようになります。三枚のペアの「似ている・似ていない」はあくまで相対的な判定でよいので、contrastive lossより多くの情報量を学習データに込めることができます。

画像1


Contrastive Loss とTriplet Lossの図解
(出展: Constellation Loss: Improving the efficiency of deep
metric learning loss functions for optimal embedding
)


Margin Loss(SphereFace, CosFace, ArcFace)
Triplet Lossは距離学習の定番になっているのですが、手持ちの画像の中から考えうる三枚のペアの組み合わせが爆発的に多くなってしまうことから、より教師として意味のあるようなペアを選ぶのに苦労することが多いと言われています。
(たとえばダルメシアン二匹と芝犬だったらいい問題かもしれませんが、ダルメシアン二匹とりんごだったら区別できて当たり前です)
そこでより簡単にNNが訓練できるノウハウのある画像識別の問題に一工夫を加えて距離学習をしてしまおうという発想がこれらの手法です。それぞれ少しずつ違いますが発想はかなり似ています。論文の引用はSphereFaceが一番多いですが、巷の記事を見る限りArcFaceが一番人気みたいです。
どれも顔認識の文脈で提案された手法ですが、距離学習全般に使えると思います。実際に工業図面に対して試してみて効果がありました。

画像2

ArcFaceの図解. Softmax(通常の識別問題の出力に使われる計算)を
改造して、色の違うクラス同士を意図的に固まらせるように学習する
(出展:ArcFace: Additive Angular Margin Loss for Deep Face Recognition)

SoftTriple Loss
上のMargin Lossと同じく、馴染みの画像識別の問題設定に少し手を加えて距離学習をする手法です。通常の画像識別のためのSoftmax Lossを最適化することが、データが単純だという仮定のもとではTriplet Lossの最適化をするに等しいことの証明が論文中でなされています。SoftTriple Lossは、データがもっと複雑でもうまく学習ができるよう設計された損失関数です。
ちなみに、SoftTriple Lossはこの記事の約一週間前に発表された手法です。現在進行形でベスト更新がなされているのが肌で感じられますね。まだユーズケースがあまりありませんが、ひょっとしたらSoftTriple Lossが将来主流になっていくかもしれません。

----------------------------------------------------------------------------

こうした手法でどの程度検索がうまくいくかというと、
公開データセットの200種の野鳥のデータ(CUB-2011)や196種の車のデータ(CARS196)では、半分のデータを使って学習を行うと、残り半分のニューラルネットにとって未知のカテゴリのデータを90%程度正確に上位に表示することができます。
(ここでの精度がどういう数字なのかは、厳密な議論し出すと少し複雑なので割愛します。。)

では工業図面ではどうか?というと、形状やレイアウトにばらつきがあり、更に細かい違いに着目しなければならないという意味で、上で触れたデータセットよりも難易度は高いと思います。
(Google 画像検索で industrial drawings で検索すると具合がわかると思います)
それでも、現段階で具体的なスコアを公表することは難しいのですが、人間が見て満足いくクオリティには達していると自負しています。

画像4

画像データベースから高速に検索結果を算出するためのANNS(Approximate Nearest Neighbor Search)

モデルの学習がうまくいったら検索をシステムとして実現する段になります。ここで問題になってくるのが対象枚数による検索速度の律速です。
似ているアイテムを探すには、

検索元の画像をニューラルネットに通す
検索対象の画像との類似度を計算して、似ている順にソートして返す

という段取りが必要です。対象の枚数が少ないうちは素早く実行できるのですが、これを数万件~数十万件の検索対象の図面に対していちいち愚直に実行するとかなり長い時間がかかってしまいます。
そこで上位に表示されなさそうな(=数値上見るからに似ていなさそうな)図面を検索時に要領よく枝刈りして、枚数が多くても十分早く検索結果を算出できるANNS(Approximate Nearest Neighbor Search)という技術を採用しています。Facebook謹製のFaissというライブラリを利用して実装しています。

画像4

上位k件の類似アイテムを検索するのにかかる時間(faissは水色のグラフ)
アイテムの量が増えても検索時間を短く抑えることができている
(出展: Billion-scale similarity search with GPUs)

まとめ

以上、画像による直感的な検索システムの意義と実現方法についてご紹介させていただきました。blue assistantを開発するにあたってはこのほかにも分野ならではの工夫があるのですが、そちらも折を見て公開できればと考えています。

この記事が気に入ったらサポートをしてみませんか?