由于训练的Epoch较少,检测效果并不是很理想。大家可以自己去调参来提升检测效果。
https://www.bilibili.com/video/BV1hZ4y1H7f9/
- 首先安装pytorch环境。pytorch版本1.2及以上版本。
conda install pytorch torchvision cudatoolkit=10.1 -c pytorch //安装最新pytorch1.5
- 安装编译MNN。
2.1. MNN安装过程请参考我的博客
2.2. 安装包安装完成之后会在MNN/build
文件夹里面生成一个libMNN.so
文件,需要将这个文件复制到person-detector/MNN/mnn/lib
进行替换。 - 其他安装包安装。
conda install 安装包
or
pip install 安装包
- 直接运行
detect_imgs.py
就可以检测imgs
文件夹里面的图片。
python detect_imgs.py
- 将person-detector/MNN/build删除。
- 然后建立build文件,重新进行编译。
cd person-detector/MNN
mkdir build
cd build
cmake ..
make -j8
1. cd person-detector/MNN/python
2. python person-detector-pic.py --imgs_path ../imgs # 检测图片,可以在person-detector-pic.py里面修改图片测试路径。
3. python person-detector-video.py # 检测视频,可以在person-detector-video.py里面修改视频测试路径。
cd build
./Ultra-face-mnn ../model/version-RFB/617-1.mnn ../imgs/timg.jpg
# 量化之后的版本
cd build
./Ultra-face-mnn ../model/version-RFB/617-1-sq.mnn ../imgs/timg.jpg
- 训练数据集采用的是VOC格式的数据集。训练数据集路径可以在
train-version-RFB.sh
里面修改。 - 使用脚本可以将
coco
数据集转成VOC
格式且只有行人检测框的数据集。
COCO数据集转VOC数据集只包含行人的转换教程
bash train-version-RFB.sh
- pth模型转onnx模型,在转模型之间需要将person-detector/version/ssd/ssd.py进行修改,修改成下面的样子。
if self.is_test:
confidences = F.softmax(confidences, dim=2)
boxes = locations
#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)
return confidences, boxes
然后再运行转换文件。
python convert_to_onnx.py
- 将onnx模型转成mnn模型
2.1 进到主目录下的MNN/build文件里面(不是person-detector/MNN文件)
2.2 运行MNNConvert来转换模型
./MNNConvert -f ONNX --modelFile XXX.onnx --MNNModel XXX.mnn --bizCode biz
- 模型的INT8量化 3.1 编译MNN的量化工具。
cd MNN/build
cmake .. -DMNN_BUILD_QUANTOOLS=on
make -j8
3.2 构建一个pretreatConfig.json文件,代码如下:
{
"format":"RGB",
"mean":[
127.5,
127.5,
127.5
],
"normal":[
0.00784314,
0.00784314,
0.00784314
],
"width":224,
"height":224,
"path":"path/to/images/",
"used_image_num":500,
"feature_quantize_method":"KL",
"weight_quantize_method":"MAX_ABS"
}
3.3 在MNN/build里面运行量化程序。
./quantized.out XXX.mnn XXX-INT8.mnn pretreatConfig.json
https://www.yuque.com/mnn/cn/tool_quantize
https://github.com/Linzaer/Ultra-Light-Fast-Generic-Face-Detector-1MB
https://github.com/ruinmessi/RFBNet