【2020】機械学習エンジニアコースでインターンシップを開催しました!

今年も、昨年に続いてインターンシップ「機械学習エンジニア(Machine Learning Engineer, MLE)コース」を実施しました。 「画像を用いた異常検知アルゴリズムの精度向上」をテーマに実際のプロジェクトに近い形で行ったインターンシップの模様をご紹介します!

f:id:brainpad-inc:20201019145731j:plain

こんにちは。アナリティクスサービス部の栗原です。
昨年度*1*2に続き、機械学習エンジニアコースのインターンシップを開催しましたので、その様子をお伝えしていきます!

インターンシップの紹介と取り組んだテーマ

8月18日(火)~9月11日(金)の4週間で実施し、3名の学生の皆さんに参加いただきました。

今年のテーマは、製品の検品自動化を目的とした「画像を用いた異常検知アルゴリズムの精度向上」です。

学生の皆さんには、ブレインパッドでの働き方をリアルに体験してもらうために、極力実際のプロジェクトに近い形で進行しました。

進め方、設定

  • クライアントへのヒアリング・課題設定などのビジネス理解から、手法のサーベイ含む分析設計、モデリング、報告・API実装までの一連の流れを体験いただく(下記図参照) f:id:bp-writer:20201007130544p:plain:h90

  • 異常検知の既存モデルを改善していただくために、学習済みの既存モデルを提供。ただし、具体的な課題探索は学生の皆さんが実施

  • 昨今の状況を鑑みて、最初と最後の各1週間をオフラインとし、間の2週間はオンラインで実施するという、オンラインとオフラインの融合型で開催
    • オフライン時は、マスク着用、毎朝の検温や定期的なアルコール消毒等新型コロナウイルス感染拡大対策を徹底

体制

  • クライアント役としてアナリティクスサービス部副部長
  • フォロワーとして若手社員(入社2年目~5年目)4名
    • 朝会/夕会各30分+日中1時間の自由相談時間を設定

実施概要

実際のプロジェクトに合わせた一連の流れを、下記のスケジュールで進めました。
全ステップを4週間で行うという、濃密なスケジュールでした。
当社社員のフォロワーが適宜アドバイスをしつつも、基本的には学生の皆さん主体で進めていただきました。

f:id:bp-writer:20201007130916p:plain:h140

以降、それぞれのステップにおける具体的な実施内容を簡単にご紹介します。

ビジネス理解

RFPを学生の皆さんに共有し、読み込んでもらったあと、当社社員のクライアント役に対して要件ヒアリングを行ってもらいました。

 「実際の製品における不良品と良品の割合はどのくらいか?」
 「アルゴリズムの実行速度の許容範囲は?」

など、ビジネス理解のための質問や、アルゴリズム選定のための質問、今後の展開についての質問など、様々な観点で整理してヒアリングを行ってもらいました。
ヒアリングを踏まえた上で実施計画書を提出していただき、プロジェクトがスタートしました。

データ理解

当社のプロジェクトで実際に用いたデータを扱ってもらいました。
データ形式の確認やデータ数の集計をはじめ、実際に画像を見ながら学生の皆さん同士でディスカッションをしていました。

f:id:bp-writer:20201019103225p:plain

既存モデル検証・分析設計

既存モデルの検証として、具体的にどんな種類の不良が検知できていないのか、それらの特徴は何か、などを整理してもらいました。
また、手法調査では計20本以上の論文を調査してもらい、その中から既存モデルの課題に最も合うと考えられる手法を各人に選択してもらいました。

データ加工・モデリング・評価

分析設計に従い、Google Compute Engine 上で実装を進めてもらいました。
手を動かすのは学生の皆さんがメインでしたが、適宜困ったことなどがあれば、オンライン・オフラインでフォロワーに相談をしてもらいました。 f:id:brainpad-inc:20201019101421p:plain

f:id:bp-writer:20201007131438p:plain:h300

報告・API実装

今回のインターンでは、中間報告と最終報告の計2回、報告を行っていただきました。

f:id:bp-writer:20201007131741p:plain
↑中間報告(オンライン)の様子

f:id:bp-writer:20201007131813p:plain:h240
↑最終報告(オフライン)の様子

各手法の概要

今回学生の皆さんが最終的に実装した手法は計4つです。それぞれ分担して進めてもらいました。
各手法に関して、簡単にご紹介します。

Structural Similarity (SSIM)*3

画質評価指標のSSIMを、既存モデルの損失関数として採用するというシンプルなアイデアです。
既存モデルでは、binary crossentropyを損失関数としていました。 binary crossentropyでは、ピクセルごとに算出されるため、画像全体の類似度を算出できないというのが課題でした。
一方で、SSIMは画像をwindowに区切ってSSIMを計算し、画像全体にwindowを少しずつずらして各SSIMの平均を算出するので、人間の感覚に近い誤差を検出できます。

f:id:bp-writer:20201007132210p:plain:h70

下記図の左の画像は元画像、右上は元画像を均等に明るくした画像、右下はランダムに明るくor暗くした画像です。*4

f:id:bp-writer:20201007132936p:plain

人が見たとき、右上の画像の方が元画像との距離は近いように感じるかと思います。
ただし、MSEを計算するとどちらの画像も同じ値になります。
一方、SSIMを計算すると右上の画像の方が距離が近い=人の感覚と近い結果となります。

Attribute Restoration Network (ARNet)*5

元画像に加工(スケール変更・グレースケール・ランダム回転)を加えた画像から元画像を復元するようにモデルを学習させます。
既存モデルのアルゴリズムよりも復元のタスクを難しくし、入力画像と出力画像の差異を大きくすることで、正常データと異常データの復元エラーのギャップ拡大による異常検知の精度向上が期待できる手法です。 f:id:bp-writer:20201007133152p:plain

Fully Convolutional Data Description (FCDD)*6

今回検証した手法の中で、唯一の教師あり学習です。Deep Support Vector Data Description (DSVDD)*7の派生手法になります。

f:id:bp-writer:20201007133235p:plain

Fully Convolutional Networkを利用して位置情報を保持することで、出力画像をそのままヒートマップとして利用可能にします。元画像と同解像度のヒートマップが必要な場合は、受容野を考慮することで適切にアップサンプリングします。

Fast anomaly detection Generative Adversarial Networks (f-AnoGAN)*8

名前の通り、AnoGAN*9を高速化した手法になります。
AnoGANからの変更点は下記の通りです。

  • 画像から潜在空間へのマッピングに変換するエンコーダを追加する
  • 推論時の勾配降下による探索を無くし、推論の高速化を行った

f:id:bp-writer:20201007133753p:plain

結果まとめ

手法 結果・考察
SSIM 既存モデルよりも高い精度を達成。
ARNnet 既存モデルと比べて大きな向上は見られなかったが、推論速度がわずかに高速化。
FCDD 既存モデルと比べて精度が低下。
論文で検証していたデータセットと比べて、本テーマで用いた画像の不良が小さすぎたため、検知できなかったのではないかと考えられる。
f-AnoGAN 既存モデルと比べて精度が低下。
学習回数の不足、画像一枚に対する不良箇所の割合が極端に小さい、などがうまくいかなかった理由として考えられる。

今回検証した4つの手法で最も精度が向上したのはSSIMでした。
難易度が高いテーマでしたが、目的である精度向上をしっかりと達成していただきました!

クライアントへのヒアリングから始まり、なぜその手法を選んだのか、なぜその結果になったのか、運用を見据えると何を考えなければならないかなど、アルゴリズムの追求だけではなく、しっかりと顧客価値に向き合っていただいた結果かと思います。

懇親会

新型コロナウイルス対策を徹底した上で、人数を制限し開催しました。
着席形式だったため落ち着いて話すことができ、交流を深めることができました。
※写真を撮り忘れてしまったのでイメージだけでも共有いたします・・・。

f:id:bp-writer:20201007134349p:plain:h170

参加した学生の皆さんの声

全体的にとてもポジティブな意見をいただきました!

何が得られたか

  • 実際にクライアントへ提案や報告をするのにどんな調査や検証を行うのか知ることができました。
  • 業務の進め方で報告は密に行うべきであること、資料の見せ方について学ぶことができました。
  • 機械学習に関するスキル・知識を得られました。また、実際に働いておられる社員の方々の姿を間近で見ることができ、会社の雰囲気や機械学習エンジニアとしての働き方を学びました。

進め方はどうだったか

  • 実際の案件に近い内容に取り組ませていただいて面白かったです。
  • 既存モデルのアップデートだったので、より実際の業務に近い形で取り組むことができました。
  • 課題テーマの提示・説明はとても簡潔で短く、最初はすごくびっくりしましたが、与えられすぎず自分たちで考えるて進めることができて良かったです。

フォロー体制について

  • オンライン期間中でも何度も相談の機会を設けていただいてとても助かりました。
  • 基本的に相談があったときにはslackで聞いていたのですが、とてもレスポンスが早く非常に助かりました。
  • フォロワーの方々に毎日相談する時間を設定させていただいており、疑問点をすぐに教えていただくことができて良かったです。

最後に

いかがでしたでしょうか?

10月より、エンジニアコースとデータサイエンティストコースの2022年新卒採用本選考を開始しています。
是非エントリーをお待ちしております!

新卒採用とあわせて、中途採用についてもエンジニア・データサイエンティスト・営業やコンサルタントなどのビジネス職を積極的に採用しています。
http://www.brainpad.co.jp/recruit/

今回のインターンシップに参加していただいた学生の皆さん、そして本記事をご覧になっていただいた方々が、ブレインパッドを魅力に思っていただけたら嬉しいです!