扫码关注我们

公众号 : 计算机视觉战队

扫码回复:加法网络,获取源码论文链接

记得前段时间“计算机视觉研究院”推送了一篇关于CVPR2020最佳分类的文献(链接:CVPR2020最佳目标检测 | AdderNet(加法网络)含论文及源码链接),其中有同学问可以把这个新的分类框架嫁接到检测网络,会有提升吗?今天就通过实验来告诉大家会有怎样的提升?

前景回顾

估计已经有同学忘记加法网络的框架和精髓了,我们先简单回归一下具体的框架细节。

研究人员和开发人员习惯于将卷积作为默认操作,从视觉数据中提取特征,并引入各种方法来加速卷积,即使存在牺牲网络能力的风险。但几乎没有人试图用另一种更有效的相似性度量来取代卷积。事实上,加法的计算复杂度要比乘法低得多。因此,作者有动机研究用卷积神经网络中的加法代替乘法的可行性。

下面可以回顾下不同卷积可视化结果:

具体的代码流程如下:

接下来我们就开始对其代码进行修改,将其嫁接到yolov3框架中,看看可以发生哪些奇妙的变化?

Pytorch-Yolo大家应该都会安装,都可以训练测试,现在我们直接开始吧!我首先拿pytorch-yolov3的部分代码举例子:

上面是直接将Darknet主干网络写死在检测部分的,其实这样的框架是不好的,比较偏向于定制性,所以大家可以自己写一个Backbone函数DetectHead函数,这样写是有道理,往下看就知道为什么要这样写?

这样backbone就是一个模块,可以随意调用你想要的主干网络,而且还可以自己随意抽取对应的检测头,那接下来我们看看加法网络(AdderNet)的代码:

根据论文(链接:加法网络(AdderNet)链接)修改对应的卷积,然后本次应用在ResNet50网络中,那我们再把ResNet50中的Conv替换,我们继续看下去:

接下来就是简单的环节了,替换修改好的Backbone网络,然后在相应数据集中训练测试,观察之间的差别。为了观察更加仔细,就不详细给出具体的输出结果了,具体如下:

+ Class '0' (person) - AP: 0.69071601970752
+ Class '1' (bicycle) - AP: 0.4686961863448047
+ Class '2' (car) - AP: 0.584785409652401
+ Class '3' (motorbike) - AP: 0.6173425471546101
+ Class '4' (aeroplane) - AP: 0.7368216071089109
+ Class '5' (bus) - AP: 0.7522709365644746
+ Class '6' (train) - AP: 0.754366135549987
+ Class '7' (truck) - AP: 0.4188454158138422
+ Class '8' (boat) - AP: 0.4055367699507446
+ Class '9' (traffic light) - AP: 0.44435250125992093
+ Class '10' (fire hydrant) - AP: 0.7803236133317674
+ Class '11' (stop sign) - AP: 0.7203250980406222
+ Class '12' (parking meter) - AP: 0.5318708513711929
+ Class '13' (bench) - AP: 0.33347708090637457
+ Class '14' (bird) - AP: 0.4441360921558241
+ Class '15' (cat) - AP: 0.7303504067363646
+ Class '16' (dog) - AP: 0.7319887348116905
+ Class '17' (horse) - AP: 0.77512155236337
+ Class '18' (sheep) - AP: 0.5984679238272702
+ Class '19' (cow) - AP: 0.5233874581223704
+ Class '20' (elephant) - AP: 0.8563788399614207
+ Class '21' (bear) - AP: 0.7462024921293304
+ Class '22' (zebra) - AP: 0.7870769691158629
+ Class '23' (giraffe) - AP: 0.8227873134751092
+ Class '24' (backpack) - AP: 0.32451636624665287
+ Class '25' (umbrella) - AP: 0.5271238663832635
+ Class '26' (handbag) - AP: 0.20446396737325406
+ Class '27' (tie) - AP: 0.49596217809096577
+ Class '28' (suitcase) - AP: 0.569835653931444
+ Class '29' (frisbee) - AP: 0.6356266022474135
+ Class '30' (skis) - AP: 0.40624013441992135
+ Class '31' (snowboard) - AP: 0.4548600158139028
+ Class '32' (sports ball) - AP: 0.5431383703116072
+ Class '33' (kite) - AP: 0.4099711653381243
+ Class '34' (baseball bat) - AP: 0.5038339063455582
+ Class '35' (baseball glove) - AP: 0.47781969136825725
+ Class '36' (skateboard) - AP: 0.6849120730914782
+ Class '37' (surfboard) - AP: 0.6221252845246673
+ Class '38' (tennis racket) - AP: 0.68764570668767
+ Class '39' (bottle) - AP: 0.4228582945038891
+ Class '40' (wine glass) - AP: 0.5107649160534952
+ Class '41' (cup) - AP: 0.4708999794256628
+ Class '42' (fork) - AP: 0.44107168135464947
+ Class '43' (knife) - AP: 0.288951366082318
+ Class '44' (spoon) - AP: 0.21264460558898557
+ Class '45' (bowl) - AP: 0.4882936721018784
+ Class '46' (banana) - AP: 0.27481021398716976
+ Class '47' (apple) - AP: 0.17694573390321539
+ Class '48' (sandwich) - AP: 0.4595098054471395
+ Class '49' (orange) - AP: 0.2861568847973789
+ Class '50' (broccoli) - AP: 0.34978362407336433
+ Class '51' (carrot) - AP: 0.22371776472064184
+ Class '52' (hot dog) - AP: 0.3702692586995472
+ Class '53' (pizza) - AP: 0.5297757751733385
+ Class '54' (donut) - AP: 0.5068384767127795
+ Class '55' (cake) - AP: 0.476632708387989
+ Class '56' (chair) - AP: 0.3980449296511249
+ Class '57' (sofa) - AP: 0.5214086539073353
+ Class '58' (pottedplant) - AP: 0.4239751120301045
+ Class '59' (bed) - AP: 0.6338351737747959
+ Class '60' (diningtable) - AP: 0.4138012499478281
+ Class '61' (toilet) - AP: 0.7377284037968452
+ Class '62' (tvmonitor) - AP: 0.6991588571748895
+ Class '63' (laptop) - AP: 0.68712851664284
+ Class '64' (mouse) - AP: 0.7214480416511962
+ Class '65' (remote) - AP: 0.4789729416954784
+ Class '66' (keyboard) - AP: 0.6644829934265277
+ Class '67' (cell phone) - AP: 0.39743578548434444
+ Class '68' (microwave) - AP: 0.6423763095621656
+ Class '69' (oven) - AP: 0.48313299304876195
+ Class '70' (toaster) - AP: 0.16233766233766234
+ Class '71' (sink) - AP: 0.5075074098080213
+ Class '72' (refrigerator) - AP: 0.6862896780296917
+ Class '73' (book) - AP: 0.17111744621852634
+ Class '74' (clock) - AP: 0.6886459682881512
+ Class '75' (vase) - AP: 0.44157962279267704
+ Class '76' (scissors) - AP: 0.3437987832196098
+ Class '77' (teddy bear) - AP: 0.5859590979304399
+ Class '78' (hair drier) - AP: 0.11363636363636365
+ Class '79' (toothbrush) - AP: 0.2643722437438991

可视化结果如下(还是有较大的差别):

如果大家感兴趣,后期“计算机视觉研究院”可以单独出一版搭建框架的推文,或者我们在线直播进行讲解答疑,有兴趣的可以私信我们,我们一定会及时给你回复!感谢对“计算机视觉研究院”的关注!

代码实践 | CVPR2020——AdderNet(加法网络)迁移到检测网络(代码分享)相关推荐

  1. Faster RCNN代码详解(五):关于检测网络(Fast RCNN)的proposal

    在Faster RCNN代码详解(二):网络结构构建中介绍了Faster RCNN算法的网络结构,其中有一个用于生成ROI proposal target的自定义层,该自定义层的输出作为检测网络(Fa ...

  2. php 检测网络,PHP+Ajax 检测网络是否正常实例详解

    本文实例讲述了PHP+Ajax实时自动检测是否联网的方法.分享给大家供大家参考.具体实现方法如下: html部分代码: /p> "http://www.w3.org/TR/xhtml1 ...

  3. iOS开发网络篇—Reachability检测网络状态

    前言:当应用程序需要访问网络的时候,它首先应该检查设备的网络状态,确认设备的网络环境及连接情况,并针对这些情况提醒用户做出相应的处理.最好能监听设备的网络状态的改变,当设备网络状态连接.断开时,程序也 ...

  4. wordpress代码插件_5个最佳WordPress插件来检测恶意代码

    WordPress是人们使用的最受欢迎的内容管理系统(CMS)之一,用于简单的Blog或其他目的,例如建立电子商务商店 . 也有插件和主题可供选择. 其中一些是免费的,而另一些则不是. 通常,这些主题 ...

  5. 认知无线电matlab代码详解,认知无线电频谱感知之功率检测matlab代码.docx

    认知无线电频谱感知之功率检测matlab代码 能量检测仿真实验代码:clear all;clc;n = 5;ps = 1;SNR1 = -5;SNR2 = -8;SNR3 = -10;% Sim_Ti ...

  6. ajax发送失败 网络异常,如何检测网络断开导致的Ajax呼叫失败

    我使用jquery ajax方法向web服务器发送大量数据,客户端只在收到服务器的确认后才响应,现在假设网络连接在ajax调用的MIDDLE中丢失,那么如何检测这种情况. $.ajax({ url:' ...

  7. python检测网络连接_python 检测网络状态自动拨号宽带连接

    最近这几天,住的地方宽带经常掉线,十几分钟一次,烦死了.后面就想有没有什么方法自动拨号,尝试了windows 的宽带连接自动拨号 ,一断开就给你弹出个窗口来,烦死了.后面就想到可以借助一些工具来实现, ...

  8. 【机器学习基础】(六):通俗易懂无监督学习K-Means聚类算法及代码实践

    K-Means是一种无监督学习方法,用于将无标签的数据集进行聚类.其中K指集群的数量,Means表示寻找集群中心点的手段. 一. 无监督学习 K-Means 贴标签是需要花钱的. 所以人们研究处理无标 ...

  9. 【机器学习基础】通俗易懂无监督学习K-Means聚类算法及代码实践

    K-Means是一种无监督学习方法,用于将无标签的数据集进行聚类.其中K指集群的数量,Means表示寻找集群中心点的手段. 一. 无监督学习 K-Means 贴标签是需要花钱的. 所以人们研究处理无标 ...

最新文章

  1. 国产半导体路在何方,瓦森纳与光刻机你了解多少
  2. FIS前端集成解决方案
  3. net类库中发送电子邮件的方法总结
  4. 11.1.5 练习题
  5. SPOJ - NUMOFPAL Number of Palindromes(回文自动机)
  6. vue watch监听某输入框中是否有值,然后改变某输入框的属性值
  7. 安装Bootstrap3源码版本
  8. Java:一步步带你深入了解神秘的Java反射机制
  9. vdcode C语言不能弹出运行窗口_C语言编程常见问题分析,以及错误解决办法!
  10. Scala 入门学习
  11. centos7设置输入密码三次错误锁定账号
  12. 荷兰铁路在采纳敏捷和精益中的做法
  13. ElasticSearch 核心概念
  14. 火狐浏览器打不开html,火狐浏览器打不开网页的原因及解决办法
  15. php 微信统一下单接口,微信公众号支付(二)实现统一下单接口
  16. Android 显示历史搜索记录
  17. miui12是Android版本,miui12基于安卓几版本开发的?miui12是安卓11吗[多图]
  18. Router-based Federation架构下如何解析路径
  19. 中国智能电视行业产销模式与投资策略分析报告2021年版
  20. gif一键抠图 在线_强力推荐!免费在线的一键抠图神器:AIpix

热门文章

  1. Installing PowerShell Management Library for windows server 2008
  2. Expression Tree 上手指南 (二)
  3. xss跳转代码_从某cms的xss漏洞来学习代码审计
  4. 排序算法四:归并排序
  5. 数据与特征对随机森林的影响(特征对比、特征降维、考虑性价比)
  6. 自然语言处理工具类数地工厂
  7. python list列表与array区别
  8. 简单粗暴tensorflow2.0
  9. pandas.read_table API
  10. python数字图像的行 宽的不同处 cv2.resize(1389,1500) p1列宽 p2 行高 stop2.shape 得(640,960,3) v1列宽 v2 行高 v3 通道数