3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

M5StackAdvent Calendar 2023

Day 6

M5StickV / MAiXの深層学習モデルkmodelを作成する

Last updated at Posted at 2023-12-05

M5StickV/Maix1 シリーズの深層学習モデルのkmodelの作リ方について説明していきます。学習データkmodelのトレーニングは、Tensorflowをフレームワークとして使用します。sipeedからGitHubで提供されているmaix_trainのコードを使います。

maix_trainを使うと、2種類の機械学習のモデルを作成することができます。

・クラス分類(Mobilenet V1を使用): 写真に写っている物体が何であるかを識別します。
・オブジェクト認識(YOLO V2を使用): 写真に写っている物体を検出し、同時に座標とサイズを求めます。

PC環境

構築手順に入る前に、まずPCに以下のバージョンのUbuntuをインストールした環境で、構築しました。

Ubuntu 22.04.3 LTS(x64)

Minicondaのインストール

まず最初に、Minicondaをインストールして、Pythonの環境を作ります。
Minicondaのインストーラは、Minicondaのウェブサイトからダウンロードして取得します。

% wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
% sh Miniconda3-latest-Linux-x86_64.sh

Miniconda上で、pythonの仮想環境を作成します。

% conda create -n maix python=3.7

condaをアクティブ化します。condaのアクティブ化する作業は、シェル立ち上げるごとに必要です。condaは、隔離したPython環境を作成してくれるので、システムのPython環境を誤って変更することがなく、安心してプログラミングができます。

% conda activate maix

maix_trainのダウンロード

sipeedからGitHubで提供されているmaix_trainのコードをダウンロードします。

% git clone https://github.com/sipeed/maix_train --recursive
% cd maix_train/

必要なライブラリをpipでインストールします。

% pip install -r requirements.txt
% pip install pynvml matplotlib requests

一度、初期化を行います。

python3 train.py init

学習データ変換ツールnncaseをインストールする

nncaseは、KerasやTensorFlowで作成した学習データを、KPUの学習データkmodelへ変換します。Kendryteがリリースしており、GitHubからダウンロードできます。
nncaseは、CNNのMobileNetV1/V2やYOLOV1/YOLOV3をサポートしています。
kmodel作成には、nccaseはv0.1.0-rc5のバージョンを使います。

% cd maix_train/
% mkdir -p tools/ncc/ncc_v0.1/
% cd tools/ncc/ncc_v0.1/
% tar Jxf ncc-linux-x86_64.tar.xz
% wget https://github.com/kendryte/nncase/releases/download/v0.1.0-rc5/ncc-linux-x86_64.tar.xz
% tar Jxf ncc-linux-x86_64.tar.xz

nncaseのバージョンを確認します。

% ./ncc --version
ncc 1.0.0

nncaseは、コマンドの引数でオプションを設定します。

-i,--input-format	必須. 入力ファイルのフォーマットを指定します
-o,--output-format	必須. 出力ファイルのフォーマットを指定します
--dataset	必須. データセット(画像データ)のパスを指定します
--dataset-format	(Default: image) データセットのフォーマットです
--help	ヘルプを表示します
--version	Versionを表示します
 input (pos. 0)	オプション指定ない引数の0個目で、入力ファイルのpathを指定します
 output (pos. 1)	オプション指定ない引数の1個目で、出力ファイルのpathを指定します

クラス分類(Mobilenet V1)の学習モデル作成

データセットを準備します。画像サイズは224x224で、フォーマットはmaix_train/datasetsのデータセット例を参照してください。

python3 train.py -t classifier -z datasets/test_classifier_datasets.zip train

outフォルダにzipファイルが生成されます。

report.jpg

エラーが出た場合の対処

[Errno 2] No such file or directory: 'maix_train/out/datasets/images/1/xxx.jpg'
エラーが出る場合、出力フォルダに画像をコピーします。

cp ./datasets/
nzip test_classifier_datasets.zip 
cp -r datasets/images/ ./out/datasets/

オブジェクト認識(YOLO V2を使用)の学習モデル作成

python3 train.py -t detector -z datasets/test_detector_xml_format.zip train

MaixhubやV-Trainで学習したモデルと同様に、outフォルダに結果を含むzipファイルが生成されます。ファイルをSDカードのルートディレクトリにコピーし、M5StickVの電源を入れて実行します。

参考資料

Sipeed Wiki:Local model training
https://wiki.sipeed.com/soft/maixpy/en/course/ai/train/local.html

maix_train
https://github.com/sipeed/maix_train

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?