官方源码地址:https://github.com/facebookresearch/detr
标注文件.json,格式:
目标检测任务中,主要使用“image_id”图片名,“bbox”目标的边界框(left_x, left_y, w, h),"category_id"目标类别。
各字段详细说明,可参考:
【沐枫8023】https://blog.csdn.net/weixin_/article/details/
1. 创建数据集
导入数据、数据预处理(norm、resize)。如果是训练集,则resize尺度为scales = [480, 512, 544, 576, 608, 640, 672, 704, 736, 768, 800]之一。min(w,h)缩放到scales尺度,另一属性做相应变化,从而满足多尺度。
2. DataLoader
3. 获取数据
注: train数据直接通过data_loader_train获取,不经过此步骤。
boxes处理:
- orig_box(x1, y1, x2, y2),ratio_w = resize_w / orig_w,ratio_h = resize_h / orig_h。
- rescale目标框:orig_box * (ratio_w, ratio_h, ratio_w, ratio_h)
- 中心化:(x1, y1, x2, y2)转(center_x, center_y, w, h)
- (resize_w, resize_h)归一化目标框:(center_x, center_y, w, h) / (resize_w, resize_h, resize_w, resize_h)
批处理batch中图像rescale_size:w取每个image缩放后的max(w1,w2,w3, …);h取每个image缩放后的max(h1, h2, h3, …)。
处理通道boxes数据复原:以val集000000000285.jpg为例
反向执行boxes处理步骤:
- transformer: encoder + decoder
- 构建model、评估准则、后处理器
- 类DETR
- 匈牙利匹配
- 评估标准:loss
3.1、模型:
backbone:
- CNN特征features(list类型):NestedTensor—tensors(torch.Size([2, 2048, 28, 38]))、mask
- 位置编码pos(list类型):torch.Size([2, 256, 28, 38])
transformer:
预测:
- 类别预测:nn.Linear(hs)
- 坐标预测:MLP(hs).sigmoid()
得:
即最后模型输出结果为out。包含keys-values: - pred_logits:类别标签值;
- pred_boxes:检测框,归一化(center_x, center_y, h, w);
- aux_outputs:(可选),用于辅助损失计算,返回的每个解码层结果,不包含最后一层解码层(已包含在pred_logits, pred_boxes中)。
3.2、特征评估:
matcher:giou、匈牙利分配,预测(最后一层输出(即out前两个key))与targets.
- 先对pred_logits使用softmax()计算类别概率值,然后根据targets的类别索引取相应类别的概率值,计算分类损失cost_class。
- 计算boxes的L1损失cost_bbox
- 计算boxes giou损失cost_giou
损失矩阵:
改进的匈牙利算法分配:
对批处理中的每个图像predicts和targets的损失矩阵计算分配,返回匹配成功的索引值。linear_sum_assignment执行次数由batch_size决定。c[i]大小为[len(predicts), len(targets)]。
losses:
postprocessors:pred_boxes转原始图像,xyxy格式。
检测结果为:
可阅读博客:
到此这篇detr源码(detr代码)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!https://blog.csdn.net/baidu_/article/details/
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rfx/17615.html