mmdetection v2.x模型训练与测试
因为工作关系,接触到了mmdetection。它是商汤科技和香港中文大学开源的一款基于pytorch底层的目标检测工具箱,隶属于mmlab项目。mmdetection 2.7文件结构。其中configs文件夹下为网络模型文件,checkpoints文件夹下为模型权重文件(.pth)1. 模型训练在模型训练之前,要先配置好参数。配置参数是通过修改文件的方式完成的,主要包括三部分:配置数据,配置模型和
因为工作关系,接触到了mmdetection。它是商汤科技和香港中文大学开源的一款基于pytorch底层的目标检测工具箱,隶属于mmlab项目。
mmdetection 2.7文件结构。其中configs文件夹下为网络模型文件,checkpoints文件夹下为模型权重文件(.pth)
1. 模型训练
在模型训练之前,要先配置好参数。配置参数是通过修改文件的方式完成的,主要包括三部分:配置数据,配置模型和配置训练策略。下面将以训练模型faster_rcnn_r50_fpn_1x_coco为例进行说明(其中faster_rcnn表示算法名称,r50表示backbone使用resnet50,fpn表示使用fpn的neck,1x标识训练12个epoch,coco表示数据用coco的格式)
具体的参数解释说明可以参考mmdetection的configs中的各项参数具体解释_藏云阁主的博客-CSDN博客_workers_per_gpu
1)配置数据
在configs里找到faster_rcnn_r50_fpn_1x_coco.py
好吧,套娃模式。让我们先找到../_base_/datasets/coco_detection.py。这个文件主要是为了定义一个data字典,其中包括train,val,test
data_root 数据的根目录(数据按照文件中/train2017的方式摆放)。
image_scale 图像统一缩放的尺寸。
samples_per_gpu :batch_size
evaluation : 每隔1轮评估一次,以bbox为评估对象。
2)配置模型
打开../_base_/models/faster_rcnn_r50_fpn.py
model[pretrained]:
model[roi_head][bbox_head][num_classes] :分类类别数量,这里有几个类别就是几个,不用+1表示背景。
3)配置训练策略
打开'../_base_/schedules/schedule_1x.py', '../_base_/default_runtime.py'
optimizer : 优化器
total_epochs :epochs
load_from : 预训练权重文件(.pth)
4) 修改类名称
打开文件/mmdetection/mmdet/datasets/coco.py
把这里的CLASSES修改成自己对应的类别名称。
在coco.py文件里找到evaluate函数,更改参数classwise=True可在训练时看到每一个类别的AP值。
def evaluate(self,
results,
metric='bbox',
logger=None,
jsonfile_prefix=None,
classwise=False,
proposal_nums=(100, 300, 1000),
iou_thrs=None,
metric_items=None):
然后打开文件/mmdetection/mmdet/core/evaluation/class_name.py
把这里的return的类别换成自己的类别名称,注意和coco.py里保持一致。
然后就可以训练模型,模型训练使用命令
python tools/train.py configs/xxx.py --work-dir xxx --gpus 1
configs/xxx.py是需要训练的模型定义文件。参数--work-dir表示训练模型保存的目录。
2. 模型测试
模型训练完了,训练的过程中也得了验证集的map。mmdetection也提供了测试测试集的方法(带标注的),还记得在configs/xxx.py里定义的测试数据的类型吗
先要修改数据配置,让程序找到测试文件图片和标注
然后跟训练时一样修改类名称coco.py, class_name.py
运行命令
python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} [--out ${RESULT_FILE.pkl}]
config_file
:模型配置文件的路径checkpoint_file
:模型参数文件的路径gpu_num
:使用的GPU
数量--out
:设置输出pkl
测试结果文件的路径--eval
:设置评价指标(voc
:mAP
,recall
|coco
:bbox
,segm
,proposal
)--show
:显示带预测框的测试集图像--show-dir
:设置存放带预测框的测试集图像的目录路径--show-score-thr
:设置显示预测框的阈值,默认值为0.3
上面命令得到文件.pkl,然后对模型进行评估,就可以得到每个类别的AP了
python tools/eval_metric.py ${CONFIG_FILE} ${PKL_RESULTS} [--eval ${EVAL_METRICS}]
config_file
:模型配置文件的路径pkl_results
:pkl
测试结果文件的路径--eval
:设置评价指标(voc
:mAP
,recall
|coco
:bbox
,segm
,proposal
)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)