readme_v2.md 5.9 KB

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_hwmodel.22_Concat.bin $PROJECT_NAME/sim/res_hw/_model.22_Concat.bin cp $PROJECT_NAME/_share_res_hwmodel.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