热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

conda如何升级pytorch_使用PyTorch实现目标检测新范式DETR(基于transformer)

DETR(DEtectionTRansformer)的PyTorch训练代码和预训练模型。我们用Transformer代替了整个复杂的手工物体检测管道,并用ResNe

DETR(DEtectionTRansformer)的PyTorch训练代码和预训练模型。我们用Transformer 代替了整个复杂的手工物体检测管道,并用ResNet-50匹配了Faster R-CNN,使用一半的计算能力(FLOP)和相同数量的参数在COCO上获得了 42 AP  。在PyTorch的50行中进行推断。

9f978213915f2a78bca656139807ef51.png

DETR

这是什么

与传统的计算机视觉技术不同,DETR将目标检测作为一个直接的集合预测问题来处理。它由一个基于集合的全局损失和一个Transformer encoder-decoder 结构组成,该全局损失通过二分匹配强制进行唯一预测。给定固定的学习对象查询集,则DETR会考虑对象与全局图像上下文之间的关系,以直接并行并行输出最终的预测集。由于这种并行性,DETR非常快速和高效。

关于代码

我们认为,物体检测不应该比分类更困难,并且不应要求使用复杂的库来进行训练和推理。DETR的实现和试验非常简单,我们提供了一个[独立Colab笔记本](https://colab.research.google.com/github/facebook research/detr/blob/colab/notebooks/detr_demo.ipynb)演示如何使用DETR进行推断,这仅需几行PyTorch代码。训练代码遵循这个想法--它不是一个库,而是一个带有标准训练循环的main.py导入模型和条件定义。有关详细信息,请参见Nicolas Carion, Francisco Massa,Gabriel Synnaeve,Nicolas Usunier,Alexander Kirillov, 和Sergey Zagoruyko.的End-to-End Object Detection with Transformers(https://ai.facebook.com/research/publications/end-to-end-object-detection-with-transformers)我们提供基准 DETR 和 DETR-DC5 模型,并计划在将来包括更多模型。AP 是使用Torcscript transformer,在COCO 2017 val5k上计算得出的,并且推理时间超过了前100幅val5k COCO图像。

0f3c9922536296389b0765ba107173ac.png

COCO val5k数据集的评估结果可以在这里gist(https://gist.github.com/szagoruyko/9c9ebb8455610958f7deaa27845d7918)找到.COCO全景val5k模型:

0cf362f535345c179ba2991103187634.png

这些模型也可通过torch hub找到,以用预训练的权重加载DETR R50,只需执行以下操作:

model = torch.hub.load('facebookresearch/detr', 'detr_resnet50', pretrained=True)

用法

DETR中没有多余的已编译组件,并且程序包依赖项很小,因此代码使用非常简单。我们提供如何通过conda安装依赖项的说明,因此该代码非常易于使用。我们提供了有关如何通过conda安装依赖项的说明。首先,在本地克隆存储库:

git clone https://github.com/facebookresearch/detr.git

然后安装 PyTorch 1.5+ 和 torchvision 0.6+:

conda install -c pytorch pytorch torchvision

安装 pycocotools (用于 COCO 的评估) 和 scipy (用于训练):

conda install cython scipypip install -U 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'这有助于训练和评估检测模型。(可选)与panoptic一起使用,安装panopticapi:

pip install git+https://github.com/cocodataset/panopticapi.git

数据准备

从 http://cocodataset.org下载并提取带有标注的COCO 2017训练和验证图像,我们希望目录结构如下:

path/to/coco/ annotations/ # 标注json文件 train2017/ # 训练集图片 val2017/ # 验证集图片

训练

在8个GPU的单个节点上训练基准 DETR 300个 epoch,运行:

python -m torch.distributed.launch --nproc_per_node=8 --use_env main.py --coco_path /path/to/coco 一个epoch需要28分钟,因此在一台装有8个V100卡的机器上,300个epoch的训练大约需要6天。为了简化对我们实验结果的复现,我们提供了150个epoch schedule(在一台机器上训练3天)的 结果和训练日志(https://gist.github.com/szagoruyko/b4c3b2c3627294fc369b899987385a3f),结果达到了39.5 / 60.3 AP / AP50。我们使用AdamW训练DETR,将transformer中的学习率设置为backbone中的1e-4和1e-5。使用水平翻转,缩放图片来进行图片增强。图像被重新缩放为具有最小800和最大1333的大小。对transformer进行了dropout为0.1的训练,对整个模型进行了0.1的梯度裁剪。

评估

在COCO val5k数据集上使用单个GPU来评估DETR R50:

python main.py --batch_size 2 --no_aux_loss --eval --resume https://dl.fbaipublicfiles.com/detr/detr-r50-e632da11.pth --coco_path /path/to/coco在gist上,我们提供所有DETR检测模型的结果 。
请注意,数量根据每个GPU的批处理大小(batch size)(图像数量)而有所不同。非DC5模型的批处理大小为2,而DC5的批处理大小为1,因此,如果每个GPU不止对1个图像进行评估,那么DC5模型的AP会显着下降。

模型训练

可以通过Slurm和submitit(https://github.com/facebookincubator/submitit)来进行分布式训练:

pip install submitit

在4个节点上训练基本模型DETR-6-6,300个epoch:

python run_with_submitit.py --timeout 3000 --coco_path /path/to/coco

许可证

DETR是在Apache2.0许可下发布的。请查看LICENSE(https://github.com/facebookresearch/detr/blob/master/LICENSE)文件来获得更多信息。

帮助

我们非常欢迎您的请求!请查看:CONTRIBUTING.md(https://github.com/facebookresearch/detr/blob/master/.github/CONTRIBUTING.md)CODE_OF_CONDUCT.md(https://github.com/facebookresearch/detr/blob/master/.github/CODE_OF_CONDUCT.md)转载来源:磐创AI

06956ba38ea5014cd53d7a0636478df8.png

432f52ecc3e58ae55897cb44b7e6ec0f.gifd9aec2f9accc206d95d0e8e946c3328b.png

历史文章推荐

  • 论文解读 | 知识图谱最新研究综述

  • StegaStamp:加州大学伯克利分校开源神奇的照片隐写术,打印的照片能当二维码用

  • 字节跳动基于深度强化学习的广告推荐模型——DEAR详解

  • 你的毕业论文过了吗?《如何撰写毕业论文?》

  • 卡尔曼滤波系列——经典卡尔曼滤波推导

  • 谈谈CNN中的位置和尺度问题

  • 目标检测和感受野的总结和想法

  • 一代传奇 SIFT 算法 专利到期!

  • CNN真的需要下采样(上采样)吗?

  • 人体姿态估计的过去,现在,未来

  • 2018-2019年度 Top10 综述

  • 【Awesome】Few-Shot Learning论文阅读列表

  • 你有哪些deep learning(rnn、cnn)调参的经验?

  • 给研究新生的建议,光看论文是学不好的,一定要看书,看书,看书!

  • 不是我们喜新厌旧,而是RAdam确实是好用,新的State of the Art优化器RAdam

你正在看吗?👇




推荐阅读
  • td{border:1pxsolid#808080;}参考:和FMX相关的类(表)TFmxObjectIFreeNotification ... [详细]
  • 本文介绍了 Oracle SQL 中的集合运算、子查询、数据处理、表的创建与管理等内容。包括查询部门号为10和20的员工信息、使用集合运算、子查询的注意事项、数据插入与删除、表的创建与修改等。 ... [详细]
  • Python Selenium WebDriver 浏览器驱动详解与实践
    本文详细介绍了如何使用Python结合Selenium和unittest构建自动化测试框架,重点解析了WebDriver浏览器驱动的配置与使用方法,涵盖Chrome、Firefox、IE/Edge等主流浏览器。 ... [详细]
  • 本文详细介绍了如何使用C#实现不同类型的系统服务账户(如Windows服务、计划任务和IIS应用池)的密码重置方法。 ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • 本文详细介绍了如何利用 Bootstrap Table 实现数据展示与操作,包括数据加载、表格配置及前后端交互等关键步骤。 ... [详细]
  • 说明Python教程正在编写中,欢迎大家加微信sinbam提供意见、建议、纠错、催更。drymail是一个邮件发送库,封装了Python的smtplib ... [详细]
  • Leetcode学习成长记:天池leetcode基础训练营Task01数组
    前言这是本人第一次参加由Datawhale举办的组队学习活动,这个活动每月一次,之前也一直关注,但未亲身参与过,这次看到活动 ... [详细]
  • 笔记说明重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系& ... [详细]
  • MITM(中间人攻击)原理及防范初探(二)
    上一篇文章MITM(中间人攻击)原理及防范初探(一)给大家介绍了利用ettercap进行arp欺骗及劫持明文口令,后来我发现好友rootoorotor的文章介绍比我写的更透彻,所以基础利用大家可以参看 ... [详细]
  • 如何将955万数据表的17秒SQL查询优化至300毫秒
    本文详细介绍了通过优化SQL查询策略,成功将一张包含955万条记录的财务流水表的查询时间从17秒缩短至300毫秒的方法。文章不仅提供了具体的SQL优化技巧,还深入探讨了背后的数据库原理。 ... [详细]
  • 本文详细介绍了Elasticsearch中的分页查询机制,包括基本的分页查询流程、'from-size'浅分页与'scroll'深分页的区别及应用场景,以及两者在性能上的对比。 ... [详细]
  • 构建Elasticsearch环境与课程索引
    本章节详细介绍了如何在开发环境中搭建Elasticsearch (ES) 环境,包括安装、启动服务端以及创建索引和映射的具体步骤。对于旧版ES环境的清理方法也进行了说明。 ... [详细]
  • Vulnhub DC3 实战记录与分析
    本文记录了在 Vulnhub DC3 靶机上的渗透测试过程,包括漏洞利用、内核提权等关键步骤,并总结了实战经验和教训。 ... [详细]
  • 使用jqTransform插件美化表单
    jqTransform 是由 DFC Engineering 开发的一款 jQuery 插件,专用于美化表单元素,操作简便,能够美化包括输入框、单选按钮、多行文本域、下拉选择框和复选框在内的所有表单元素。 ... [详细]
author-avatar
秘密不能说雨
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有