極市打榜|封裝實(shí)操詳解(附代碼)
1、轉(zhuǎn)換 onnx模型
yolov5倉(cāng)庫(kù)地址(下載v5_6.1版本): https://github.com/ultralytics/yolov5
1) 配置環(huán)境
#?onnx>=1.9.0??#?ONNX?export
#?onnx-simplifier>=0.3.6?
2) export.py 導(dǎo)出 onnx
python?export.py?--data?data/coco128.yaml?--weights?./yolov5s.pt?--simplify?--include?onnx
3) 可視化onnx
工具網(wǎng)址: https://netron.app
輸出維度: box(x_center,y_center,width,height) + box_score + 類別信息
2、下載封裝代碼并修改
gitee倉(cāng)庫(kù)地址:https://gitee.com/cvmart/ev_sdk_demo4.0_vehicle_plate_detection
極市地址:https://extremevision-js-userfile.oss-cn-hangzhou.aliyuncs.com/user-14409-files/c0a56641-c6a7-4cc6-ac25-ac1ddf6b57d5/ev_sdk_demo4.0_vehicle_plate_detection-master.zip
cp -r ev_sdk_demo4.0_vehicle_plate_detection-master/* ./ev_sdk/
1)修改配置文件
?-?config/algo_config.json
???"mark_text_en":?["vehicle",?"plate"],
?????"mark_text_zh":?["車輛","車牌"],?
?-?src/Configuration.hpp?
???std::map<std::string,?std::vector<std::string>?>?targetRectTextMap?=?{?{"en",{"vehicle",?"plate"}},?{"zh",?{"車輛","車牌"}}};//?檢測(cè)目標(biāo)框頂部文字
?-?//?修改,定義報(bào)警類型????
???std::vector<int>?alarmType?=?{1,2,3};
2)修改模型路徑
src/SampleAlgorithm.cpp
3)修改模型推理
?-?src/SampleDetector.cpp
???m_InputWrappers.emplace_back(dims_i.d[2],?dims_i.d[3],?CV_32FC1,?m_ArrayHostMemory[m_iInputIndex]?+?2?*?sizeof(float)?*?dims_i.d[2]?*?dims_i.d[3]);
???m_InputWrappers.emplace_back(dims_i.d[2],?dims_i.d[3],?CV_32FC1,?m_ArrayHostMemory[m_iInputIndex]?+?sizeof(float)?*?dims_i.d[2]?*?dims_i.d[3]?);
???m_InputWrappers.emplace_back(dims_i.d[2],?dims_i.d[3],?CV_32FC1,?m_ArrayHostMemory[m_iInputIndex]);
?????float?r?=?std::min(m_InputSize.height?/?static_cast<float>(img.rows),?m_InputSize.width?/?static_cast<float>(img.cols));
?????m_Resized.convertTo(m_Normalized,?CV_32FC3,?1.0/255);
?-?src/SampleAlgorithm.cpp?修改?ProcessImage?報(bào)警邏輯
???{
???????auto?iter?=?find(mConfig.alarmType.begin(),?mConfig.alarmType.end(),?obj.label);
???????if(iter?==?mConfig.alarmType.end())
???????{
???????????continue;
???????}
3、編譯測(cè)試
1)編譯
??-?編譯SDK庫(kù)
????mkdir?-p?/usr/local/ev_sdk/build
????cd?/usr/local/ev_sdk/build
????cmake?..
????make?install?
??-?編譯測(cè)試工具
????mkdir?-p?/usr/local/ev_sdk/test/build
????cd?/usr/local/ev_sdk/test/build
????cmake?..
????make?install?
2)測(cè)試
??-?輸入單張圖片,需要指定輸入輸出文件
????/usr/local/ev_sdk/bin/test-ji-api?-f?1?-i?../data/vp.jpeg?-o?result.jpg
4、提交封裝測(cè)試
改好模型目錄 models/exp/weights/best.onnx
省略/model/exp/weights/best.onnx