系列博客:
Ultra-Light-Fast-Generic-Face-Detector-1MB的自定义数据集训练 | 多分类修改指南_Andrwin的博客-CSDN博客1、项目地址:https://github.com/Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB/blob/master/README_CN.md2、虚拟环境按照requirements.txt安装就可以,我的硬件是RTX2080(8G),i7-9700K,32GRAM,Ubuntu18.043、数据集准备可以使用labelimg去标注,文件结构组织形式:\data|------\my_dataset ...https://blog.csdn.net/Andrwin/article/details/120408801Ultra-Light-Fast-Generic-Face-Detector-1MB的自定义数据集训练 | 多分类推理修改 (2)_Andrwin的博客-CSDN博客上一篇帖子我们介绍了如何修改源代码适应我们自己定义的数据集做一个多分类的目标检测任务。Ultra-Light-Fast-Generic-Face-Detector-1MB的自定义数据集训练 | 多分类修改指南_Andrwin的博客-CSDN博客训练好的权重会被保存在 项目根目录/models/train-version-RFB 这个文件夹里面,你可以根据训练日志选择损失最小的一个权重。第一件事是新建一个分类标签列表,看过上一篇博客的朋友可能不理解为什么又要新建一个列表,因为原始代码对于列表读取的https://blog.csdn.net/Andrwin/article/details/120413366
Ultra-Light-Fast-Generic-Face-Detector-1MB的自定义数据集训练 | PTH权重转为ONNX格式 (3)_Andrwin的博客-CSDN博客在PTH格式不方便端侧部署,考虑转为ONNX或者MNN格式。1、修改源代码首先需要修改一下源代码:(1)vision/ssd/ssd.py这个文件里面if self.is_test: confidences = F.softmax(confidences, dim=2) boxes = locations # this line should be added. #boxes = box_utils.convert_locations_to_boxes( #https://blog.csdn.net/Andrwin/article/details/120415012
在PTH格式不方便端侧部署,考虑转为ONNX或者MNN格式。
首先需要修改一下源代码:
(1)vision/ssd/ssd.py这个文件里面
if self.is_test:
confidences = F.softmax(confidences, dim=2)
boxes = locations # this line should be added.
#boxes = box_utils.convert_locations_to_boxes(
# locations, self.priors, self.config.center_variance, self.config.size_variance
#)
# boxes = box_utils.center_form_to_corner_form(boxes) # these lines should be commented out. detail information and analyze comming soon.
return confidences, boxes
else:
return confidences, locations
把这段话改成上面这个样子
(2)打开项目根目录下的convert_to_onnx.py
第18行 label_path 改为 models文件夹里面那个txt
第27行 model_path 改为前面测试用的最佳权重
2、转换为ONNX模型
python convert_to_onnx.py
即可得到onnx模型
有个大佬提供了一个模型精简库:
pip install onnx-simplifier -i https://pypi.douban.com/simple/
安装完成以后:
python -m onnxsim 旧的onnx文件 新的onnx文件
我训练出来出来的权重仅1.2M 精简完了还是1.2M
可能已经是最精简的了?
直接去一键转换 Caffe, ONNX, TensorFlow 到 NCNN, MNN, Tengine
这个更神奇 网页上点一下就可以了。
对于int8量化readme没写怎么实现 而且PC上运行会更慢 这个我没有测试