YOLOV8模型转换ezb模型使用教程. ---------------------------------------------------------------------- 0.环境切换 0.1 conda环境切换 conda activate eeasy_caffe_v1.2.0 0.2 定义项目文件夹(xxx自己定义) export PROJECT_NAME='model_xxx' export PROJECT_NAME='model_fire' export PROJECT_NAME='model_pet' export PROJECT_NAME='model_baby' export PROJECT_NAME='model_fall' export PROJECT_NAME='model_pet_test' 这里fire为例子 export PATH="/home/ubuntu/sv82x-v1.1/toolchain/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf:/opt/anaconda3/envs/eeasy_caffe_v1.2.0/eztool:$PATH" 0.3 修改py/yolo.py 修改这个文件里面的names和cls_num参数为自己模型的类别和类别数量. 0.4 新建文件夹 mkdir -p $PROJECT_NAME/logs ---------------------------------------------------------------------- 1.准备数据和模型 文件夹结构 ./model_xxxx/ | |-model.onnx |-logs/ |-img_train/ |-1.jpg |-2.jpg |-... ---------------------------------------------------------------------- 2.onnx2caffe 2.0 转换pt模型为onnx模型并复制到PROJECT_NAME下 cp /root/eeasy/eeasy_train/yolov8_fire/runs/train/yolov8n_fire_EXP1/weights/best.onnx $PROJECT_NAME/model.onnx cp /root/eeasy/eeasy_train/yolov8_fire/runs/train/yolov8n_baby_EXP1/weights/best.onnx $PROJECT_NAME/model.onnx 2.2 onnx转换到caffe sh sh/onnx2caffe.sh ---------------------------------------------------------------------- 3.测试caffe模型和制作量化数据集 3.0 复制数据集到PROJECT_NAME/img_train下 (path:原始图像路径 num:图像数量(0为全部)) python3 py/copy_img.py --path /root/data_ssd/fire/dataset/images/train --num 200 python3 py/copy_img.py --path /root/data_ssd/dataset_baby_head/images/train --num 200 python3 py/copy_img_select.py --path /root/public_dataset/cat_dog/catdog_dataset/JPEGImages --xml_path /root/public_dataset/cat_dog/catdog_dataset/Annotations --num 100 3.1 测试caffe模型map(记得修改数据集路径image_base_path,label_base_path)并把结果保存到PROJECT_NAME/map_img_save下 (计算map的时候默认conf为0.01 如需要较好的可视化 可以添加--conf 0.45) nohup python3 py/get_map.py --type caffe --conf 0.01 > $PROJECT_NAME/logs/map_for_caffe.log 2>&1 & tail -f $PROJECT_NAME/logs/map_for_caffe.log 3.2 查看PROJECT_NAME/map_img_save (绿色是预测框 红色是真实框) ---------------------------------------------------------------------- 4.量化 4.0 量化命令 nohup python py/quan.py > $PROJECT_NAME/logs/quan.log 2>&1 & tail -f $PROJECT_NAME/logs/quan.log 4.1 测试qkqb模型map(记得修改数据集路径image_base_path,label_base_path)并把结果保存到PROJECT_NAME/map_img_save下 (计算map的时候默认conf为0.01 如需要较好的可视化 可以添加--conf 0.45) nohup python3 py/get_map.py --type qkqb --conf 0.01 > $PROJECT_NAME/logs/map_for_qkqb.log 2>&1 & tail -f $PROJECT_NAME/logs/map_for_qkqb.log 4.2 查看PROJECT_NAME/map_img_save (绿色是预测框 红色是真实框) ---------------------------------------------------------------------- 5.模型转换 5.1 qkqb2ezb(重新执行0.2) sh sh/qkqb2ezb.sh 5.2 单张/批量推理ezb(指定测试图片路径/图片文件夹路径/视频路径(只支持qkqb推理),其会先自动letterbox到640x640再进行推理) python py/inference.py --path image.jpg --type ezb python py/inference.py --path model_pet/img_test/2.png --type all python py/inference.py --path model_pet/img_test --type all python py/inference.py --path model_crowdhuman/img_train --type all python py/inference.py --path test.mp4 --type qkqb --video --video_batch_size 32 python py/inference.py --path model_crowdhuman/img_train/273275,7078a000056e3b81.jpg --type ezb python py/inference.py --path ../yolov5ToEZB/image.jpg --type all python py/inference.py --path video.avi --type caffe --video --video_batch_size 64 python py/inference.py --path video3.avi --type qkqb --video --video_batch_size 64 ---------------------------------------------------------------------- 比对bin文件: python py/cal_bin_diff.py --bin_path1 model_pet/_share_res_hw__model.22_Concat.bin --bin_path2 model_pet/sim/res_hw/_model.22_Concat.bin --name /model.22/Concat python py/cal_bin_diff.py --bin_path1 model_pet/_share_res_hw__model.22_Concat_1.bin --bin_path2 model_pet/sim/res_hw/_model.22_Concat_1.bin --name /model.22/Concat_1 python py/cal_bin_diff.py --bin_path1 model_pet/_share_res_hw__model.22_Concat_2.bin --bin_path2 model_pet/sim/res_hw/_model.22_Concat_2.bin --name /model.22/Concat_2 python py/cal_bin_diff_ygy.py --bin_path1 model_pet/_share_res_hw__model.22_Concat_2.bin --bin_path2 model_pet/sim/res_hw/_model.22_Concat_2.bin --name /model.22/Concat_2 python py/cal_bin_diff.py --bin_path1 model_pet/_share_res_hw__model.22_Transpose.bin --bin_path2 model_pet/sim/res_hw/_model.22_Transpose.bin --name /model.22/Transpose python py/cal_bin_diff.py --bin_path1 model_pet/_share_res_hw__model.22_Transpose_1.bin --bin_path2 model_pet/sim/res_hw/_model.22_Transpose_1.bin --name /model.22/Transpose_1 python py/cal_bin_diff.py --bin_path1 model_pet/_share_res_hw__model.22_Transpose_2.bin --bin_path2 model_pet/sim/res_hw/_model.22_Transpose_2.bin --name /model.22/Transpose_2 比对caffe和qkqb文件: nohup python py/cal_caffe_qkqb_diff.py > $PROJECT_NAME/logs/cal_caffe_qkqb_diff.log 2>&1 & tail -f $PROJECT_NAME/logs/cal_caffe_qkqb_diff.log cp $PROJECT_NAME/_share_res_hw__model.22_Concat.bin $PROJECT_NAME/sim/res_hw/_model.22_Concat.bin cp $PROJECT_NAME/_share_res_hw__model.22_Concat_1.bin $PROJECT_NAME/sim/res_hw/_model.22_Concat_1.bin cp $PROJECT_NAME/_share_res_hw__model.22_Concat_2.bin $PROJECT_NAME/sim/res_hw/_model.22_Concat_2.bin