基于PaddleDetection的菌落(colony)计数
1.PaddleDetection介绍
github: https://github.com/PaddlePaddle/PaddleDetection
PaddleDetection是一个基于PaddlePaddle的目标检测端到端开发套件,在提供丰富的模型组件和测试基准的同时,注重端到端的产业落地应用,通过打造产业级特色模型|工具、建设产业应用范例等手段,帮助开发者实现数据准备、模型选型、模型训练、模型部署的全流程打通,快速进行落地应用。
各移动端模型在COCO数据集上精度mAP和高通骁龙865处理器上预测速度(FPS)对比图
1.2 PP-YOLOE介绍
PP-YOLOE是基于PP-YOLOv2的卓越的单阶段Anchor-free模型,超越了多种流行的YOLO模型。PP-YOLOE有一系列的模型,即s/m/l/x,可以通过width multiplier和depth multiplier配置。
2 基于PaddleDetection的菌落(colony)计数
2.1 菌落(colony)数据集介绍
菌落数据集相对来说比较难收集,标注成本大,目前标记的数据样本为213张,标记格式为VOC数据
2.2.1 生成适合PaddleDetection格式的数据集
ls JPEGImages/*.jpg | shuf > all_image_list.txtawk -F"/" '{print $2}' all_image_list.txt | awk -F".jpg" '{print $1}' | awk -F"\\t" '{print "JPEGImages/"$1".jpg Annotations/"$1".xml"}' > all_list.txt# 训练集、验证集、测试集比例分别约80%、10%、10%。
>>head -n 21 all_list.txt > test.txt
>>head -n 21 all_list.txt | tail -n 42 > valid.txt
>>tail -n 171 all_list.txt > train.txt
2.2 修改训练配置文件
configs\\datasets\\colony.yml
metric: VOC
map_type: 11point
num_classes: 1TrainDataset:name: VOCDataSetdataset_dir: dataset/colonyanno_path: train.txtlabel_list: label_list.txtdata_fields: ['image', 'gt_bbox', 'gt_class', 'difficult']EvalDataset:name: VOCDataSetdataset_dir: dataset/colonyanno_path: test.txtlabel_list: label_list.txtdata_fields: ['image', 'gt_bbox', 'gt_class', 'difficult']TestDataset:name: ImageFolderanno_path: dataset/colony/label_list.txt
configs\\ppyoloe\\voc\\ppyoloe_plus_crn_s_30e_voc_colony.yml
_BASE_: ['../../datasets/colony.yml','../../runtime.yml','../_base_/optimizer_80e.yml','../_base_/ppyoloe_plus_crn.yml','../_base_/ppyoloe_plus_reader.yml',
]log_iter: 100
snapshot_epoch: 10
weights: output/ppyoloe_plus_crn_s_30e_voc/model_finalpretrain_weights: https://bj.bcebos.com/v1/paddledet/models/ppyoloe_plus_crn_s_80e_coco.pdparams
depth_mult: 0.33
width_mult: 0.50TrainReader:batch_size: 4 # default 8 gpus, total bs = 64EvalReader:batch_size: 2epoch: 200
LearningRate:base_lr: 0.00025schedulers:- !CosineDecaymax_epochs: 36- !LinearWarmupstart_factor: 0.epochs: 1PPYOLOEHead:static_assigner_epoch: -1nms:name: MultiClassNMSnms_top_k: 1000keep_top_k: 300score_threshold: 0.01nms_threshold: 0.7
2.3 开启训练
python tools/train.py -c configs/ppyoloe/voc/ppyoloe_plus_crn_s_30e_voc_colony.yml --use_vdl=true --vdl_log_dir=vdl_dir/scalar --eval
使用如下命令启动VisualDL查看日志
# 下述命令会在127.0.0.1上启动一个服务,支持通过前端web页面查看,可以通过--host这个参数指定实际ip地址 visualdl --logdir vdl_dir/scalar/
2.4 模型评估
默认将训练生成的模型保存在当前output
文件夹下
[03/27 16:27:42] ppdet.utils.checkpoint INFO: Finish loading model weights: output/ppyoloe_plus_crn_s_30e_voc_colony/model_final.pdparams
[03/27 16:27:43] ppdet.engine INFO: Eval iter: 0
[03/27 16:27:47] ppdet.metrics.metrics INFO: Accumulating evaluatation results...
[03/27 16:27:47] ppdet.metrics.metrics INFO: mAP(0.50, 11point) = 87.58%
[03/27 16:27:47] ppdet.engine INFO: Total sample number: 21, average FPS: 4.365165732845092
python tools\\eval.py -c configs/ppyoloe/voc/ppyoloe_plus_crn_s_30e_voc_colony.yml -o weights=output/ppyoloe_plus_crn_s_30e_voc_colony/model_final
2.5 图片预测
python tools/infer.py -c configs/ppyoloe/voc/ppyoloe_plus_crn_s_30e_voc_colony.yml -o use_gpu=true --infer_img=dataset/colony/JPEGImages/1.jpg