5月的最后一天,需要写点什么。

通过前几篇博客对Faster-RCNN算是有了一个比较全面的认识,接下来的半个月断断续续写了一些代码,基本上复现了论文。利用torchvision的VGG16预训练权重,在VOC02007trainval训练13个epoch,最后VOC2007test的map在0.69左右。当然利用caffe预训练的权重结果略好一些。

关于复现过程:起初只是对目标检测方向突然有了兴趣,想玩一玩,但是只跑跑代码看看结果带给人的新奇感仅仅持续了几分钟,所以找了份代码深究了一下,最后结合chainer的实现方案自己成功复现。

关于代码部分:需要加速的部分主要有RoI-Pooling和NMS。也简单看了看Cython,实现了C扩展。可是为了进一步加速需要cuda,这方面没有深究,所以代码可以利用自己实现的C扩展版本,也可以利用别人写好的cuda加速的版本,在调试代码的过程中,为了方便,直接利用法二。剩余其他部分都是自己完成。

关于心态方面:心血来潮想要实现Faster,可是直到实现的时候才发现有些细节根本难以顾及,断断续续写了一些子函数模块后,感觉想要放弃..可想了想以后万一需要再次接触Faster岂不又得重头看起,所以又是断断续续硬着头皮撸。代码大约不到一周写完了,痛苦的事情才刚刚开始,那就是调试。先是一些低级错误,比如类型匹配问题、路径问题等等。然后是逻辑错误,这是最难调试的,初步调试方法是眼瞅,强行瞅出一些基本的逻辑问题,然后是ipdb一行一行的过...前几天每次都能找出一些错误更正后将代码跑通然后回去睡觉,第二天满怀希望来了却发现损失不降,要不就是map太低...每晚都是带着希望回去,第二天发现还是不行...  列几个那几天陆续找出来的隐藏错误:

  • PIL读进来的图像,size函数的顺序是(w,h)。而代码默认需要的顺序是(c, h, w)。
  • IOU计算错误。这个是自己的算法错误...
  • 损失函数计算错误,(n,c,h,w)应该先转换成(n,h,w,c)再reshape为(n,h×w,c)。
  • chainer中的roi_pooling函数需要的roi坐标为(xmin, ymin,xmax,ymax),而代码里默认的顺序为(ymin, xmin, ymax, xmax)...
  • RPN网络的两个卷积函数没加激活函数...

最初的目标是5月底之前实现Faster,当解决了所有bug之后,map终于正常了,也实现了既定的目标。故作文以记之...突然发现带给我的新奇感又没有了...

来张自己跑出来的测试图吧,纪念平平淡淡的五月,马上就迎来儿童节了...

然后明天就是总决赛了,詹姆斯撑住,撑住...骑士靠你了...头像是科比只是为了好玩...

    

知乎的两张图..

另外偶然发现了一个很棒的repo,实现了vgg和resnet两种结构,还有几种不同的roi pooling,以及多batch、多GPU,值得多多研究。

注:resnet直接用效果不升反降(当输入的图像尺寸比较小的时候,直接把vgg换成resnet效果反而会下降,但是如果提高输入图像的尺度的话,把vgg替换成resnet-101效果会更好,对于resnet这样非常深的网络,需要更大的尺度输入来让深层的feature map仍然保持空间信息),所以实现细节值得从代码里好好研究下,另外kaiming有一篇论文(Object Detection Networks on Convolutional Feature Maps)试验了rcnn系列目标检测中深层分类与深层特征的设计,以及对Network on Conv feature map (NoC)设计的方法。涉及对不同网络的设计方法,非常值得参考。

Pytorch复现Faster-RCNN的更多相关文章

  1. 记pytorch版faster rcnn配置运行中的一些坑

    记pytorch版faster rcnn配置运行中的一些坑 项目地址 https://github.com/jwyang/faster-rcnn.pytorch 一般安装配置参考README.md文件 ...

  2. 从编程实现角度学习Faster R-CNN(附极简实现)

    https://www.jianshu.com/p/9da1f0756813 从编程实现角度学习Faster R-CNN(附极简实现) GoDeep 关注 2018.03.11 15:51* 字数 5 ...

  3. Faster R-CNN代码例子

    主要参考文章:1,从编程实现角度学习Faster R-CNN(附极简实现) 经常是做到一半发现收敛情况不理想,然后又回去看看这篇文章的细节. 另外两篇: 2,Faster R-CNN学习总结      ...

  4. Faster RCNN 学习与实现

    论文 论文翻译 Faster R-CNN 主要分为两个部分: RPN(Region Proposal Network)生成高质量的 region proposal: Fast R-CNN 利用 reg ...

  5. 物体检测丨Faster R-CNN详解

    这篇文章把Faster R-CNN的原理和实现阐述得非常清楚,于是我在读的时候顺便把他翻译成了中文,如果有错误的地方请大家指出. 原文:http://www.telesens.co/2018/03/1 ...

  6. 实战 | 源码入门之Faster RCNN

    前言 学习深度学习和计算机视觉,特别是目标检测方向的学习者,一定听说过Faster Rcnn:在目标检测领域,Faster Rcnn表现出了极强的生命力,被大量的学习者学习,研究和工程应用.网上有很多 ...

  7. TorchVision Faster R-CNN 微调,实战 Kaggle 小麦检测

    本文将利用 TorchVision Faster R-CNN 预训练模型,于 Kaggle: 全球小麦检测 上实践迁移学习中的一种常用技术:微调(fine tuning). 本文相关的 Kaggle ...

  8. faster r-cnn 在CPU配置下训练自己的数据

    因为没有GPU,所以在CPU下训练自己的数据,中间遇到了各种各样的坑,还好没有放弃,特以此文记录此过程. 1.在CPU下配置faster r-cnn,参考博客:http://blog.csdn.net ...

  9. r-cnn学习系列(三):从r-cnn到faster r-cnn

    把r-cnn系列总结下,让整个流程更清晰. 整个系列是从r-cnn至spp-net到fast r-cnn再到faster r-cnn.  RCNN 输入图像,使用selective search来构造 ...

  10. 论文阅读之:Is Faster R-CNN Doing Well for Pedestrian Detection?

    Is Faster R-CNN Doing Well for Pedestrian Detection? ECCV 2016   Liliang Zhang & Kaiming He 原文链接 ...

随机推荐

  1. CodeForces920E 链表强优化BFS

    http://codeforces.com/problemset/problem/920/E 题意:求一个图的补图的连通分量个数以及每个连通分量里的点个数 如果这不是一个补图,BFS或者并查集可过,但 ...

  2. Properties读取properties配置文件

    package cn.rocker.readProperties; import java.io.IOException; import java.io.InputStream; import jav ...

  3. collections 模块之Counter

    Counter字典的子类,用于统计哈希对象 from collections import Counter users = ["body1","body11", ...

  4. mybtis 基础

    一.什么是mybatis MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBati ...

  5. centos之Too many open files问题-修改linux最大文件句柄数

    linux服务器大并发调优时,往往需要预先调优linux参数,其中修改linux最大文件句柄数是最常修改的参数之一. 在linux中执行ulimit -a 即可查询linux相关的参数,如下所示: [ ...

  6. java io系列12之 BufferedInputStream(缓冲输入流)的认知、源码和示例

    本章内容包括3个部分:BufferedInputStream介绍,BufferedInputStream源码,以及BufferedInputStream使用示例. 转载请注明出处:http://www ...

  7. vue基础篇---vue组件《2》

    定义全局组件 我们通过Vue的component方法来定义一个全局组件. <div id="app"> <!--使用定义好的全局组件--> <coun ...

  8. 利用css3给座右铭设置漂亮的渐变色

    .footer-container .footer-content p .motto { font-weight: bolder; -webkit-background-clip: text; -we ...

  9. CentOS7用Mono和MonoDevelop写C#程序

    MonoDevelop 是个Linux平台上的开放源代码集成开发环境,主要用来开发Mono与.NET Framework软件. MonoDevelop 整合了很多Eclipse与Microsoft V ...

  10. Chrome Dev Tools: Code Folding in CSS and Javascript for improved code readiability

    Note : Apply for google chrome canary. You can fold code blocks in CSS (and Sass) and javascript fil ...