当前位置: 首页 > news >正文

mmdetection训练 测试步骤

训练
# 使用预训练模型了
nohup python tools/train.py configs/tood/tood_r50_fpn_1x_fwpd.py > tood-visdrone.log 2>&1 & tail -f tood-visdrone.log
nohup python tools/train.py configs/tood/tood_r50_fpn_1x_fwpd.py \
--cfg-options model.backbone.init_cfg=None > tood-visdrone-scratch.log 2>&1 &
tail -f tood-visdrone-scratch.log

这里我使用的是nohup命令,启动后台训练,这样前面控制台断开也可以后台继续运行。

--cfg-options 这里选择None,不使用预训练模型,我需要做对比试验,就直接从头开始训练的

把训练日志写进log文件里  && 通过tail命令实时显示日志文件,这个也可以不看,主要是方便看有没有报错

测试
# 测试
python tools/test.py configs/tood/tood_r50_fpn_1x_fwpd.py work_dirs/tood_r50_fpn_1x_fwpd/best_coco_bbox_mAP_epoch_150.pth --show --show-dir test_save
# 快速测试,快速查看分数,不保存画了框的图片
python tools/test.py configs/tood/tood_r50_fpn_1x_fwpd.py work_dirs/tood_r50_fpn_1x_fwpd/best_coco_bbox_mAP_epoch_150.pth

建议使用第二个命令,直接掠过画图过程,会比较快。

输出的如下面所示:

Accumulating evaluation results...
DONE (t=0.69s).Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.833Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=1000 ] = 0.962Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=1000 ] = 0.890Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=1000 ] = 0.812Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=1000 ] = 0.958Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=1000 ] = 1.000Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.855Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=300 ] = 0.855Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=1000 ] = 0.855Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=1000 ] = 0.837Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=1000 ] = 0.974Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=1000 ] = 1.000
10/18 20:52:11 - mmengine - INFO - 
+----------+-------+--------+--------+-------+-------+-------+
| category | mAP   | mAP_50 | mAP_75 | mAP_s | mAP_m | mAP_l |
+----------+-------+--------+--------+-------+-------+-------+
| car      | 0.882 | 0.978  | 0.937  | 0.843 | 0.983 | 1.0   |
| people   | 0.785 | 0.945  | 0.844  | 0.781 | 0.934 | nan   |
+----------+-------+--------+--------+-------+-------+-------+
10/18 20:52:11 - mmengine - INFO - bbox_mAP_copypaste: 0.833 0.962 0.890 0.812 0.958 1.000
10/18 20:52:11 - mmengine - INFO - Epoch(test) [367/367]    coco/car_precision: 0.8820  coco/people_precision: 0.7850  coco/bbox_mAP: 0.8330  coco/bbox_mAP_50: 0.9620  coco/bbox_mAP_75: 0.8900  coco/bbox_mAP_s: 0.8120  coco/bbox_mAP_m: 0.9580  coco/bbox_mAP_l: 1.0000  data_time: 0.0154  time: 0.2207

另外:需要修改代码

_base_ = 'tood_r50_fpn_1x_coco.py'model = dict(bbox_head=dict(num_classes=2)
)# 修改数据集相关配置
data_root = '/mnt/disk3/sunjiahui/data/yolov8_train_val/'
metainfo = {'classes': ('car', 'people' ),# 'palette': [#     (220, 20, 60),# ]
}
train_dataloader = dict(batch_size=8,num_workers=8,dataset=dict(data_root=data_root,metainfo=metainfo,ann_file='train/annotations/train.json',data_prefix=dict(img='train/images')))
# 文件路径:data_root + ann_file
# /mnt/disk3/sunjiahui/data/yolov8_train_val/train/train.jsonval_dataloader = dict(batch_size=8,num_workers=8,dataset=dict(data_root=data_root,metainfo=metainfo,ann_file='val/annotations/val.json',data_prefix=dict(img='val/images')))# 4. 【关键修正】显式地、完整地覆盖评估器配置
val_evaluator = dict(type='CocoMetric',  # 评估器类型通常保持不变ann_file=data_root + 'val/annotations/val.json' # 确保这里的路径是你的验证集标注文件!
)test_dataloader = dict(batch_size=8,num_workers=8,dataset=dict(data_root=data_root,metainfo=metainfo,ann_file='test/annotations/test.json',data_prefix=dict(img='test/images')))# 修改评价指标相关配置
val_evaluator = dict(ann_file=data_root + 'val/annotations/val.json')
test_evaluator = dict(ann_file=data_root + 'test/annotations/test.json',classwise=True  # 显示每个类别的AP
)default_hooks = dict(logger=dict(type='LoggerHook', interval=50),checkpoint=dict(type='CheckpointHook',interval=10,                 # 每 10 轮保存一次(这个值可以随你定)save_best='coco/bbox_mAP',   # 关键!自动保存 mAP 最高的模型rule='greater',              # 规则是“越大越好”max_keep_ckpts=3             # 最多保留几个模型(-1表示全部保留)),# ---------------------------------
)
# 使用预训练的模型权重来做初始化
load_from = 'tood_r50_fpn_1x_coco_20211210_103425-20e20746.pth'# 覆盖默认的训练计划
train_cfg = dict(type='EpochBasedTrainLoop',  # 训练循环的类型,保持默认即可max_epochs=200,              # <<< 将最大轮数设置为 200val_interval=50)             # <<< 每训练 10 轮在验证集上评估一次

http://www.dtcms.com/a/499068.html

相关文章:

  • 【基础算法】01BFS
  • Openharmony应用开发之Ability异常退出与UIAbility数据备份开发实战
  • 我做了一个免费的 DeepResearch 网站,让科研变得更简单
  • 顺德大良那里做网站好福建省城乡和住房建设厅网站
  • 前端+AI:CSS3(二)
  • go邮件发送——附件与图片显示
  • AI+若依框架(基础篇)
  • 机器学习(2) 线性回归和代价函数
  • 基于Ollama和sentence-transformers,通过RAG实现问答式定制化回复
  • Sentinel:阿里云高并发流量控制
  • 从技术到商业:电商返利平台的核心指标设计(GMV、佣金率、留存率)与技术支撑体系
  • ShardingSphere 源码解析之分片引擎(下)
  • winxp下做网站网店设计美工培训
  • 【论文学习】大语言模型(LLM)论文
  • 做网站ssl证书必须要吗如何黑掉jsp做的网站
  • CLICKHOUSE分布式表初体验
  • 学习周报十八
  • 《Kubernetes 集群搭建全指南:从核心概念到环境部署!》
  • 找工作哪个网站好58同城做网站最简单的
  • 携程网站用js怎么做淄博哪家网络公司做网站好
  • Linux Shell 正则表达式中的 POSIX 字符集:用法与实战
  • MQTT协议,EMQX自建服务器
  • 力扣1287. 有序数组中出现次数超过25%的元素
  • Linux网络与路由配置完全指南
  • 【高并发服务器】六、日志宏的实现
  • 什么是网络割接
  • 中山网站建设文化报价个人网站设计结构图
  • 专业简历制作网站推荐渭南网站建设网站排名优化
  • Electron学习(一):创建第一个应用并打包成功
  • EF Core FromExpression 方法