Microsoft Garage New England Research & Development Center (NERD) でひと夏を過ごすのは、どんな人たちなのでしょうか。Microsoft Garage Internship では、学ぶことに貪欲で、ためらわずに新しいことに挑戦し、曖昧な状況に直面したときに失敗を恐れずにチャレンジできる学生を求めています。今回のプログラムには、マサチューセッツ工科大学の Grace Hsu さん、ノースイースタン大学の Christopher Bunn さん、ボストン大学の Joseph Lai さん、カーネギーメロン大学の Ashley Hong さんが参加しました。4 人が Garage Internship を選んだ理由は、製品にフォーカスできる環境があるからです。具体的にはアイデアの発案から出荷までの開発サイクル全体を一望し、お客様に寄り添う方法を身につけることができます。
Microsoft Garage のインターンは実験的なプロジェクトに挑戦し、新技術への取り組みを通じて創造力と製品開発スキルを培います。こうしたプロジェクトは、Microsoft の社内製品グループの提案によるものが一般的です。しかし、今回は、Stanley Black & Decker から、工事現場の資産管理に Microsoft で画像認識を適用できないかという問い合わせをいただき、4 人のインターンからなるこのチームが実用レベルのプロトタイプを 12 週間で作成するという挑戦を受けて立ちました。
画像認識を活用する単純なリクエストから取りかかったチームは、有用と認められる優れた製品にするため、市場調査とユーザー調査を実施しました。チームはモバイル アプリ開発と AI の経験を積みながらひと夏を過ごし、少なくとも人間と同じくらい正確に工具を認識するツールを作成しました。
問題
建設業界では、業者がインベントリの追跡に毎月 50 時間以上を費やすことは珍しくなく、不必要な遅れ、過剰在庫、工具の紛失の原因になっていました。大規模な建設現場では、長いプロジェクトの間に合計 20 万ドル以上の機器を紛失することもありました。この問題に対応するには、標準化されていない技術を組み合わせる必要があります。一般的には、バーコード、Bluetooth、RFID タグ、QR コードが関わってきます。Stanley Black & Decker のチームからの問い合わせは、次のようなものでした。「写真を撮るだけで工具が自動的に認識されるほうが簡単ではないでしょうか?」
わずかしか違わない多くの工具モデルがあるため、たとえば人間が特定のドリルを認識するには、DCD996 のようなモデル番号を読み取る必要があります。また、工具はビットあり、ビットなし、バッテリー パック搭載など、複数の構成で組み立てられていることがあります。さらに、さまざまな角度から確認しなければならないこともあります。さらに、一般的な工事現場における各種の照明条件や背景の数も検討に入れる必要があります。このように、コンピューター ビジョンを使って解決すべき、きわめて興味深い問題が早くも突きつけられました。
インターンによる取り組み
ドリル、のこぎり、巻き尺を見分けるように、まったく異なるもの同士を識別する場合は、分類アルゴリズムを簡単に学習させると高度な精度が得られます。しかし、チームが知りたかったのは、上に示す 4 つのドリルのような非常に似た工具を分類器で正確に区別できるかどうかということでした。プロジェクトの最初のイテレーションでは、チームは PyTorch と Microsoft の Custom Vision サービスを検討しました。Custom Vision がユーザーにとって魅力的なのは、データ サイエンスに精通していなくても、実用レベルのモデルの作成に取りかかることができるところです。また、Custom Vision は、十分な数の画像 (工具 1 点あたり約 400 枚) さえあれば、適切なソリューションになることが証明されています。しかし、何千もの工具がある製品ラインに対してこれほど多くの画像を手動で収集するのは難しいことがすぐに明らかになりました。まもなくチームの関心は、学習用の画像を合成で生成する方法の模索に移りました。
最初のアプローチで、チームは工具の 3D スキャンとグリーン スクリーン レンダリングの両方を実施しました。次に、これらの画像にランダムな背景を重ねて、本物の写真を模倣しました。このアプローチは見込みがありそうでしたが、生成された画像の品質が問題になることがわかりました。
2 番目のイテレーションでは、チームは Stanley Black & Decker のエンジニアリング チームと協力し、CAD (コンピューター支援設計) モデルのフォトリアルなレンダリングを使用する新しいアプローチを検討しました。チームは比較的単純な Python スクリプトでこれらの画像のサイズを変更したり回転したりして、多数の背景の上に画像をランダムに重ねることができました。この手法により、チームは数分間で数千枚の学習用画像を生成することができました。
左はグリーン スクリーンの手前で生成された画像で、右は CAD から抽出された画像です。
イテレーションのベンチマーク
Custom Vision サービスには、次に示すようにモデルの正確性に関するレポートがあります。
外観がよく似た製品をターゲットにする分類モデルでは、次のような混同行列が大いに役立ちます。混同行列は、クラスの実際のラベルを行に取り、モデルによって出力されたラベルを列に取って比較することにより、予測モデルのパフォーマンスを視覚化します。対角線のスコアが高いほど、モデルの正確性が高いことになります。対角線から外れたところに高い値がある場合、学習済みモデルによってどの 2 つのクラスが互いと混同されているかをデータ サイエンティストが理解するために役立ちます。
既存の Python ライブラリを使用して、一連のテスト用画像ですばやく混同行列を生成できます。
結果
チームは iOS と Android の両方で実行できる React Native アプリケーションを開発しました。これは、すっきりした直感的な UI を備えた軽量の資産管理ツールの役割を果たします。このアプリはさまざまなレベルの Wi-Fi 使用に適応します。信頼できる接続がある場合、撮影した画像は Azure Cloud の学習済み Custom Vision モデルの API に送信されます。インターネット接続がない場合、画像はローカルのコンピューター ビジョン モデルに送信されます。
このローカル モデルは Custom Vision を使用して取得できます。Custom Vision によって、モデルは Core ML (iOS の場合) または TensorFlow (Android の場合) にエクスポートするか、または Azure の Linux App Service 上で実行できる Docker コンテナーとしてエクスポートします。CAD からレンダリング済み画像をエクスポートし、合成画像を生成することによって、機械学習モデルに新しい製品を追加するための簡単なフレームワークを実装できます。
画像の説明 (左から右): インベントリのチェックリスト画面、Custom Vision サービスに写真を送信するためのカメラ機能、機械学習モデルの結果の表示、チェックリストに工具を追加するための手動フォーム。
次のステップ
チームでコンピューター ビジョン プロジェクトに取り組む機会を求めている方は、お近くの OpenHack を検索してみてください。
Microsoft OpenHack は、幅広い参加者 (Open) が、開発者のたどる道筋を模倣するように設計された、実際のカスタマー エンゲージメントに基づく課題を利用して、実践的な経験から学ぶ (Hack)、開発者中心のイベントです。OpenHack は、顧客とパートナーにまたとないスキルアップの経験を提供する、Microsoft のプレミアム イベントです。従来型のプレゼンテーションベースの会議と違い、OpenHack は独自の実践的なコーディング経験を実現します。
また、ラーニング パスも、Cognitive Services の実践的経験を得るために役立ちます。