NEWS DETAIL

DETR训练实践以及自动预标注脚本、测试可视化脚本

发布时间:2026/10/16 22:25:35 · 栏目:资讯中心

尧图网络原创建站知识分享正文
目录自动预标注脚本测试可视化脚本DETR训练自己的数据集自动预标注脚本总所周知标注是一个体力活而我又是一个懒人所以我就自己写了个脚本。。。并不要求高精度只是想体验用DETR训练自己的数据集又不想标注的人可以借鉴或使用。输入方式可以调用摄像头或者读取视频、图片三种方式来获取输入我加了print提示可以直接运行查看哈。输入012来选择功能分为3种查看原图检测可视化图像标注由于这次我是用我的人脸做了一个数据集所以取名face detection。如果选择image label接下来是选择数据集类型输入对应的字符例如test就可以开始了。其他的功能可以读者自己慢慢摸索一下。有需要的或者意见的也可以直接在评论区提出来我看见了也会及时回复。这里就不说太多了。输出结果测试可视化脚本因为论文源代码里是没有test脚本的所以我就直接写了一个test脚本包括了可视化结果其实和源码是同样的架构搭建模型后load训练好的参数构建测试数据集获取测试输出后用后处理获得高得分的目标然后可视化出来有需要的也可以评论需要哈。这里我就只把主要函数贴上来了def main(dataset_type): device torch.device(cuda) model build_model() model.to(device) #dataset dataset_test build_dataset(dataset_type) sampler_test torch.utils.data.SequentialSampler(dataset_test) data_loader_test DataLoader(dataset_test, 1, samplersampler_test, drop_lastFalse, collate_fnutils.collate_fn, num_workers0) base_ds get_coco_api_from_dataset(dataset_test) #load model params load_path D:\\fgy\\Desktop\\DETR\\detr\\pthsave\\pthsave_facedetect\\checkpoint.pth checkpoint torch.load(load_path, map_locationcpu) model.load_state_dict(checkpoint[model],False) model.eval() #postprocess postprocessors {bbox: detr.PostProcess()} iou_types tuple(k for k in (segm, bbox) if k in postprocessors.keys()) coco_evaluator coco_eval.CocoEvaluator(base_ds, iou_types) image_path D:\\fgy\\Desktop\\DETR\\dataroot\\{}.format(dataset_type) #get result and visual for img_data, target in data_loader_test: img_data img_data.to(device) target [{k: v.to(device) for k, v in t.items()} for t in target] output model(img_data) # print(output) orig_target_sizes torch.stack([t[orig_size] for t in target], dim0) result postprocessors[bbox](output, orig_target_sizes) res {target[image_id].item(): output for target, output in zip(target, result)} if coco_evaluator is not None: coco_evaluator.update(res) # print(res) res_index [] score[] min_score 0.995 res_lable[] res_bbox[] res res[target[0][image_id].item()] for i in range(0,100): res_tmp res[scores] if float(res_tmp[i]) min_score: score.append(float(res_tmp[i])) res_index.append(i) res_lable.append(int(res[labels][res_index].cpu().numpy())) res_bbox.append(res[boxes][res_index].cpu().numpy().tolist()) print(processing str(target[0][image_id].item())) print(result: ,score, res_lable, res_bbox) img cv.imread(os.path.join(image_path,str(target[0][image_id].item()).jpg)) for bbox in res_bbox: bbox bbox[0] cv.rectangle(img, (int(bbox[0]), int(bbox[1])), (int(bbox[2]), int(bbox[3])), (255, 0, 0), 1) cv.imshow(Faceimglabel, img) cv.waitKey(0) if coco_evaluator is not None: coco_evaluator.synchronize_between_processes() coco_evaluator.accumulate() coco_evaluator.summarize() print(coco_evaluator)DETR训练自己的数据集开始之前对DETR或源码不了解的建议先看一下DETR源码笔记一_在努力的松鼠的博客-CSDN博客_detr源码DETR源码笔记二_在努力的松鼠的博客-CSDN博客一、首先是搭建自己的数据集标注完成后查看数据集的类别数N其中不包括背景类。二、可以初始化参数训练也可以下载预训练模型建议下载一个预训练模型提高训练速度。下载地址可以在https://gitee.com/fgy120/DETR的ReadMe里的Modelzoo查找自己想要训练的网络结构的预训练模型下载地址。三、没有下载预训练模型跳过这一步下载好预训练模型后我们需要把模型的head输出数改为我们自己的数据集类别数N可以用这个脚本注意里面需要修改的class不包含背景类。https://gitee.com/fgy120/DETR/blob/master/util/change_pth_numclass.py四、预训练模型准备好后就是配置我们的agrs——运行配置和训练的超参等在main.py的get_args_parser函数里关于parser的使用可以看一下argparse解析器_在努力的松鼠的博客-CSDN博客因为我喜欢pycharm直接运行 所以我直接给很多的arg都加上了default默认值懒人实锤了。。。值得注意要修改的几个argbatch_size如果太高了显卡带不动会显示爆显存的错就需要降低我们的batch_size了我3060显460*680的图像设了4感觉刚刚好大家量力而行。epochs: 训练的轮次所有图片训练一次是一轮。backbonebackbone的网络结构选择我选择了resnet50coco_path是你存放数据集ann、train、test、val文件夹的文件夹路径output_dir是你训练以及验证模型保存的文件夹路径world_size一般别超过1是分布式训练需要用到的设置resume预处理模型以及断点训练的load模型的地址下面可以参考# parser.add_argument(--resume, defaultD:\\fgy\\Desktop\\DETR\\detr\\pthsave\\pthsave_facedetect\\checkpoint.pth, helpresume from checkpoint) parser.add_argument(--resume, defaultD:\\fgy\\Desktop\\DETR\\savepth\\detr_r50init_1.pth, helpresume from checkpoint)五、接下来是在代码里修改我们的数据集类别数在detr.py的build()函数为了方便我都修改成了我的类别数数据集也懒得弄了就弄了一个类别。。六、上面的都弄好后运行main.py就可以了。上面提到的代码和脚本都可以在https://gitee.com/fgy120/DETR找到有问题或有建议的也可以评论区交流
✦

本文为尧图网络原创建站知识分享。想针对自身行业获取定制化建站方案?欢迎咨询,资深顾问免费为你出思路。

RELATED

相关 资讯推荐

MORE

更多 新鲜资讯

JMeter入门实战:从零构建HTTP接口性能测试脚本与结果分析
2026/10/16 11:11:29

JMeter入门实战:从零构建HTTP接口性能测试脚本与结果分析

1. 项目概述:从零开始,用JMeter搞定HTTP性能测试 刚接触性能测试的新手,或者是从功能测试转过来的朋友,一听到“压测”两个字,心里可能就有点发怵。工具那么多,概念那么杂,从哪儿下手呢&#xf…

Earendel: 一个纯TS写的POSIX兼容的微内核Web操作系统
2026/10/15 22:19:23

Earendel: 一个纯TS写的POSIX兼容的微内核Web操作系统

最近我用TypeScript写了一个运行在浏览器里的Web操作系统 Earendel(目前已知的距离地球最遥远的恒星)。开发它的初衷主要是为了Linux和操作系统课程的教学。市面上绝大多数Web OS项目,要么只是做了一个长得像Windows/macOS的网页UI拼盘&#…

5分钟掌握Windows防撤回神器:让微信QQ撤回消息无处遁形[特殊字符]
2026/10/13 20:48:30

5分钟掌握Windows防撤回神器:让微信QQ撤回消息无处遁形[特殊字符]

5分钟掌握Windows防撤回神器:让微信QQ撤回消息无处遁形🚀 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: http…

从零制作同人动画:技术路线、流程与实战避坑指南
2026/10/17 10:14:08

从零制作同人动画:技术路线、流程与实战避坑指南

1. 先搞清楚这个“粉丝动画”到底是什么,以及它能解决什么问题看到“五条悟VS宿傩/咒术回战粉丝动画”这个标题,很多人的第一反应可能是去找一个现成的视频。但如果你是一个想自己动手创作、或者想了解这类作品背后技术流程的创作者,这个标题…

闭源降价80%,开源却在涨价:AI定价的交叉路口
2026/10/15 5:55:41

闭源降价80%,开源却在涨价:AI定价的交叉路口

8月6日,两条价格曲线悄然交汇。 一条向下:OpenAI把GPT-5.6 Luna的输出价格从6美元砍到1.2美元/百万Token,降幅80%。另一条向上:同一天,DeepSeek公告全线涨价,措辞是"涨幅较大",非试探…

产线三防平板选哪个牌子?5个品牌实测告诉你别瞎买
2026/10/17 21:18:48

产线三防平板选哪个牌子?5个品牌实测告诉你别瞎买

产线三防平板选哪个牌子?5个品牌实测告诉你别瞎买经常有工厂朋友拿着网上的"三防平板十大品牌排行榜"来问我:到底选哪个?说实话排行榜看看就行,真正选型得看你产线什么场景。今天挑五个在产线数字化里用得比较多的品牌—…

看完这篇,还想了解更多?

预约尧图网络顾问一对一沟通,针对你的行业与现状给出建站建议,全程免费。

免费咨询