ディープラーニング (深層学習)・ ニューラルネットワーク構築とデプロイのための 5 つのステップ

ディープラーニングを使ってマシンビジョンの実装を簡素化し加速させましょう。

はじめに

「1 枚の写真は千の言葉に値する」という言葉が、今日のマシンビジョンの世界ほど当てはまったことはありませんでした。ディープラーニングを使用すれば、数千行、いや数百万行のコードを、画像と僅かなコーディングで学習させた単純なニューラルネットワークに置き換えることができます。

嬉しいことにディープラーニングは、もはや研究者や高度な専門技術を有する人だけが利用したり、膨大な費用が必要な手法ではなくなりました。現在、多くのツールは無料で提供されていますし、チュートリアルも簡単に見つかります。ハードウェアにかかるコストも低くなり、学習データですら無料で入手できるようになりました。それにより、可能性と脅威との両方がもたらされるようになりました。新しく事業に参入する人たちの存在は既存のビジネスを脅かすと同時に、イノベーションを促進しているのです。また、これまでのマシンビジョンシステムでは想像もつかなかったことが行えるようになりました。例えば、ディープラーニングを使用して、従来のコーディングでは非常に困難、あるいはほぼ不可能だった予期せぬ異常を認識することができるようになりました。

ディープラーニング・ニューラルネットワークをデプロイすることの注目すべき利点は、最小限のハードウェアと非常に少ない処理能力で複雑な決定をエッジで実行できるようになることです。低コストの ARM または FPGA をベースにしたシステムと、FLIR Firefly DL のような新しい推論カメラがこれを可能にしました。

次のトピックをご参照下さい。

  • ディープラーニングに使われる基本用語集
  • ディープラーニングに最適なマシンビジョンタスクの種類
  • エッジ推論のためのニューラルネットワークを開発およびデプロイするための 5 つのステップ
  • ディープラーニングを始めるために利用できるツールとフレームワーク
  • 開始プロセスを簡単にするためのヒント
  • ディープラーニングの考慮すべき潜在的な弱点

ディープラーニング (深層学習) とは: 基礎

ディープラーニング (深層学習)とは、人の脳の仕組みにヒントを得て開発された機械学習の一種です。ディープラーニングが「ディープ (深層)」になるのは、様々な重みのニューロンの「層」がニューラルネットワークの決定を支援するからです。ディープラーニングは、学習と推論という 2 つの段階に分けることができます。

学習段階では、ニューラルネットワークを構成するニューロンとレイヤーの数を定義し、ラベル付き学習データに公開します。このデータを使用して、ニューラルネットワークは自ら何が「良い」もので何が「悪い」ものかを学習します。例えば、果物の等級評価をする場合、「A 級」「B 級」「C 級」などのラベルが付いた果物の画像をニューラルネットワークに見せます。するとニューラルネットワークは、サイズ、形状、色や色の一貫性など、各等級の特性を把握します。これらの特性を手動で定義したり、何が大き過で何が小さ過ぎかをプログラムする必要はありません。ニューラルネットワークが自分で学習してくれるのです。学習段階が終了すると、そこで構築されたデータが学習済みニューラルネットワークとなります。

ニューラルネットワークを使用して新しい画像を評価し、結論を出すプロセスを推論と呼びます。学習済みニューラルネットワークに新しい画像を提示すると、推論(つまり、結論)が提供されます。例えば「信頼度 95% の A 級」などです。

ディープラーニング・アプリケーションを開発するための 5 つのステップ

ディープラーニング・アプリケーションの開発には、大きく分けて5つのステップが必要です。各ステップの概要は次のとおりです。

ステップ1 適切なディープラーニング機能を特定する

ディープラーニングの世界では、タスクはいくつかの機能に分類されます。マシンビジョンで最も一般的と考えられる機能は次の通りです。

Classification

最初に使う最も基本的なディープラーニングのタスクは、分類です。このプロセスでは、画像を異なるクラスに分類したのち共通の特性に基づいてグループ化します。例えば、分類機能は品質管理のために、生産ライン上での不良部品の仕分けや、下の図 1 (FLIR Firefly DL 推論カメラを使用) のようなプリント基盤のはんだ付け外観検査にも使用できます。

flir-firefly-pcb_solder_inspection.jpg

図 1. はんだ付け不良の識別を FLIR Firefly DL を使用して行った際の分類

物体検出と位置特定

マシンビジョンに最適なもう 1 つのディープラーニング・タスクは、物体検出と位置特定と呼ばれるものです。この機能を使えば、画像内の特徴を認識しバウンディングボックス(物体を囲む矩形)の座標を割り出して物体の位置とサイズを特定することができます。例えば、生産ラインにおいてロボット周辺の危険領域に侵入している人を検知したり、生産/組立ラインのコンベヤシステム上で個々の不良部品を特定したりといったタスクに有効です。

セグメンテーション (画像領域分割)

3 つ目のディープラーニングのタスクは、セグメンテーション (画像領域分割) です。 通常、画像内のどのピクセルがどのオブジェクトに属しているかを識別するために使用されます。セグメンテーションは、物体と背景とを判別しそれらの関係性を特定する必要があるアプリケーションに最適です(例えば、自動運転車や一般にADASと呼ばれる先進運転支援システムなど)。

図 2. 物体とその位置を特定するための物体検出、位置特定、およびセグメンテーション

異常検知

このタイプのディープラーニングタスクは、パターンと一致しない領域の判別に利用できます。異常検知の有効的な活用方法の典型例として、図 4 に示すような食料品店での商品や資材・食材等の在庫管理です。この用途では、推論カメラを使用することで空または補充が必要な棚を検出し強調表示することが可能です。リアルタイムで通知されるため、効率も向上します。

ステップ 2 フレームワークを選ぶ

使用するディープラーニング機能を決定したら、必要に応じたツールセット(開発者はこれを「フレームワーク」と呼びます)を用意します。これらのフレームワークによって、開始用のニューラルネットワークと、ネットワークの訓練とテストを行うツールを選択できます。

世界最大手の IT 企業のうち数社がディープラーニング市場での優位性を競っており、Google の TensorFlow、Facebookの Caffe2、Intel の OpenVino (すべて無料) などのフレームワークでは、かなりの投資や資金がディープラーニング市場に流入していることが窺えます。また、その対極として、Facebook の一部となったオープンソースソリューションの PyTorch があります。これらのツールは使いやすくドキュメント(およびサンプル)も充実しているので、初心者でもニューラルネットワークのトレーニングとデプロイが難なくできます。

利用可能なすべてのフレームワークについては別ページに記載しますが、次の項目に最も利用者の多い 3 つのフレームワークの主な長所と短所をリストアップしましたのでご参照ください。

PyTorch (パイトーチ)

  • シンプルで使い方が簡単。
  • 数多くの調査プロジェクトで採用。
  • 大規模なデプロイには不向き。
  • Python (パイソン) にのみ完全対応。

TesorFlow (テンソルフロー)

  • 利用者数が多くドキュメントも充実。
  • Pytorch と比べて学習曲線が高い。
  • 拡張性の高いデプロイを提供しており、モバイルデバイスへのデプロイにも対応。

Caffe2 (カフェ 2)

  • 軽量で、効率の良いデプロイに変換。
  • 最も長く利用されているフレームワークの1つ (CNN〈畳み込みニューラルネットワーク〉やコンピュータービジョン向けライブラリとして広く活用される)。
  • OpenCV を使用したモバイルデバイスに最適。

どのニューラルネットワークを選択するかは、最終的には実行するタスクの複雑さと推論の実行速度によります。例えば、より多くの層とニューロンを持つニューラルネットワークを選択することはできますが、推論速度はより遅くなります。通常、学習済みニューラルネットワークはごく僅かの計算力しか必要とせず、ほんの数ミリ秒で結果を割り出すことができます。これにより、複雑なディープラーニング推論を低消費電力の ARM ボードを使用してエッジで実行したり、FLIR Firefly DL のように特別に製造された推論カメラを使用してエッジで推論したりできます。

さらに、ディープラーニングソリューションを学び実装するためのリソースや従業員が不足している企業でも、外部コンサルタントにサポートを依頼することができます。 外部コンサルタントは、概念化からデプロイまで、ディープラーニングの導入サイクル全体を通して、事業者、従業員、取引先など様々な利害関係者の支援をしてくれます。Enigma Pattern 社 (https://www.enigmapattern.com) などがその一例です。

関連記事の配信登録をする

登録

ステップ 3 ニューラルネットワークの学習データを準備する

評価するデータの種類に応じて、評価に利用したい特性をできるだけ多く含む画像のリポジトリが必要となり、それらの画像は適切にラベル付けされている必要があります。 例えば、良いはんだ付けと悪いはんだ付けをニューラルネットワークに認識させる必要がある場合、数百種類の優良ラベル付きはんだ付け見本と、同程度の量の不良ラベル付き見本を用意する必要があります。

画像のデータセットを取得するには、いくつかの方法があります。

  • 一般的なユースケースは、特定要件に合うラベル付け済みデータセットをオンラインで見つけて購入することです(無料で提供されているものも数多くあります)。
  • また利用用途によっては、合成データを生成するのも効率的な方法です。特に、この場合はラベル付けの必要がないからです。FLIR(https://www.cvedia.com)が支援する Cvedia のような会社では、シミュレーション技術と高度なコンピュータービジョン理論を採用して、信頼性の高い学習用合成データセットを構築しています。これらのデータセットにはアノテーション(データに関連情報をタグ付けすること)が付けられており、アルゴリズムトレーニング用に最適化されています。
  • この 2 つのオプションが利用できない場合は、独自の画像を取得して個別にラベル付けを行う必要があります。このプロセスは、市場で入手可能なツールで簡素化することができます(開発に必要な時間を短縮するためのツールと技術については、以下で簡単に説明します)。

役立つヒント:

開発者の中には、独自のディープラーニングコードを構築する過程で、ソリューションをオープンソース化して無償で公開している人もいます。特に、データセットが事前にラベル付けされていない場合には、LabelImg と呼ばれるツールが役立ちます。 これは、画像内のバウンディングボックスの中にオブジェクトをラベル付けする際に便利な、グラフィカル画像アノテーションツールです(https://github.com/tzutalin/labelImg)。また、プロセス全体を外注するという手もあります。

データの準備段階を短縮する別の方法は、1つの画像に画像処理 (回転、サイズ変更、引伸し、明暗の変更など) を施し、たくさんの異なる画像を作りだしてデータ量を増やすやり方です。この方法なら、学習データの取り込みや画像のラベル付けのプロセスを初心者ユーザーに任せることもできるため、開発時間の節約にもなります。

さらに、ハードウェアに特定の制限や設定がある場合は、この方法がことさら重要となります。なぜなら、次のセクションでご紹介するディープラーニング用ツールはサポートしているハードウェアが限られており、互換性がないことが多いためです。

ステップ 4 ニューラルネットワークを訓練および検証して、精度を維持する

データが準備できたら、ニューラルネットワークの精度を訓練、テスト、および検証する必要があります。この段階では、学習レベルが特定の目的に必要な精度に達するまで、コンピューターでスクリプトの構成と実行を繰り返します。評価のテスト用データが訓練中に使用されないように、訓練用データとテスト用データを別々に保管しておくことをお勧めします。

学習プロセスは、転移学習を活用することで加速することができます。これは、事前に学習済みのネットワークを利用し、またそれを別のタスクに再利用するというものです。ディープニューラルネットワークの層の多くが特徴抽出を行なっているため、新たな物体を分類するためにこれらの層を再訓練する必要がありません。つまり、開始の時点から事前学習済みネットワークに転送学習技術を適用し、ネットワーク全体を訓練する代わりに数層のみを再訓練すればよいのです。Caffe 2TensorFlow など人気の高いフレームワークでは、転移学習の技術が無償で提供されています。

また、検知用の新しい機能を学習済みニューラルネットワークに追加することは、欠陥画像のデータセットに画像を追加したり、転移学習を適用してネットワークを再訓練したりするのと同じくらい簡単です。これは、論理ベースのプログラミングよりもはるかに簡単で速くできます。 論理プログラミングを行う場合、新しい論理をコードに追加し再コンパイルして実行する必要があり、またその新しく追加されたコードが不当なエラーの引き金にならないように注意する必要があるのです。

独自のニューラルネットワークを訓練するためのコーディングの専門知識がない場合でも、さまざまなフレームワークに対応するGUI(グラフィカルユーザインターフェイス)ベースのソフトウェアがあります。これらのツールを利用すれば、経験の浅いユーザーでも学習とデプロイが非常に楽にできるようになります。マシンビジョンの世界では、Matrox MIL などがそうしたツールの一例です。

ステップ 5 ニューラルネットワークをデプロイし、新しいデータで推論を実行する

最後のステップでは、選択したハードウェアに学習済みニューラルネットワークをデプロイして、パフォーマンステストと実地でのデータ収集を行います。将来、学習用データとして繰り返し利用できる追加のテストデータを収集するために、推論の最初の段階では実地で使用するのが理想的です。

次のセクションでは、一般的なデプロイ方法の概要と、それに伴う長所と短所について説明します。

クラウドへのデプロイ

  • ハードウェアコストを大幅に節約
  • 迅速にスケールアップが可能
  • 複数ロケーションへの変更のデプロイおよび反映が可能
  • インターネット接続が必須であることが最大の欠点
  • エッジでのデプロイと比較してレイテンシーがより高い (ローカルのハードウェアとクラウド間のデータ転送量が多いため)
  • 信頼性が低下(接続の不具合が重大なエラーに繋がる可能性あり)

エッジ (標準 PC)

  • 高性能アプリケーションに最適
  • どのようにもカスタマイズ可能(アプリケーションに関連するパーツで構築)
  • 柔軟な価格設定(アプリケーションに基づいたコンポーネントを選択できるため)
  • コストがより高い
  • 一般的にメモリー・フットプリントが大幅に大きい

エッジ (ARM、FPGA、または FLIR Firefly DL のような推論カメラ)

  • 低消費電力
  • 周辺機器のコストを大幅に節約
  • 高い信頼性
  • 1 つのシステムで複数のカメラを必要とするアプリケーションに最適(処理要件を複数のカメラにオフロードして負担を軽減できる)。
  • 安全(他の干渉からハードウェアを分離できるため)。
  • サイズがコンパクトであることが条件のアプリケーションに最適。
  • 計算負荷が非常に高いタスクには不向き。
  • VPU ベースのソリューションは、FPGA ソリューションよりもパフォーマンス/電力比が高い。
  • FPGA ソリューションは、VPU ベースのものよりもパフォーマンスが優れている。

画像 : DL 推論カメラの一例 – FLIR Firefly DL

ディープラーニングの潜在的な弱点

ここまで、ディープラーニングの開発とデプロイのプロセスについて大まかなことを学びました。今度はいくつかの弱点について検討してみましょう。

  • ディープラーニングの大部分はブラックボックス、つまり機能はわかっていても中の仕組みが複雑でわからないものであり、ニューラルネットワークがどのように結論に至るかを実際に説明/理解することは非常に困難です。このことは、一部のアプリケーションにとってはさほど重要ではないかもしれませんが、医療、健康、生命科学の分野の企業では、製品に関する厳密な書類を作成して FDA または他の地域における同等の機関の承認を得ることが務付けられています。ほとんどの場合において、ユーザーはソフトウェアの機能を十分に理解し、操作全体を詳細に文書化することが求められるのです。
  • ディープラーニングをデプロイする際に対処しなくてはいけないもう 1 つの課題は、予測可能な形でニューラルネットワークを最適化することが非常に難しいことです。現在訓練中または使用中の多くのニューラルネットワークは、転移学習を利用して既存のネットワークを再訓練しており、最適化はほとんど行われません。
  • 人為的ミスが原因で頻繁に発生しうる学習データのラベル付けの小さなエラーでさえ、ニューラルネットワークの精度を低下させる恐れがあります。さらに、誤ったラベルを見つけるためにすべての学習データを 1 つずつ確認する必要があるため、問題をデバッグするのはこの上なく面倒なのです。

これらの弱点に加えて、多くのアプリケーションは概念上、論理ベースのソリューションにより適しています。例えば、問題が明確で、確定的で予測可能な場合、論理ベースのソリューションを使用した方がディープラーニングよりも良い結果を得られることがあります。典型的な例には、バーコードの読み取り、部品の位置合わせ、正確な測定などが挙げられます。

結論

たとえ上記のような弱点があったとしても、ディープラーニングから得られる潜在的な利点 (迅速な開発、複雑な問題を解決する能力、使い易さとデプロイのし易さ……などなど、その他にもたくさん) は、マイナス面をはるかに上回ります。さらに、ディープラーニングの分野では、これらの弱点を克服するために絶え間なく改善が行われています。例えば、アクティベーションマップを利用して、ニューラルネットワークが決定を下す際に画像内のどのピクセルが考慮されているかを視覚的に確認することで、ネットワークがその結論に到達した経緯をより良く理解できるようになりました。また、ディープラーニングが広く採用されるようになったことで、現在多くの企業が転移学習に依存する代わりに独自のニューラルネットワークを開発し、特定の問題に対するパフォーマンスの向上とソリューションのカスタマイズに取り組んでいます。ディープラーニングは、論理プログラミングに適したアプリケーションに対しても、基礎となる論理を支援してシステムの全体的な精度を向上させることができます。最後に申し上げたいのは、独自のディープラーニングシステムの開発を始めることは、これまでになく簡単で安価になっているということです。ここをクリックして、ディープラーニングの分類システムを $ 600 未満で構築する方法を学びましょう。

お気軽にご相談ください!

今すぐカメラのスペシャリストにお問い合わせください。

お問い合わせ

関連記事