YOLOv4
v4其实在intro里就说了,很多的tricks都claims可以提点,但是大量的实验需要去验证这个问题。有些功能只对特定的模型或者特定的小规模数据集work。而另外一些tricks,比如BN,resdual connect适用于大多数的模型,任务和数据集。 其实不如把本文看作近些年OD的一个总结,验证了一些方法让OD的性能和速度提升到一个新的stage 然后在看网络结构的时候需要看到具...
v4其实在intro里就说了,很多的tricks都claims可以提点,但是大量的实验需要去验证这个问题。有些功能只对特定的模型或者特定的小规模数据集work。而另外一些tricks,比如BN,resdual connect适用于大多数的模型,任务和数据集。 其实不如把本文看作近些年OD的一个总结,验证了一些方法让OD的性能和速度提升到一个新的stage 然后在看网络结构的时候需要看到具...
v3应该是这一系列里面有创新的最后一版了(也是Joseph Redmon的最后一版),后面的v4堆了一坨优化,说创新,也谈不上。v5感觉争议比较大。 v3的行文比较像个报告,不太类似一个完整的paper,相比YOLOv2,YOLOv3最大的变化包括两点: 使用残差模型 FPN架构 前面的就是Darknet53,后面的就是和SSD很想的多尺度检测。 YOLOv3每个位置使用...
b本文先在YOLOv1的基础上提出了v2,之后提出了一种检测与分类的联合训练方法,之后在两个数据集上训练了一个YOLO9000(能检测超过9k类物体)。二者主要的模型结构是一致的 本文主要用的几个提点方法就是: BN层的加入,不再用dropout, High Resolution Classifier Convolutional With Anchor Boxes(SSD和...
YOLO,真正的single stage鼻祖。abs里面提的比较振奋了,YOLO讲目标检测作为一个回归问题。输入一张图片,一个网络做了边框的检测和里面物体的分类。后续可以直接对检测性能进行端到端的优化。得益于这种singlestage的网络框架,YOLO和之前的检测框架比,快的离谱(相对的)。然后从自然图像迁移到其他的领域的时候往往效果是优于同时间段的其他算法的,abs里写的是YOLO学到了...
SSD在v5出来之前还是有些地方用的,在v5出来之后多半就命途多舛了。 abs有一部分没看懂,直接去看了一部分conclusion,应该是利用多尺度特征图检测,感觉就是多个conv层的输出都做bbox reg和class scores。这样感觉的话较大的特征图检测小目标的话还是很有优势的,小的特征图检测大的目标就比较舒服了,23333. how it works intro提到的检测速...
abs里面很明确的之处了Region Proposals是瓶颈,于是他们在这次的文章中使用一个RPNet来做区域的建议,和CNN共享了完整的图像卷积特征,这里共享卷积特征的机制,RPN告诉网络去哪里找目标(通俗的讲就是注意力机制)。然后这个检测速度又快了不少,5fps把,具体是什么GPU没看。 其实Fast-RCNN不用SS,多想点别的路子考虑怎么做Region Proposal就不至于有...
abs里面直接稳准狠的告诉你,文章用了一些创新的技术,让训练和测试都更快了,而且也更准了。 本文的主要贡献就是提出了一种优化RCNN的思路,不用对ss找到的2000多个区域进行CNN,而是进行一次CNN,之后通过一个ROI池化层将所有的感兴趣区域修正到合适的size,然后输入到FC中。 how it works 简单的说其实就是之前RCNN的优化,主要就是4步: input i...
目标检测,深度学习方向的开山之作。mAP在VOC2012上比之前的SOTA提升了30%,达到了53.3%。 文章开篇的abs提及本文的主要贡献就是两点告诉我们两件事, 一个很深的神经网络可以用于自底向上的区域选择,方便定位和分割(好像是废话) 微调迁移是有用的 how it works 不同于之前的滑窗,本文只在可能出现目标的区域采用CNN做定位,然后判断具体的物体类别 ...
多重背包的朴素解dp[i][j],借鉴01背包的优化思路不难想到一个将其优化成一维的解法 #include <iostream> #include <algorithm> //多重背包问题,同一个重量和value的物品有n件 //所以朴素的解法和完全背包是很类似的 using namespace std; const int N = 110; int dp...
正常DFS然后random pick的话,经历一个全排列,是一个O(n!)的解法,基本不可能使用。 这里依托概率问题能够生成一个伪随机打乱的数列,可以看做完美洗牌。 void KnuthShuffle(vector<int> &nums){ int n = nums.size(); random_device r; std::mt19937 g...