概要
M5UnitV2のUnitV2Frameworkでプログラムをビルドした上で実行すると、
UnitV2Frameworkに含まれているサンプルプログラムの「object_recognition」が動作しない不具合が発生した。
これを修正して、Object Recognitionを動かす。
不具合の内容
ncnnの学習モデルを読み込んだところで、Segmentation fault が発生する。
$ ./object_recognition
function: Object Recognition start.
{"msg":"Running Object Recognition, Copyright 2021 M5Stack Technology Co., Ltd. All rights reserved.","running":"Object Recognition"}
Model Type: YOLO v3
Load ./model/unitv2/yolo_20class/ Successfull, Class: 21
Segmentation fault (コアダンプ)
原因と修正場所
UnitV2Frameworkのsrc/framework.cppの内、loadModel()関数の中の処理で、関数がint型なのに、値を返していなかった。
「return 0;」を追加してビルドをやり直したところ、問題なく動作するようになりました。
src/framework.cpp
int loadModel(const std::string pathparam, const std::string pathbin, ncnn::Net &net){
net.load_param(pathparam.c_str());
net.load_model(pathbin.c_str());
net.opt.openmp_blocktime = 0;
net.opt.lightmode = true;
net.opt.num_threads = ncnn::get_cpu_count();
+ return 0;
}
その後
このプルリクは以下になります。