「Edge ImpulseでSpresense用の物体検出モデル作成(その1)」に引き続き、Edge ImpulseでSpresenseのカメラ画像を使ったAIモデルを作成します。ここでは物体検出を行うために、物体検出モデルを作成して、作成した物体検出モデルをArduino用としてDeployします。
Impulse design
Edge Impulseの左側メニューから「Impulse design」の「Create impulse」を選択し、次のデータを設定して「Save Impulse」ボタンをクリックします。
- Image dataで「Image w」と「Image h」をそれぞれ「160」、「Resize mode」を「Fit shortest」に設定する
- Imageを選択して「Add」ボタンを押す
- Object Detection (Images)を選択して「Add」ボタンを押す
Edge Impulseの左側メニューから「Impulse design」の「Image 」を選択し、「Generat features」タブを選択し、「Generat features」ボタンをクリックします。「Feature explorer」により学習データのクラスタ状態を確認します。
Edge Impulseの左側メニューから「Impulse design」の「Obuject detection」を選択し、「Start training」ボタンをクリックすると学習が開始されます。終了すると次のように「Confusion matrix」が表示され学習結果が表示されます。
Model testing
Edge Impulseの左側メニューから「Model testing」を選択し、学習状況をtest学習データを使用して確認します。次のように正確度とその分布が表示されます。
Deployment
Edge Impulseの左側メニューから「Impulse design」の「Deployment」を選択し、次のように「arduino」を選択して「Build」ボタンをクリックします。
Arduino libraryとして学習モデルが作成され、次のようにスケッチ例を含むzip形式のファイルとしてダウンロードされます。
Arduino IDEでzip形式のArduino librarを展開すると、ライブラリ「tomosoft-project-1_inferencing」がフォルダ「libraries」に作成されます。
G:\DOCUMENT\ARDUINO\LIBRARIES\TOMOSOFT-PROJECT-1_INFERENCING │ library.properties │ neda │ ├─examples │ ├─nano_ble33_sense_accelerometer │ │ nano_ble33_sense_accelerometer.ino │ │ │ ├─nano_ble33_sense_accelerometer_continuous │ │ nano_ble33_sense_accelerometer_continuous.ino │ │ │ ├─nano_ble33_sense_camera │ │ nano_ble33_sense_camera.ino │ │ │ ├─nano_ble33_sense_microphone │ │ nano_ble33_sense_microphone.ino │ │ │ ├─nano_ble33_sense_microphone_continuous │ │ nano_ble33_sense_microphone_continuous.ino │ │ │ ├─nicla_sense_inference │ │ nicla_sense_inference.ino │ │ │ ├─nicla_vision_fusion │ │ nicla_vision_fusion.ino │ │ │ ├─nicla_vision_microphone │ │ nicla_vision_microphone.ino │ │ │ ├─nicla_vision_microphone_continuous │ │ nicla_vision_microphone_continuous.ino │ │ │ ├─portenta_h7_camera │ │ portenta_h7_camera.ino │ │ │ ├─portenta_h7_microphone │ │ portenta_h7_microphone.ino │ │ │ ├─portenta_h7_microphone_continuous │ │ portenta_h7_microphone_continuous.ino │ │ │ └─static_buffer │ static_buffer.ino │ └─src │ tomosoft-project-1_inferencing.h │ ├─edge-impulse-sdk │ │ .gitignore │ │ sources.txt │ │ │ ├─anomaly │ │ anomaly.h │ │ │ ├─classifier │ │ │ ei_aligned_malloc.h │ │ │ ei_classifier_config.h │ │ │ ei_classifier_smooth.h ・・・・ │ │ │ └─third_party │ ├─flatbuffers │ │ │ LICENSE.txt │ │ │ │ │ └─include │ │ └─flatbuffers │ │ base.h │ │ flatbuffers.h │ │ flexbuffers.h │ │ stl_emulation.h │ │ util.h │ │ │ ├─gemmlowp │ │ │ LICENSE │ │ │ │ │ ├─fixedpoint │ │ │ fixedpoint.h │ │ │ fixedpoint_neon.h │ │ │ fixedpoint_sse.h │ │ │ │ │ └─internal │ │ detect_platform.h │ │ │ └─ruy │ └─ruy │ └─profiler │ instrumentation.h │ ├─model-parameters │ dsp_blocks.h │ model_metadata.h │ model_variables.h │ └─tflite-model trained_model_compiled.cpp trained_model_compiled.h