论文研读: Faster R-CNN

[TOC] 摘要 代码:https://github.com/rbgirshick/py-faster-rcnn 论文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks (https://arxiv.org/pdf/1506.01497.pdf) 引入 我们首先回顾一下 Fast R-CNN 的主要步骤: 特征提取:输入整张图片,利用 CNN 提取图片的特征。 提取候选区域:使用 selective search 从原始图片中提取出区域候选框,并把这些候选框一一投影到最后的特征层。 进行分类和回归:通过两个全连接层,分别用 softmax 进行目标分类识别和用回归模型进行边框位置和大小的微调。 Fast R-CNN 虽然比 R-CNN 和 SPP-net 都快,但是速度也依然不够快,因为使用 selective search 进行候选区域提名是个耗时的过程。论文中指出使用 Selective Search 在 CPU 上执行每张图需要2s,即便是使用另一个候选窗口提取模块:EdgeBoxes,也需要0.2s。而Faster R-CNN 去掉了 Selective search, 通过引入 RPN (Region Proposal Networks) 来提取候选窗口,使得区域提名、分类、回归能共享卷积层,节约了计算时间,进一步提高了检测速度,实现了端到端的训练。 RPN如何工作的?…

一周书评之第一期

一周书评:记录我在一周所看的书籍,旨在将提炼总结并结合个人经历后的所得分享给大家,希望大家喜欢,共同成长进步。 《OKR工作法》 平常我们谈公司里个人绩效管理,一般都只知道KPI工具,但是KPI容易造成的问题是:过度强调短期利益,忽视长期利益;过度强调个人目标实现最大化,忽视了整个公司的利益,忽视了整个团队,容易造成各部门各行其是。而OKR工作法就能解决这个问题。 第一次听说OKR工作法是在吴军老师的《硅谷来信》中,信中提到: Google的每个员工每个季度都需要给自己定一个或者几个目标(objectives),以及衡量目标是否达成的关键结果(Key Results),这几个词合在一起被成为 “OKR”。 每个人的OKR会放到自己的网页上,大约半页纸长,大家都可以看到。如果没有制定OKR,一目了然,即使没有人催你,大家看到你的网页上面是一个空白,你自己都不好意思。到了季度结束时,每一个人会给自己的目标完成情况打分。完成了,得分是1,。部分完成,得分是0到1之间一个数字。 Google强调每一个人制定的目标要有挑战性,因此如果一个人完成目标的得分情况总是1,并不能说明他工作好,而是目标定得太低。大部分情况下,大家完成目标的得分在0.7—0.8左右。当然,一个季度开始的时候的想法,和后来完成的任务可能会有差异,早期没有想到的事情可能后来做了。 OKR工作法在硅谷的Google、Facebook等高科技公司中比较盛行。对Google具体是如何应用OKR来为员工和公司设定目标和推进目标感兴趣的读者,可以参考: (Startup Lab workshop: How Google sets goals: OKRs: https://www.youtube.com/watch?v=mJB83EZtAjc&t=626s ) ps: 需要搭梯子。 说回本书《OKR工作法》,此书从这个险象环生的创业故事讲起,围绕一家创业公司的试错、困惑、决断和成长的全过程说明了OKR(Objectives and Key Results)方法的基本原理和实施原则,非常的形象生动,遇到的问题简直是现实世界中创业公司的真实写照,比如创始人对公司战略的思考不一致、员工的懈怠和各种托辞、投资人和市场的“无情”,所幸的是书中这家创业公司依据OKR终于走上了正轨。当然,我们不是说OKR是创业成功的充分条件,始终要强调的是OKR只是一个工具,它能极大地推动团队去完成目标。 一言以蔽之: 专注一个目标,目标至少要有50%信心能达成,关键结果要能量化,能实时监控系统状态指标(红、黄、绿),每周工作按重要性排序列出,列出未来几周的计划,每周五进行复盘,庆祝胜利,以此循环,周而复始。 书中描述的创业公司的OKR: 留个彩蛋:

Airsim install

[TOC] Build AirSim on Linux Ubuntu 16.04 LTS Install and Build Make sure you are registered with Epic Games. This is required to get source code access for Unreal Engine. Clone Unreal in your favorite folder and build it (this may take a while!). Note: We only support Unreal 4.18 at present. bash # go…

论文研读:Fast R-CNN

[TOC] 前面我们介绍了RCNN和SPP-Net,这次来介绍一下Fast R-CNN。 论文地址:https://arxiv.org/abs/1504.08083 代码:https://github.com/rbgirshick/fast-rcnn 摘要: R-CNN和SPP-net存在的问题 训练过程pipeline 比较麻烦:R-CNN 和 SPP-net 的训练分为多个步骤,较为繁琐 • 1. 对网络进行微调 – R-CNN对整个CNN进行fine tuning – SPP-net只对SPP之后的(全连接)层进行fine tuning(这个也限制了其准确度的提高) • 2. 针对每个类别训练SVM,替代softmax • 3. 训练bounding-box回归模型 训练过程耗费时间和内存空间 1.需要用CNN提取所有训练样本的特征 2.在训练SVM和回归的时候都需要用CNN提取的特征作为输入,特征需要写入磁盘上,时间开销大 “With Very Deep Networks, Such As Vgg16, This Process Takes 2.5 Gpu-Days For The 5k Images Of The Voc07 Trainval Set. These Features Require Hundreds…

论文研读:SPP-net

论文标题:Spatial Pyramid Pooling in Deep Convolutional Networks 摘要 问题引入 我们先回顾一下 R-CNN 的基本步骤: 1. 使用 seletive search 从输入图片中提取大约 2k 个候选区域。 2. 对所有候选区域进行 warp 到固定尺度(227 × 227),也就是使得不同尺度和长宽比的区域被变换到相同大小,然后将其送入 CNN 网络,提取出 feature maps 。 3. 使用 SVM 进行分类,并做边框回归。 我们再来看一张时间复杂度上的统计分析图 由图可看,除了CNN网络提取特征耗时(需要对每一张图片的2000个窗口进行卷积网络计算),其中的warp操作(Cropping & resizing )也是挺费时间的。 另外我们从下图进行分析warp这种操作对信息可能造成的影响: 在左图中,我们进行裁剪 (crop) 的时候,丢失了车头和车尾信息,后续再送入 CNN 网络提取特征必定对识别精度有影响。 在右图中,进行 warp 操作后,明显可以看到塔已经变形。 我们不禁要问,既然 warp/crop 操作既费时间,又会造成信息损失或破坏,那么我们为什么要进行warp/crop这类操作? 答案是:CNN 网络对输入有固定尺度要求,我们需要 warp 来将输入统一到一个尺度。…