编译自定义数据集导出手机端可使用的模型过程中遇到的问题
yxxyuyi 发布于2021-09-16 浏览:69 回复:15
0
收藏

目的:想编译一套自己的模型,使用在安卓机器上面,识别自己自定义的数据集类型

步骤:1、使用labelImg.exe工具标注自己的VOC数据集,执行命令:python dataset/voc/create_list.py -d path/to/dataset,生成需要的trainval.txt和test.txt文件

2、使用命令开始训练:python -u tools/train.py -c configs/yolov3_mobilenet_v1_voc.yml ,使用的移动端模型,可正常训练完成,需要的时间比较长

3、导出可预测模型:python -u tools/export_model.py -c configs/yolov3_mobilenet_v1_voc.yml --output_dir=./inference_model

4、导出模型文件:paddle_lite_opt --model_file=__model__ --param_file=__params__ --optimize_out_type=naive_buffer --optimize_out=cpu_model --valid_targets=arm    ;可正常导出手机端使用的nb模型文件,

目前问题:使用faster_rcnn_r50_fpn_1x.yml  训练的预测模型可在平台端实现正常的识别,使用手机端模型文件(yolov3_mobilenet_v1_voc.yml )导出的模型文件放置到安卓手机端,不可识别到自己自定义标注的数据集:1、文件过大,两个类型的lables,大概有140M(示例程序里面的模型有80种类型才16M);2、识别不了数据集类型

求助:请问一下,是我操作流程有问题还是其他的问题,有成功操作的麻烦指教一下,谢谢!

附上模型的部分参数

architecture: YOLOv3
use_gpu: false
max_iters: 168
log_iter: 20
save_dir: output
snapshot_iter: 2000
metric: VOC
map_type: 11point
pretrain_weights: http://paddle-imagenet-models-name.bj.bcebos.com/MobileNetV1_pretrained.tar
weights: output/yolov3_mobilenet_v1_voc/model_final
num_classes: 2
use_fine_grained_loss: false

 

收藏
点赞
0
个赞
共15条回复 最后由深渊上的坑回复于14天前
#16深渊上的坑回复于14天前
#12 yxxyuyi回复
使用faster_rcnn_r50_fpn_1x.yml训练的模型,导出模型export model,然后再使用opt工具导出nb文件,放置安卓端会异常退出,使用yolov3_mobilenet_v1_voc.yml训练的模型,不会异常退出,但是预测的时候也识别不了图片信息:也不报错 2021-09-23 10:24:46,974 - INFO - Load categories from dataset\label_list.txt 2021-09-23 10:24:48,089 - INFO - Infer iter 0 2021-09-23 10:24:48,121 - INFO - Detection bbox results save in output\1860.jpeg
展开

PC端能预测的模型,导出后,能不能通过opt转化成nb文件,这个不是100%支持的——甚至可以这么说,我遇到的情况,能转化成功的只有几个最常见的yolo和ssd模型,因为有些算子不支持。fastrcnn印象中就不支持……

0
#15深渊上的坑回复于14天前
#11 yxxyuyi回复
使用这个模型faster_rcnn_r50_fpn_1x.yml,在电脑端执行预测python -u tools/infer.py,可正常输出检测到结果有lable名还有bbox框识别了,我现在是使用移动端模型进行预测的,就不能识别到lable,bbox这些数据;使用的是同一个数据集
展开

您得这么理解,对于PaddleLite部署方案,PC端训练的那个模型和部署到手机上的不是同一个

0
#14深渊上的坑回复于14天前

关于部署模型到手机,可以看这两个项目

手把手教你部署移动端迁移学习模型(PaddleX、Paddle-Lite) 

https://aistudio.baidu.com/aistudio/projectdetail/613622

超简单!目标检测模型EasyEdge APP开发示例

https://aistudio.baidu.com/aistudio/projectdetail/1741287

 

 

0
#13yxxyuyi回复于24天前
#9 深渊上的坑回复
楼主之所以会误解yolov3_mobilenet_v1_voc.yml 是手机端模型,应该是没看懂yolov3_mobilenet_v1_voc.yml 的说明。 yolov3_mobilenet_v1_voc.yml 是【针对移动端】优化的模型, 在利用移动端有限算力的情况下,尽可能保持目标检测的准确性。正如你看到的,这个模型文件很小,因此它【很适合】——注意,是适合,不是必须,部署在手机端
展开

训练的模型主要想应用在手机端,当然需要体积尽可能的小,现在是执行的过程中没有错,只是识别不了,主要是yml里面的一些参数不知道配置的对不对,按照faster_rcnn_r50_fpn_1x.yml这个配置的,不清楚到底是哪里的问题

0
#12yxxyuyi回复于24天前
#5 深渊上的坑回复
自定义数据集训练的模型,部署在手机端流程是这样的: 比如使用faster_rcnn_r50_fpn_1x.yml训练的模型,最后要export model,生成导出的模型
展开

使用faster_rcnn_r50_fpn_1x.yml训练的模型,导出模型export model,然后再使用opt工具导出nb文件,放置安卓端会异常退出,使用yolov3_mobilenet_v1_voc.yml训练的模型,不会异常退出,但是预测的时候也识别不了图片信息:也不报错

2021-09-23 10:24:46,974 - INFO - Load categories from dataset\label_list.txt
2021-09-23 10:24:48,089 - INFO - Infer iter 0
2021-09-23 10:24:48,121 - INFO - Detection bbox results save in output\1860.jpeg

0
#11yxxyuyi回复于24天前
#4 深渊上的坑回复
额,没看懂 训练的时候是faster_rcnn_r50_fpn_1x.yml? 然后这句,使用手机端模型文件(yolov3_mobilenet_v1_voc.yml )…… 这两个不是一回事啊
展开

使用这个模型faster_rcnn_r50_fpn_1x.yml,在电脑端执行预测python -u tools/infer.py,可正常输出检测到结果有lable名还有bbox框识别了,我现在是使用移动端模型进行预测的,就不能识别到lable,bbox这些数据;使用的是同一个数据集

0
#10深渊上的坑回复于24天前

相比之下faster_rcnn_r50_fpn_1x的模型文件可能就比较大了,推理速度也慢。但是,只要paddle lite的算子支持(印象中是支持),它也是可以部署在手机上的(无非就是预测非常卡)

0
#9深渊上的坑回复于24天前

楼主之所以会误解yolov3_mobilenet_v1_voc.yml 是手机端模型,应该是没看懂yolov3_mobilenet_v1_voc.yml 的说明。

yolov3_mobilenet_v1_voc.yml 是【针对移动端】优化的模型, 在利用移动端有限算力的情况下,尽可能保持目标检测的准确性。正如你看到的,这个模型文件很小,因此它【很适合】——注意,是适合,不是必须,部署在手机端

0
#8深渊上的坑回复于24天前

至于文中提到的所谓手机端模型 yolov3_mobilenet_v1_voc.yml 

它其实和faster_rcnn_r50_fpn_1x.yml是并列的,没有所谓平台端和手机端之分,两个各自可以实现平台端和手机端部署,但是最重要的是,他们是两个模型!不是一个平台一个手机所谓有先后关系的模型。

0
#7深渊上的坑回复于24天前

如果训练的时候是faster_rcnn_r50_fpn_1x.yml,那么要在手机端部署的,自然也是faster_rcnn_r50_fpn_1x.yml(前提是paddle lite能支持faster rcnn的算子)

0
#6深渊上的坑回复于24天前

如果想要部署在手机端,那么就要用到paddle lite量化这个模型,最后会生成一个 .nb的文件,这个,才是真正能在手机段部署的模型

0
#5深渊上的坑回复于24天前

自定义数据集训练的模型,部署在手机端流程是这样的:

比如使用faster_rcnn_r50_fpn_1x.yml训练的模型,最后要export model,生成导出的模型

0
#4深渊上的坑回复于24天前

额,没看懂

训练的时候是faster_rcnn_r50_fpn_1x.yml?

然后这句,使用手机端模型文件(yolov3_mobilenet_v1_voc.yml )……

这两个不是一回事啊

0
#3深渊上的坑回复于24天前

2、识别不了数据集类型

这句没怎么看懂,是自定义的标签没法用上吗

0
#2深渊上的坑回复于24天前

faster_rcnn_r50_fpn_1x 140M是正常大小额

0
快速回复
TOP
切换版块