実験8:ビジョン認識 – YOLOモデルによるさくらんぼ検出
-
AIビジョンモジュール(K210)を使ってさくらんぼの画像を収集します。
-
オンラインプラットフォームでデータセットを学習させ、モデルをダウンロードします。
-
学習済みモデルを呼び出してさくらんぼを認識し、YOLO 物体検出アルゴリズムを理解します。
-
YOLO モデルによるさくらんぼ認識の事例を通じて、画像の収集・学習・モデル呼び出しの方法を身につけ、ほかの物体も認識できるようになります。
AIプラットフォームでのデータセット学習とモデルの呼び出し
K210 向けのモデル学習とインポートは、以下の手順で段階的に進めます。
-
データセットを取得します。認識させたい対象の画像を撮影し、種類ごとに別のフォルダへ保存します。
-
モデル学習プロジェクトを作成します。以下の学習プラットフォームにログインし、モデルを学習・生成します。
-
モデルをインポートします。det.kmodel をメモリカードに配置します。
-
プログラムからモデルファイルを呼び出して認識を行います。
ポイント:
対象の画像を収集する際は、さまざまなシーンで、できるだけ多くの角度から撮影してください。
モデルの学習には長い時間がかかります。必要に応じて画像の収集・ラベル付け・学習・モデル生成を行ってください。
応用シーン
果物収穫ロボット、果樹園監視システム、農業自動化における農産物の品質選別検査(さくらんぼの熟度判定など)に応用できます。
ハードウェアの準備:
AIオフラインビジョンモジュール(K210)* 1、カードリーダー * 1、メモリカード * 1、Type-C データケーブル * 1
ハードウェアモジュール
ヒント:事前に AI ビジョンモジュールの基本的な使い方に慣れておくことを強くおすすめします。
AIビジョンモジュールの基本的な使い方
プロジェクトのダウンロード
ソースコードのリンク:(HumansX サポートより提供)
| フォルダ | 説明 |
|---|---|
| 撮影用プログラム:Dataset.py。画像:熟度の異なるさくらんぼの画像(データセット)。学習結果:さくらんぼを学習させた後のモデルファイル。4. 画像およびデモ動画のダウンロードリンク。 |
操作手順
ここでは、緑色の未熟なさくらんぼと濃い赤色の完熟したさくらんぼの 2 種類を収集し、モデルを学習・生成したうえで、そのモデルを呼び出してさくらんぼを認識します。
YOLO モデル学習の全体の流れ
| 学習対象 | 画像例 1 | 画像例 2 |
|---|---|---|
| 緑色の未熟なさくらんぼ | ||
| 濃い赤色の完熟したさくらんぼ |
1 SD カードへの画像フォルダ作成と撮影プログラムの書き込み
1.1 SD カードに画像フォルダを作成する
- SD カードをパソコンに接続します。
| (1) カードリーダーとメモリカードを用意します。 | (2) メモリカードをカードリーダーに挿入します。 | (3) カードリーダーをパソコンの USB ポートに挿します。 |
|---|---|---|
パソコンが SD カードを正しく認識すると、USB ドライブとして表示されます(ヒント:ドライブ文字はシステムが自動で割り当てます。テスト時は I ドライブでした)。

- SD カード内に画像保存用のフォルダを作成します。たとえば、さくらんぼの種類ごとに画像を保存するため 3 つのフォルダを作成できます。
(1) USB ドライブをダブルクリックし、sd という名前のフォルダを作成します。(2) sd フォルダを開き、その中に image フォルダを作成し、さらに image フォルダ内に 1、2、3 という名前のフォルダをそれぞれ作成します。完成例は下図のとおりです。

1.2 AIビジョンモジュールのポート番号を確認する
操作全体の動画
具体的な操作手順
- カードリーダーをパソコンから外してメモリカードを取り出し、AIビジョンモジュール(K210)に挿入します。

- AIビジョンモジュール(K210)をパソコンに接続し、デバイスマネージャーを開いてポート番号を確認します。具体的な操作は次のとおりです。
(1) Type-C データケーブルでビジョンモジュールをパソコンに接続します。
(2) モジュールがパソコンに正しく接続されたか確認します。接続後、パソコンの「デバイスマネージャー」を開き、デバイスが追加されているか確認してください。ビジョンモジュールのデバイス番号はパソコンによって異なる場合があります。実験に使用した機器では次のとおりでした。

1.3 AIビジョンモジュール用ソフトウェア CanMV IDE でのプログラム実行設定
操作全体の動画
具体的な操作手順:
- CanMV IDE を開き、左下の接続アイコンをクリックすると設定画面が表示されます。ポート番号を選択し、「Advanced Settings」にチェックを入れて Mode-3 を選択し、「OK」をクリックします。この実験では COM6 と表示されていますが、ビジョン機器を接続したパソコンによって表示される COM ポートは異なる場合があります。


- 「OK」をクリックし、接続が完了するまで待ちます。

接続に成功すると、CanMV IDE の左下のアイコンが下図のように変わります。

1.4 撮影プログラム Dataset.py を AIビジョンモジュールに書き込む
撮影プログラム Dataset.py を main.py として保存し、AIビジョンモジュール(K210)に書き込みます。
操作全体の動画
具体的な操作手順:
-
CanMV IDE で Dataset.py を開きます。
-
メニューバーの「Tools」をクリックし、表示されたドロップダウンメニューから 2 番目の「Save Current Open Script (main.py) to CanMV Cam」を選択します。

- 表示されたダイアログで「Yes」を選択します。

- 書き込みが完了するまで待ちます。右側のダイアログに書き込み成功と表示されたら「OK」をクリックし、書き込みは完了です。

2 データセットの準備 – さくらんぼの撮影
2.1 AIビジョンモジュールのボタンの使い方

| 番号 | ボタン | 説明 |
|---|---|---|
| 1 | K1 ボタンを押す | 撮影を開始します |
| 2 | K2 ボタンを押す | 保存フォルダを切り替えます(この実験では image 内に 1・2・3 の 3 つのフォルダを作成しています)。起動直後はフォルダ 1 が選択されています。ここで K2 ボタンを押すとフォルダ 2 に、もう一度押すとフォルダ 3 に、さらにもう一度押すとフォルダ 1 に切り替わり、以降この順で循環します |
| 3 | K1 と K2 を同時に押す | 補助ライトのオン/オフを切り替えます。プログラムは K1 と K2 が同時に押された回数を自動で記録し、奇数回目ならビジョンモジュールの補助ライトを点灯し、偶数回目なら消灯します。 |
2.2 撮影時の注意事項:
注意:より良いデータセットを得るため、できるだけ以下の点に注意してください。
さまざまな光源(日光、曇天、白熱灯)の下でさくらんぼの画像を収集してください。
さまざまな角度からさくらんぼの画像を収集してください。
データセットは 500 枚以上必要です。認識率を高めたい場合は 1000 枚以上が望ましいです。
2.3 緑色のさくらんぼを撮影する
- CanMV IDE で Dataset.py を開き、三角形のアイコンをクリックして撮影プログラムを実行します。

- ビジョンモジュールを緑色のさくらんぼに向けて K1 ボタンを押し、さまざまな角度・光・シーンでさくらんぼを撮影します。
| モジュールの K1 ボタンを 1 回目に押したとき | モジュールの K1 ボタンを 2 回目に押したとき | モジュールの K1 ボタンを 3 回目に押したとき |
K1 と K2 を同時に押して補助ライトを点灯することもできます。さくらんぼをあらゆる方向から十分な枚数撮影してください。
- 緑色のさくらんぼの撮影が終わったら、カードリーダーを使って SD カード内の sd/image/1 フォルダにある緑色のさくらんぼの画像をすべてパソコンにコピーし、GreenCherry フォルダに保存します。

2.4 濃い赤色の完熟さくらんぼを撮影する
ヒント:SD カード内の sd/image/1 には緑色のさくらんぼの画像がすべて保存されているため、赤いさくらんぼを撮影する際はフォルダを切り替える必要があります(プログラムの起動後に K2 ボタンを押します)。
- CanMV IDE で Dataset.py を開き、三角形のアイコンをクリックして撮影プログラムを実行します。

- AIビジョンモジュールを手に持ち、K2 ボタンを押してフォルダ 2 に切り替えます。画面左上の数字がフォルダ 2 に切り替わったことを確認できます。

- ビジョンモジュールを赤いさくらんぼに向けてボタンを押し、さまざまな角度・光・シーンでさくらんぼを多数撮影します。
| モジュールのボタンを 1 回目に押したとき | モジュールのボタンを 2 回目に押したとき | モジュールのボタンを 3 回目に押したとき |
K1 と K2 を同時に押して補助ライトを点灯することもできます。さくらんぼを十分な枚数撮影してください。
- 赤いさくらんぼの撮影が終わったら、カードリーダーを使って SD カード内の sd/image/2 フォルダにある赤いさくらんぼの画像をすべてパソコンにコピーし、purpleccherry フォルダに保存します。

3 データセットのラベル付け・学習とモデルのダウンロード
3.1 アカウント登録
ヒント:アカウントをお持ちの場合はそのままログインしてください。お持ちでない場合は、先にアカウントを登録してください。
- ブラウザを開き、リンク Kendryte 開発者コミュニティ – 製品センター をクリックしてトップページに移動します。

- 「登録」をクリックしてアカウントを登録します。登録後、「ログイン」をクリックしてアカウント情報を入力し、ログインします。ログインに成功すると、個人アカウントの情報が表示されます。

3.2 データセットのラベル付けと学習
ここでは、さくらんぼのデータセットをアップロードして学習させる手順を詳しく説明します。この例にならって、ほかの対象も同様に学習させ、学習済みモデルをダウンロードできます。
- 「モデル学習」をクリックしてページを表示します。左側の「データセット」タブをクリックし、右側の「データセットを作成」ボタンをクリックします。

- 表示されたウィンドウでデータセット名を入力し、「画像検出」を選択して送信ボタンをクリックします。

作成したデータセットは一覧ページで確認できます。下図は、さくらんぼ用に作成したデータセット MyCherryDetect です。

- データセットを作成したら、そのデータセットをクリックして画像アップロード画面に入ります。たとえば、さくらんぼ用に作成した MyCherryDetect データセットをクリックすると詳細ページが開きます。

「画像をアップロード」ボタンをクリックし、先ほど撮影した緑色のさくらんぼの画像を選択します(ヒント:Ctrl + A ですべての画像を選択できます)。

続いて「開く」をクリックして画像をアップロードし、アップロード完了後に画像の総数を確認します。下図では画像の総数が 1069 枚となっています。

- 赤いさくらんぼのデータセットをアップロードします。「画像をアップロード」をクリックして赤いさくらんぼの画像を選択し、「開く」をクリックしてアップロードします。アップロード後、画像の総数を確認します。

- 画像データセットにラベルを付けます。「ラベル付け」ボタンをクリックします。

詳細ページで「新規ラベル」をクリックし、必要に応じてラベルを追加します。緑色のさくらんぼと赤いさくらんぼを識別する場合は、GreenCherry と purpleccherry のラベルを設定します。

(1) 今回は未熟な緑色のさくらんぼと、完熟した濃い赤色のさくらんぼの 2 種類を学習させるため、ラベルを 2 つ新規作成します。まず緑色のさくらんぼのラベルを GreenCherry と名付けます(ラベル名は自由に決められますが、英語で付ける必要があります)。名前を入力したら Enter キーを押します。
(2) 完熟した濃い赤色のさくらんぼのラベルを作成し、ここでは purpleccherry と名付けます(ラベル名は自由に決められますが、英語で付ける必要があります)。
- ラベルに基づいて各画像にラベルを付けます。「GreenCherry」ラベルをクリックし、任意の緑色のさくらんぼの画像をクリックして、マウスをドラッグして緑色のさくらんぼを枠で囲みます。


同じ方法で、緑色のさくらんぼの画像すべてにラベルを付けます。ここでは、ラベル付け済みのデータセットを使って説明します。
- 「purpleccherry」ラベルをクリックします。同様に、任意の濃い赤色のさくらんぼの画像をクリックし、マウスをドラッグして濃い赤色のさくらんぼを枠で囲み、すべての濃い赤色のさくらんぼにラベルを付けます。ここでは、ラベル付け済みのデータセットを使って説明します。

3.3 データセットの学習
- すべてのデータセットへのラベル付けが終わったら、「学習」をクリックします。

学習設定画面が表示されたら、タスク名を入力し、チップに k210 を選択し、バッチサイズに 16 を選択します。その他のパラメータはデフォルトのままにし、最後に「OK」をクリックすると学習タスクが作成されます。

- オンラインプラットフォームで学習が開始されます。完了までしばらくお待ちください。


- 学習結果を確認し、モデルをダウンロードします。「学習記録」をクリックすると学習結果を確認できます。さくらんぼの学習結果が見つかったら、「ダウンロード」をクリックします。

学習済みモデルをローカルのパソコンにダウンロードし、解凍してモデルファイルを確認します(ダウンロードしたモデルフォルダの名前は必要に応じて変更してください)。

たとえば、圧縮ファイルを解凍したフォルダ名を cherry_detection に変更します。
3.4 学習済みモデルファイルについて

| ファイル/フォルダ | 機能・説明 | 用途 |
|---|---|---|
| det.kmodel | 学習済みモデル | SD カードにインポートすると、プログラムから呼び出せます |
| det.py | モデルを呼び出すプログラムのソースコード | パラメータを変更すると画像認識を実行できます |
| label.txt | ラベルファイル(認識対象ごとのラベルなど) | さくらんぼのラベル値など |
| anchor.txt | 各グリッドセルは複数のアンカーボックスを生成し、モデルは各アンカーボックスのクラス確率と位置補正値を予測します。 | 物体検出タスクにおけるあらかじめ設定された基準枠で、画像内の物体の位置特定に使用します。 |
| train_loss.txt | 学習段階におけるモデルの予測結果と正解ラベルとの誤差を示し、学習データへのモデルの適合度を表します。 | |
| det_results | 学習済みモデルによるテスト結果の画像が複数含まれています | |
| cannmv-f7c7c35aa1775e2ee1e2bfbfff634b06a30ee25c.zip | k210 向けに生成されたバイナリファイル | |
4 モデルを呼び出してさくらんぼを認識する
まず det.kmodel ファイルを SD カードにコピーし、次に det.py のパラメータを変更し、最後に det.py を実行します。
4.1 det.kmodel モデルファイルを SD カードに配置する
- 学習結果の det.kmodel モデルファイルを SD カードに配置します。メモリカードをカードリーダーに挿入し、カードリーダーをパソコンの USB ポートに挿して、認識されたドライブを開いてコピーします。たとえば開発時には、det.kmodel を E:/SD/ に配置しました(E: はテスト時にメモリカードを挿入した際、パソコンが自動で割り当てたドライブ文字です)。
4.2 det.py のパラメータを変更する
- CanMV IDE で det.py ファイルを開きます。
(1) label.txt を開き、値 GreenCherry と purpleccherry を det.py の該当するコードにコピーします。

det.py の labels パラメータを下図のように変更します。

(2) anchor のデータを、anchor.txt ファイルの 2 行目の値 1.75, 1.72, 1.88, 2.03, 2.06, 1.94, 2.25, 2.25, 2.66, 2.56 に変更します(ヒント:anchor パラメータはモデルと対応しており、モデルの学習時に決定される固定値です。ほかの値に変更することはできません)。
det.py の anchor パラメータを下図のように変更します。

(3) モデルファイルを SD カードに配置したら、モデルのパスを変更します。たとえばテスト時は、モデルを ./sd/det.kmodel に配置しました(ヒント:./ はプログラムを実行しているカレントディレクトリを表します)。

(4) 変更後のパラメータは以下のとおりです。

4.3 det.py を実行してさくらんぼを認識する
det.py を K210 に書き込み、物体の分類検出を行います。
Type-C データケーブルで K210 ビジョンモジュールをパソコンの USB ポートに接続します。
(1) CanMV IDE でプログラム det.py を開きます。
(2) ポート番号を選択します。接続アイコンをクリックしてポート番号を選択し、「Advanced Settings」で Mode-3 を選択します。

(3) 矢印ボタンをクリックしてオンライン実行します。

(4) AIビジョンモジュールが撮影できる範囲にさくらんぼを置き、認識結果を確認します。予測されたバウンディングボックスの座標、信頼度、クラス確率が表示されます。テストでは、完熟したさくらんぼを認識すると枠とともに purpleccherry 0.798 が表示され、緑色のさくらんぼを認識すると枠とともに GreenCherry 0.906 が表示されました(下図参照)。

今回学習させたさくらんぼモデル(1000 枚以上の写真で学習)は、紙に印刷したさくらんぼの画像でも認識できます。
| 完熟したさくらんぼの認識 | 緑色のさくらんぼの認識 |
|---|---|
ヒント:認識精度は学習モデルに依存します。認識が不正確な場合は、画像を撮り直してモデルを再学習させてください。
実験結果
お問い合わせ
資料のダウンロード・技術サポートについては、HumansX株式会社までお問い合わせください。
ドキュメント