物体検出:Object Detection(画像認識AI)を簡単に実行|IDS社製 NXTカメラ
TECHNICAL INFORMATION
技術情報
2021.07.05
小型カメラ
画像認識AI(物体検出:Object Detection)を簡単に実行(IDS社製 NXTカメラ)
画像をAIを用いて認識・解析する方法には様々なものがありますが、物体検出(Object Detection)は、「どこ」に「なに」が写っているかを検出します。一般的に画像認識AIを行うためには、画像の他にAIに関する知識、プログラミング、画像をトレーニング(機械学習・ディープラーニング)する環境(高性能PCやサーバー)、トレーニングに用いるライブラリの選択などが必要であり、準備すらハードルが高い状況です。
IDS社のNXTカメラは、これらのハードルを大きく下げるAIに対応したCPU搭載のカメラです。ネットワークに接続されたPC(高性能の必要なし)のみご準備いただき、クラウドベースの関連ソフトウェアIDS NXT lighthouseと合わせてご使用いただくことで、わずか3ステップで画像認識AI(物体検出・Object Detection)を実行することができます。非常に簡単なため、例えば画像処理やAIに関する知識のない現場の方でも十分にお使いいただけます。一方でNXTカメラは、オリジナルのアプリケーションを作成してカメラ側で実行することもできます。そのため、初心者から上級者までユーザーのレベルに合った使い方をすることができます。
本記事では、カメラ接続後からIDS NXT lighthouseでトレーニングしたAI(物体検出:Object Detection)を実践するまでの手順例をご紹介いたします。なお、本記事は、IDS NXT cockpit 2.0にて作成しております。
ステップ1 トレーニング用の画像の準備
NXTカメラ内にプリインストールされている「Crawler」アプリとIDS NXT cockpit 2.0(無償)と合わせてインストールされる「IDS NXT crawler」を使用することで、トレーニング用の画像を簡単に準備することができます。
まず、 IDS NXT cockpit 2.0からNXTカメラを開き、「Crawler」アプリを起動します。
カメラにログイン後、「構成」⇒「VApp Manager」⇒「Crawler」と選択し、「Status」項目が「実行していません」の場合は、クリックして「実行中」状態にします。
「実行中」状態の場合、左項目の中に「Crawler」アプリが表示されます。
左項目の中の「Crawler」アプリを選択し、「カメラ」タブにてカメラのパラメータを設定します。パラメータ設定後、「トリガー」項目のタイプを「フリーラン」から「ソフトウェア」等に変更しておくことを推奨します。また、ROIを使用してトレーニングに不要な範囲をあらかじめ取り除いておくことで、トレーニングを行う際に要する時間を削減することができます。ここではROIは使用せずに撮影を行います。
ここで、IDS NXT cockpit 2.0は起動したままPC側の「IDS NXT crawler」を起動します。「Interface」項目で選択されているIPアドレスが、NXTカメラと同じネットワーク内かを確認し、異なる場合は同じネットワーク内のIPアドレスを選択します。「Crawler path」項目にて、画像の保存先を選択します。ここではあらかじめ作成しておいたデスクトップ上の「Cameras」フォルダを選択しています。
「URL」項目の「Run crawler」ボタンをクリックします。ボタン名が「Stop crawler」に変わり、「Crawler started」が表示されます。また、「URL」項目にURLが生成されますので、生成されたURLをコピーします。
IDS NXT cockpit 2.0に戻り、「VAPP」タブを選択します。先ほどコピーしたURLを「構成可能」項目の「URL」欄に貼り付けます。
「構成可能」項目の「Class」に撮影する画像の名前を入力します。入力した名前が、これから撮影する画像の名前や画像が保存されるフォルダに反映されます。ここでは「CP_Rev.2」と入力しています。「アクション」項目の「Reset image counter」ボタンをクリックし、「構成可能」項目の「Save」を有効にすると画像保存の準備が整います。
「カメラ」タブを選択し、「トリガー」項目の「トリガー」ボタンをクリックすると画像が撮影され、画面左下の「imagestransmitted」がカウントされます。
対象物の向きや角度を変えながら最低でも30枚程度の画像を撮影します。撮影を終えたら、「VAPP」タブの「構成可能」項目の「Save」を無効にします。
「構成可能」項目の「Class」に入力する名前を変更し、同様の手順で他の対象物の撮影を行います。全ての撮影を終えたら、トレーニング用の画像の準備は完了です。PC側の「IDS NXT crawler」は終了して問題ありません。本記事では同様の手順で、「CP_Rev.2」の他に「SE」、「XLE」、「XS」というClass名の画像をそれぞれ30枚撮影しております。
ステップ2 AIのトレーニング
AIのトレーニングは、関連ソフトウェアIDS NXT lighthouseを用いてクラウド上で行います。ステップ1で準備した画像とネットワークに接続されたPCのみでAIのトレーニングを行うことができます。
ウェブブラウザを起動し、IDS NXT lighthouse(https://www.ids-lighthouse.ai/login/)にログインします。ログインすると以下のような画面が表示されます。まずはトレーニングの枠組みの作成のため「プロジェクト」の「+」ボタンをクリックします。
「プロジェクトの作成」ウィンドウが表示されますので、「検出」の方をクリックします。
※IDS NXT lighthouseでは、物体検出(Object Detection)の他に分類(Classification)のトレーニングを行うこともできます。
「基本設定」項目の「タイトル」欄に名前を入力します。ここでは「Detect_Cameras」と入力しています。
「データ」項目を選択し、「新しいデータセットの作成」をクリックします。
「プロジェクト」から「データセット」に移行していることを確認し、「基本設定」項目の「タイトル」欄に名前を入力します。ここでは「Cameras」と入力しています。
「画像データ」項目を選択し、「追加」をクリックすると表示される「フォルダーの追加」を選択します。
表示された「フォルダーの内容を追加してラベル付け」ウィンドウの「追加」をクリックします。ファイルダイアログが開きますので、ステップ1で準備した画像のフォルダを選択します。ここでは「CP_Rev.2」フォルダを選択しています。
「CP_Rev.2」フォルダ内の画像が全てがアップロード候補として選択されます。「アップロード」をクリックし、画像をクラウド上にアップロードします。
アップロードが完了すると、ブラウザ上に画像の一覧が表示されます。フォルダ名と同じラベル名が各画像にラベル付けされています。
※画像アップロード時にどのようにするか選択できます。ここでは「フォルダー名をラベルとして使用」を選択しています。
同様に「SE」、「XLE」、「XS」フォルダ内の画像もアップロードします。
全ての画像のアップロードを終えたら、「注釈」項目を選択します。「ボックス名」欄にて、検出したい物体の種類や位置を学習させるためのボックス名を追加します。
ここでは「CP_Rev.2」、「SE」、「XLE」、「XS」というボックス名を追加しています。
「画像データ」項目を選択し、検出したい物体の位置を学習させます。ここでは「CP_Rev.2」のラベルが付けられている画像から行います。「CP_Rev.2」のラベルが付けられている画像のみを表示させて、1枚目(左上)の画像をクリックします。
検出したい物体に該当するボックスを選択し、ドラッグして物体を四角で囲みます。囲んだら「保存して次へ」をクリックし、同様の作業を全ての画像に対して行います。
最後の画像に対しての作業を終えると以下のような「まとめ」ウィンドウが表示されます。「ラベル付けモードの終了」をクリックします。
同様の作業を「SE」、「XLE」、「XS」のラベルがついている画像に対しても行います。作業を終えた後に、「ボックスなし」や「ラベルなし」の画像がないかを確認します。
「データセット」から「プロジェクト」に移行し、「データ」項目にて、作成したデータセット(ここでは「Cameras」)を選択します。
「トレーニング」項目を選択します。ここでは画像の修正や複製などの設定が行えますが、デフォルトの設定でも十分なため、「ニューラルネットワークのトレーニング」をクリックしてトレーニングを開始します。
トレーニングが始まると「ニューラルネットワークのトレーニング」ボタンの下に、トレーニングの状況を示す項目が表示されます。
トレーニングが終了するとトレーニングしたAIデータをダウンロードすることができます。「雲マーク」のボタンをクリックしてデータをダウンロードします。
トレーニングしたAIの精度は「トレーニング履歴」から確認することができます。
ステップ3 NXTカメラでAIを実践
トレーニングしたAIをNXTカメラにインストールし、物体検出(Object Detection)の動作を確認します。
IDS NXT cockpit 2.0に戻り、「構成」⇒「VApp Manager」⇒「Object Detector」と選択し、「Status」項目が「実行していません」の場合は、クリックして「実行中」状態にします。
左項目の中の「Object Detector」アプリを起動します。ここでは加えて「カメラ」タブの「トリガー」項目のタイプを「フリーラン」に変更しております。
「VAPP」タブの「ファイル」欄の「CNNのインストール」ボタンをクリックし、IDS NXT lighthouseからダウンロードした「.det」ファイルを選択します。
「構成可能」欄の「CNN」項目からアインストールしたファイル名を選択します。例えば、「Detect_Cameras_1.det」というファイルをアップロードした場合は、「Detect_Cameras_1」を選択します。
画面下に推論の結果が表示されます。以下は「SE」カメラを撮影したものになりますが、「SE」カメラが「1」台あると推論されていることが、「クラス」項目から確認できます。「データ」項目では検出した物体の位置、「推論時間」項目では推論にかかった時間を確認できます。
「SE」カメラに加えて「CP_Rev.2」、「XLE」、「XS」を撮影したところ、それぞれのカメラが1台ずつカウントされております。
画面左下の2枚並んでいる画像のうち右側をクリックすると、検出した物体の位置と推論した物体が推論したクラスである確率を可視化することができます。
正面だけでなく横向きの画像もトレーニングに用いたため、カメラを横向きにしても正しく物体検出が行えております。
以下のようにカメラの台数を増やしても、トレーニングに用いたクラスのカメラであれば正しく物体検出を行うことができます。
以上のように、画像処理やAIに関する知識を必要とせず、たった3ステップで物体検出(Object Detection)を実行することができました。今回ご紹介した内容はカメラの検出でしたが、様々な物体に対しても行うことができます。画像認識AIの研究用途にはもちろん、製造ラインへの導入も可能な性能を有しておりますので、是非一度NXTカメラをお試しいただけたらと思います。
◆ティー・イー・エムでは定期的に産業用カメラの無料紹介セミナーを開催しております。産業用カメラの一般的な内容についても説明しておりますので、是非ご参加ください。詳細は以下のURLよりご覧ください。
https://www.tem-inc.co.jp/news/detail-104.php