BIN
ch08_目标检测/img/ch8/8.5.1-1.png
Normal file
|
After Width: | Height: | Size: 213 KiB |
BIN
ch08_目标检测/img/ch8/8.5.1-2.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
ch08_目标检测/img/ch8/8.5.1-3.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
ch08_目标检测/img/ch8/8.5.1-4.png
Normal file
|
After Width: | Height: | Size: 218 KiB |
BIN
ch08_目标检测/img/ch8/8.5.1-5.png
Normal file
|
After Width: | Height: | Size: 445 KiB |
BIN
ch08_目标检测/img/ch8/8.5.1-6.png
Normal file
|
After Width: | Height: | Size: 224 KiB |
BIN
ch08_目标检测/img/ch8/8.5.1-7.png
Normal file
|
After Width: | Height: | Size: 315 KiB |
BIN
ch08_目标检测/img/ch8/8.5.1-8.png
Normal file
|
After Width: | Height: | Size: 145 KiB |
BIN
ch08_目标检测/img/ch8/8.5.9-1.png
Normal file
|
After Width: | Height: | Size: 93 KiB |
BIN
ch08_目标检测/img/ch8/8.5.9-2.png
Normal file
|
After Width: | Height: | Size: 261 KiB |
BIN
ch08_目标检测/img/ch8/8.5.9-3.png
Normal file
|
After Width: | Height: | Size: 305 KiB |
BIN
ch08_目标检测/img/ch8/8.5.9-4.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
ch08_目标检测/img/ch8/DetNet-1.png
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
ch08_目标检测/img/ch8/DetNet-2.png
Normal file
|
After Width: | Height: | Size: 104 KiB |
BIN
ch08_目标检测/img/ch8/DetNet-3.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
ch08_目标检测/img/ch8/DetNet-4.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
ch08_目标检测/img/ch8/DetNet-5.png
Normal file
|
After Width: | Height: | Size: 98 KiB |
BIN
ch08_目标检测/img/ch8/DetNet-6.png
Normal file
|
After Width: | Height: | Size: 105 KiB |
BIN
ch08_目标检测/img/ch8/DetNet-7.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
ch08_目标检测/img/ch8/DetNet-8.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
@@ -18,6 +18,8 @@
|
||||
|
||||
更新日志:**
|
||||
|
||||
2019.9.20(明奇):新增DOTA数据集、目标检测的训练tricks、数据增强方法、CBNet、DetNet
|
||||
|
||||
2019.01.05(陈方杰):新增8.3节One-Stage检测算法:M2Det
|
||||
|
||||
2018.12.21(陈方杰):新增SSD系列创新点,新增YOLO系列创新点
|
||||
|
||||
@@ -354,6 +354,127 @@ RoI Align的思路很简单:取消量化操作,使用双线性内插的方
|
||||
|
||||

|
||||
|
||||
### 8.2.7 DetNet(贡献者:北京理工大学--明奇)
|
||||
|
||||
DetNet是发表在ECCV2018的论文,比较新,出发点是现有的检测任务backbone都是从分类任务衍生而来的,因此作者想针对检测专用的backbone做一些讨论和研究而设计了DetNet,思路比较新奇。
|
||||
|
||||
1. **Introduction**
|
||||
  很多backbone的提出都是用于挑战ImageNet分类任务后被应用到检测上来,而鲜有单独<u>针对检测任务设计的backbone</u>。
|
||||
|
||||
  **检测和分类有明显的区别**:(1)不仅需要分类,还需要精确的定位 (2)最近的检测器都是基于类似FPN结构,在分类网络基础上加额外多尺度特征进行检测,应对不同尺度变化的目标。这两点又是相互补充,共同协助网络完成分类到检测任务的转变。例如分类任务是检测的一环所以必不可少,但是传统分类采用的最高级特征定位细节不够,因此很多最近网络设法用类似FPN的结构去处理尺度变化的问题,就将分类较好地过渡到检测任务上了。
|
||||
|
||||
2. **DetNet**
|
||||
|
||||
2.1 **Motivation**
|
||||
  主要着眼点是**分辨率**,从大目标和小目标分别阐述保持分辨率的重要性。所以DetNet也是从分辨率的保持着手,解决多尺度物体的识别问题。
|
||||
|
||||
* Weak visibility of large objects
|
||||
  网络在较深层如P6(FPN)P7(RetinaNet)大目标的边界不明确使精确定位困难。
|
||||
|
||||
* Invisibility of small objects
|
||||
  小目标就很惨了,降采样容易丢。这个就不赘述了,所以只要避开降采样就能防止目标丢失,但是这种方法又会导致抽象能力不够
|
||||
|
||||
2.2 **DetNet Design**
|
||||
  保持分辨率有两个麻烦的问题:(1)内存消耗大,计算大 (2)降采样减少导致高层的抽象特征不足以很好地进行分类任务。下面设计时会同时考虑时间和高层抽象信息两点。
|
||||
  先放出DetNet的多尺度各stage的尺寸如下图, 可以看到,相比前两种方式,DetNet在P4之后就不再进一步降采样了,进行分辨率的保持。
|
||||
|
||||

|
||||
|
||||
  实现细节如下图:
|
||||
|
||||

|
||||
|
||||
* 采用的backbone是ResNet-50,改进设计了DetNet-59。
|
||||
* 对bottlenecks进行了改进,传统的其实不止C,也包含两种,即将AB的膨胀卷积换成普通卷积。AB是新的基础模块。
|
||||
* 为了减少分辨率保持带来的时间和内存成本消耗,通道数固定为256(思考:降采样和膨胀卷积都会有信息丢失,这里可以想想)。
|
||||
* DetNet也可以加FPN结构,方法类似。
|
||||
|
||||
|
||||
|
||||
3. **Experiments**
|
||||
  检测和训练的细节配置就不看了。
|
||||
|
||||
3.1 **Main Results**
|
||||
|
||||

|
||||
|
||||
* 在FPN基础上明显有大物体涨点,同时由于高分辨率,小物体也有不错的提升。
|
||||
* 膨胀卷积提供的大感受野使得分类也不逊色
|
||||

|
||||
|
||||
3.2 **Results analysis**
|
||||

|
||||
|
||||
* 从AP50看出,高好1.7;从AP80看出,高了3.7。由此可以看出确实提高了检测性能。(
|
||||
* 从定位性能来看,大物体的提升比小物体更多。作者认为是高分辨率解决了大物体边界模糊的问题。其实有一种解释:小目标没有大目标明显,因为膨胀卷积核降采样都会丢失小目标,只是膨胀卷积可能离散采样不至于像降采样直接给到后面没了,但是没有根本性的解决,所以小目标不大。
|
||||

|
||||
|
||||
* AR指标也有类似结论
|
||||
* AR50体现了小目标的查全率更好,这也印证上面分析的:相对降采样,膨胀卷积丢失会好点。此下大目标效果虽然提升不大但是也很高了,作者表示DetNet擅长找到更精确的定位目标,在AR85的高指标就能看出。
|
||||
* AR85看大目标丢失少,说明能够像 VGG一样对大目标效果优良。关于小目标的效果平平,作者认为没有必要太高,因为FPN结构对小目标已经利用地很充分了,这里即使不高也没事。
|
||||
|
||||
|
||||
|
||||
3.3 **Discussion**
|
||||
* 关于stage
|
||||
  为了研究backbone对检测的影响,首先研究stage的作用。前4个还好说,和ResNet一样,但是P5 P6就不同,没有尺度的变化,和传统意义的stage不一样了,需要重新定义。这里DetNet也是类似ResNet的方法,虽然没有尺度变化,但是AB模块的位置还是保持了,B开启一个stage(~~听上去有点牵强~~)。如下图,认为新加的仍属于P5。
|
||||

|
||||
|
||||
  验证方法是做了实验,将P6开始的block换成上图所示的A模块对比效果如下图。 发现还是加了B效果更好。(但是这个stage和传统意义很不一样,所以很多性质不能相提并论,只是B模块的改变也不好判定什么)
|
||||

|
||||
|
||||
|
||||
### 8.2.8 CBNet
|
||||
本部分介绍一篇在COCO数据集达到最高单模型性能——mAP 53.3的网络,论文于2019.9.3发布在ArXiv,全名是*CBNet: A Novel Composite Backbone Network Architecture for Object Detection*
|
||||
|
||||
1. **Introduction**
|
||||
|
||||
  名义上是单模型,实际是多模型的特征融合,只是和真正的多模型策略略有不同。作者的起点是,设计新的模型往往需要在ImageNet上进行预训练,比较麻烦。因而提出的Composite Backbone Network (CBNet),采用经典网络的多重组合的方式构建网络,一方面可以提取到更有效的特征,另一方面也能够直接用现成的预训练参数(如ResNet,ResNeXt等)比较简单高效。
|
||||
|
||||
2. **Proposed method**
|
||||

|
||||
2.1 **Architecture of CBNet**
|
||||

|
||||
|
||||
  如上图,模型中采用K个(K>1)相同的结构进行紧密联结。其中两个相同backbone的叫Dual-Backbone (DB),三个叫Triple- Backbone (TB);L代表backbone的stage数目,这里统一设置为L=5。其中,和前任工作不同的地方在于,这里将不同的stage信息进行复用回传,以便获取更好的特征(为什么work不好说)。
|
||||
|
||||
2.2 **Other possible composite styles**
|
||||

|
||||
|
||||
  相关工作的其他类似结构,大同小异。要么是前面backbone的stage往后传播,要么是往前一个传播,每个都有一篇论文,应该都会给出不同的解释;第四个结构不太一样,是类似densnet的结构,但是密集连接+多backbone assemble的内存消耗不出意外会非常大。但是脱离这些体系来看,多backbone的结构类似多模型的assemble,和单模型有点不公平。
|
||||
|
||||
|
||||
|
||||
3. **Experiment**
|
||||
|
||||
|
||||
* **result**
|
||||

|
||||
|
||||
COCO数据集上的结果。看来提升还是有的。但是也能看出,大趋势上,三阶级联效果不如两阶的提升大,也是这部分的特征提升空间有限的缘故,到底哪部分在work不好说。下图的研究就更说明这一点了,斜率逐渐减小。
|
||||
|
||||
|
||||
* **Comparisons of different composite styles**
|
||||

|
||||
|
||||
他的级联网络相比,作者的阐述点只落脚于特征的利用情况,但是这个东西本身就很玄乎,不好说到底怎么算利用得好。硬要说这种做法的解释性,大概就是将backbone方向的后面高级语义特征传播回前面进行加强,相当于横向的FPN传播。
|
||||
|
||||
|
||||
* **Number of backbones in CBNet**
|
||||

|
||||
|
||||
速度慢是必然的,FPN+ResNeXt为8fps,加上两个backboen后为5.5FPS;如果减去backbone的前两个stage,可以节省部分参数达到6.9FPS,而精度下降不大(整体速度太低,这个实验意义不大)
|
||||
|
||||
* **Sharing weights for CBNet**
|
||||

|
||||
*
|
||||
从中可以看出其实权重是否share区别不大, 不到一个点的降幅,参数量减少。
|
||||
|
||||
|
||||
* **Effectiveness of basic feature enhancement by CBNet**
|
||||

|
||||
|
||||
从中可以看出激活响应效果更好,确实是能够提取到更为有效的特征,对物体的响应更加敏感。
|
||||
|
||||
|
||||
## 8.3 One Stage目标检测算法
|
||||
@@ -998,14 +1119,208 @@ $$
|
||||
|
||||
## 8.5 目标检测的技巧汇总
|
||||
|
||||
1. Data Augmentation
|
||||
2. OHEM
|
||||
3. NMS:Soft NMS/ Polygon NMS/ Inclined NMS/ ConvNMS/ Yes-Net NMS/ Softer NMS
|
||||
4. Multi Scale Training/Testing
|
||||
5. 建立小物体与context的关系
|
||||
6. 参考relation network
|
||||
7. 结合GAN
|
||||
8. 结合attention
|
||||
### 8.5.1 Data Augmentation(贡献者:北京理工大学--明奇)
|
||||
介绍一篇发表在Big Data上的数据增强相关的文献综述。
|
||||
1. **Introduction**
|
||||
* 数据增强与过拟合
|
||||
验证是否过拟合的方法:画出loss曲线,如果训练集loss持续减小但是验证集loss增大,就说明是过拟合了。
|
||||
|
||||

|
||||
|
||||
* 数据增强目的
|
||||
通过数据增强实现数据更复杂的表征,从而减小验证集和训练集以及最终测试集的差距,让网络更好地学习迁移数据集上的数据分布。这也说明网络不是真正地理解数据,而是记忆数据分布。
|
||||
|
||||
* 数据增强的方法
|
||||
(1)数据变换增强
|
||||
包括几何变换、色彩空间变换,随机擦除,对抗训练,神经风格迁移等
|
||||
(2)重采样增强
|
||||
主要侧重于新的实例合成。如图像混合(mixup),特征空间的增强,GAN生成图片。一张图看明白:
|
||||
|
||||

|
||||
|
||||
2. **Image Data Augmentation techniques**
|
||||
|
||||
2.1 **Data Augmentations based on basic image manipulations**
|
||||
|
||||
* Geometric transformations
|
||||
  如果数据集潜在的表征能够被观察和分离,那么简单的几何变换就能取得很好的效果。对于复杂的数据集如医学影像,数据小而且训练集和测试集的偏差大,几何变换等增强的合理运用就很关键。
|
||||
|
||||
* Flipping
|
||||
作者提到了要衡量普遍性的观点。但是这种变换对于数字数据集不具有安全性。
|
||||
|
||||
* Color space
|
||||
主要提及的识别RGB通道上的变换,将三通道图进行分离,以及直方图变换增强等。(颜色空间更多增强方式可以参考A Preliminary Study on Data Augmentation of Deep Learning for Image Classification)
|
||||
|
||||
* Cropping
|
||||
通常在输入图片的尺寸不一时会进行按中心的裁剪操作。裁剪某种程度上和平移操作有相似性。根据裁剪幅度变化,该操作具有一定的不安全性。
|
||||
|
||||
* Rotation
|
||||
大幅度的旋转对数字集会有不安全性的考虑。
|
||||
|
||||
* Translation
|
||||
平移也需要合理设计。如车站人脸检测,只需要中心检测时,就可以加合适的平移增强。平移后空出部分填0或者255,或用高斯分布噪声。
|
||||
|
||||
* Noise injection
|
||||
在像素上叠加高斯分布的随机噪声。
|
||||
|
||||
* Color space transformations
|
||||
  由于实际图像中一定存在光线偏差,所以光线的增强十分有必要(但是IJCV的光流文章指出,3D建模的灯光增强实在是很难学习到,所以对于光线增强的效果不如几何也可能因为**光线的复杂度更高,数据样本远远不够**)。色彩变换十分多样,如像素限制、像素矩阵变换、像素值颠倒等;灰度图和彩图相比,计算时间成本大大较少,但是据实验效果会下降一些,很明显因为特征的维度被降维了;还有尝试将RGB映射到其他的色彩空间进行学习,YUV,CMY.HSV等。
|
||||
  除了计算大内存消耗和时间长等缺点,色彩变换也面临不安全性,比如识别人脸的关键信息是黄白黑,但是大量增强出红绿蓝,会丢信息。颜色变换的增强方法是从色彩空间角度拟合偏置,效果有限的可能性是多样的:1. 真实几何多样性比颜色更简单 2. 色彩的变化多样性更多,导致增强不够反而学不好,颜色空间的欠拟合 3. **变换不安全**
|
||||
|
||||
|
||||
* Experiment
|
||||

|
||||
|
||||
**随机裁剪**效果最好。
|
||||
|
||||
|
||||
2.2 **Geometric versus photometric transformations**
|
||||
* Kernel filter
|
||||
滤波器核在图像处理用的比较广,这里提到用这种方法来增强。还提到了一种正则化增强方法PatchShuffle,在一个patch内随机交换像素值,使得对噪声的抵抗更强以及避免过拟合。
|
||||
文章指出关于应用滤波器增强的工作尚且不多,因为这种方法其实和CNN的机制是一样的,这么做也许还不如直接在原始CNN上加层加深网络。
|
||||
|
||||
* Mixing images
|
||||
~~就是那篇被ICLR拒稿的采样方法~~直接均值相加混合。
|
||||
|
||||

|
||||
|
||||
  还有非线性的mixup裁剪如下:
|
||||
|
||||

|
||||
|
||||
  以及随机裁剪的图像混合:
|
||||
|
||||

|
||||
|
||||
  这些混合方式是十分反人类直觉的,因此可解释性不强。只能说是可能增强了对底层低级特征如线条边缘等的鲁棒性。其实有点没有抓住关键点。
|
||||
|
||||
* Random erasing
|
||||
随机擦除就是类似cutout的思想,通过mask的遮挡使得网络能够提高遮挡情况的鲁棒性。需要手工设计的部分包括mask的大小以及生成方式。是一种比较有效的方法。这种方式也需要考量增强的安全性,比如MNIST数据集8cutout后可能出问题。
|
||||
|
||||

|
||||
|
||||
* A note on combining augmentations
|
||||
组合的增强方式往往是连续变化的,导致数据集的容量会迅速扩大,这对于小数据集领域来说容易发生过拟合 ,所以需要设计合理的搜索算法设计恰当的训练数据集。
|
||||
|
||||
2.3 **Data Augmentations based on Deep Learning**
|
||||
* Feature space augmentation
|
||||
之前刚看的基于SMOTE类别不平衡的过采样法来进行特征空间的插值操作进行数据增强,就实验效果而言不算特别出众。
|
||||
|
||||
* Adversarial training
|
||||
对抗样本训练可以提高鲁棒性,但是实际应用中其实提高不一定明显,因为自然对抗样本的数目没有那么多。而NIPS的对抗攻击大赛很多从神经网络的学习策略下手,进行梯度攻击,更加偏向于人为的攻击了,对于普适的检测性能提高意义反而不大,更强调安全需求高的场合。
|
||||
|
||||
* GAN‑based Data Augmentation
|
||||
|
||||
* Neural Style Transfer
|
||||
|
||||
不觉得这个效果会普遍很好,应该来说是针对特定域会有效(如白天黑夜),实际效果应该有限。
|
||||
|
||||
* Meta learning Data Augmentations
|
||||
* Neural augmentation
|
||||
* Smart Augmentation
|
||||
两个东西差不多,就是上次看到SmartAugment方法。随机采样类内图片进行通道叠加然后输出融合图像,学通过梯度下降使得输出图像的类内差距减小(没考虑类间关系,可能也不便处理)。
|
||||
|
||||

|
||||
|
||||
* AutoAugment
|
||||
谷歌最早做的自学习增强方法,走的NAS的思路RL+RNN搜索增强空间,还有后来最近发的检测增强也是大同小异,基本就是换汤不换药,问题在于**搜索空间太大**,复现搜索过于依赖硬件条件(~~普通实验室玩不起~~)
|
||||
|
||||
3. **Design considerations for image Data Augmentation**
|
||||
|
||||
3.1 **Test-time augmentation**
|
||||
  许多都论文指出在检测阶段进行同等的数据增强能够获得较好的效果。归结可以认为是训练检测阶段的一致性。当然,这种手段时间成本太高,只在如医学影像等追求精度的关键领域可以使用。
|
||||
|
||||
3.2 **Curriculum learning**
|
||||
  Bengio团队早年在ICML提出的观点,确实合理,一开始就进行大量的增强容易导致网络不收敛。
|
||||
从一个数据集学习到的数据增强也可以迁移到其他数据集。
|
||||
|
||||
|
||||
3.3 **Resolution impact**
|
||||
高清(1920×1080×3)或4K(3840×2160×3)等高分辨率图像需要更多的处理和内存来训练深度CNN。然而下一代模型更倾向于使用这样更高分辨率的图像。因为模型中常用的下采样会造成图像中信息的丢失,使图像识别更困难。
|
||||
研究人员发现,高分辨率图像和低分辨率图像一起训练的模型集合,比单独的任何一个模型都要好。
|
||||
某个实验(这里就不注明引用了)在256×256图像和512×512图像上训练的模型分别获得7.96%和7.42%的top-5 error。汇总后,他们的top-5 error变低,为6.97%。
|
||||
随着超分辨率网络的发展,将图像放大到更高的分辨率后训练模型,能够得到更好更健壮的图像分类器。
|
||||
|
||||
3.4 **Final dataset size**
|
||||
  数据增强的形式可以分为在线和离线增强。前者是在加载数据时增强,可能造成额外的内存消耗(现在都是数据容量不变的随机增强)。
|
||||
  此外作者提到了一个比较有意思的点:当前数据集尤其是进行增广后是十分庞大的,明显能够在一定程度上缩小数据集但是保持性能下降不多的子集效率会高得多。
|
||||
|
||||
3.5 **Alleviating class imbalance with Data Augmentation**
|
||||
  这也是值得借鉴的一点。通过增强在一定程度上解决类别不平衡问题。但增强需要仔细设计,否则会面对已经学习较好的类别或者场景造成过拟合等问题。
|
||||
|
||||
|
||||
|
||||
### 8.5.2 OHEM
|
||||
|
||||
### 8.5.3 NMS:Soft NMS/ Polygon NMS/ Inclined NMS/ ConvNMS/ Yes-Net NMS/ Softer NMS
|
||||
|
||||
### 8.5.4 Multi Scale Training/Testing
|
||||
|
||||
### 8.5.5 建立小物体与context的关系
|
||||
|
||||
### 8.5.6 参考relation network
|
||||
|
||||
### 8.5.7 结合GAN
|
||||
|
||||
### 8.5.8 结合attention
|
||||
|
||||
### 8.5.9 训练tricks(贡献者:北京理工大学--明奇)
|
||||
介绍一篇2019.2.4亚马逊挂在ArXiv的目标检测训练tricks的文章(之前亚马逊发了篇分类的tricks在CVPR上)
|
||||
|
||||
1. **Introduction**
|
||||
|
||||
  上次亚马逊发了个分类的训练trick在CVPR上,这次是检测的,还没发表。就没什么多说的了,下面直接介绍。先看效果如下,其实摘要声称的5%是单阶段的yolov3的提升,说明:单阶段没有RoIPooling阶段很多性质确实不如两阶段,因此采用trick很有必要;相反,两阶段本身结构优于单阶段所以外加的trick提供的如不变性等网络自身能够学习和适应就不起作用了。
|
||||
|
||||

|
||||
|
||||
2. **Bag of Freebies**
|
||||
|
||||
  提出了一种基于mixup的视觉联系图像混合方法,以及一些数据处理和训练策略。
|
||||
|
||||
2.1 **Visually Coherent Image Mixup for Object Detection**
|
||||
  先介绍图像分类中的mixup方法,作用是提供了训练的正则化,应用到图像上如下图,将图像作简单的像素值输入mixup的凸函数中得到合成图;然后将one-hot编码类似处理得到新的label。
|
||||
|
||||

|
||||
|
||||
|
||||
  技术细节:
|
||||
* 相比于分类的resize,为了保证检测图像不畸变影响效果,作者选择直接叠加,取最大的宽高,空白进行灰度填充,不进行缩放。
|
||||
* 选择ab较大(如1.5,1.5)的Beta分布作为系数来混合图像,作者说是相干性视觉图像的更强;loss是两张图像物体的loss之和,loss计算权重分别是beta分布的系数
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
2.2 **Classification Head Label Smoothing**
|
||||
  标签平滑在检测的分类任务常有用到,最早是Inceptionv2中提出。
|
||||
  如果标签中有的是错的,或者不准,会导致网络过分信任标签而一起错下去。为了提高网络泛化能力,避免这种错误,在one-hot的label进行计算loss时,真实类别位置乘以一个系数(1-e),e很小如0.05,以0.95的概率送进去;非标注的类别原来为0,现在改为e=0.05送进去计算loss。网络的优化方向不变,但是相比0-1label会更加平滑。
|
||||
(标签平滑这个讲的不错:https://juejin.im/post/5a29fd4051882534af25dc92)
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
  这里进一步改进了一下label smooth的公式而已,在原来基础上除了个类别数。
|
||||
|
||||
2.3 **Data Preprocessing**
|
||||
  就是数据增强,没什么其他的。至于分类也是几何变换和色彩变换。这么分区别其实是是否变换label。但是将真实世界就这么简单地分解过于粗糙了。好不容易谷歌的增强考虑到了如何学习一下检测任务的增强,但是也只是加了bbox_only的增强,就效果而言,一般;而且就实际来说,合理性和有效性有待商榷。
|
||||
  作者认为,两阶段网络的RPN生成就是对输入的任意裁剪,所以这个增强就够了;这老哥膨胀了,two-stage就不用裁剪的增强,虽然两阶段能提供一些不变性,但是用了一般来说都是更好的。
|
||||
|
||||
2.4 **Training Schedule Revamping**
|
||||
训练策略上:余弦学习率调整+warmup
|
||||
|
||||
2.5 **Synchronized Batch Normalization**
|
||||
跨多卡同步正则化,土豪专区,穷人退避
|
||||
|
||||
2.6 **Random shapes training for single-stage object detection networks**
|
||||
多尺度训练,每经过一定的iteration更换一种尺度。举例是yolov3的尺度范围。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## 8.6 目标检测的常用数据集
|
||||
|
||||
@@ -1029,6 +1344,9 @@ $$
|
||||
|
||||
ImageNet是一个计算机视觉系统识别项目, 是目前世界上图像识别最大的数据库。ImageNet是美国斯坦福的计算机科学家,模拟人类的识别系统建立的。能够从图片识别物体。Imagenet数据集文档详细,有专门的团队维护,使用非常方便,在计算机视觉领域研究论文中应用非常广,几乎成为了目前深度学习图像领域算法性能检验的“标准”数据集。Imagenet数据集有1400多万幅图片,涵盖2万多个类别;其中有超过百万的图片有明确的类别标注和图像中物体位置的标注。
|
||||
|
||||
### 8.6.5 DOTA
|
||||
DOTA是遥感航空图像检测的常用数据集,包含2806张航空图像,尺寸大约为4kx4k,包含15个类别共计188282个实例,其中14个主类,small vehicle 和 large vehicle都是vehicle的子类。其标注方式为四点确定的任意形状和方向的四边形。航空图像区别于传统数据集,有其自己的特点,如:尺度变化性更大;密集的小物体检测;检测目标的不确定性。数据划分为1/6验证集,1/3测试集,1/2训练集。目前发布了训练集和验证集,图像尺寸从800x800到4000x4000不等。
|
||||
|
||||
|
||||
|
||||
## 8.7 目标检测常用标注工具
|
||||
@@ -1090,6 +1408,54 @@ Anno-Mage:一个利用深度学习模型半自动图像标注工具,预训
|
||||
当然还有一些数据标注公司,可能包含更多标注功能,例如对三维目标检测的标注(3D Bounding box Labelling),激光雷达点云的标注(LIDAR 3D Point Cloud Labeling)等。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## 8.8 目标检测工具和框架(贡献者:北京理工大学--明奇)
|
||||
各种不同的算法虽然部分官方会有公布代码,或者github上有人复现,但是囿于安装环境不一,实现的框架(pytorch、C++、Caffee、tensorflow、MXNet等)不同,每次更换算法都需要重新安装环境,并且代码之间的迁移性差,十分不方便。所以为了方便将不同的算法统一在一个代码库中,不同的大厂都提出了自己的解决方案。如facebook的Detectron、商汤科技的mmdetection、SimpleDet等。其中Detectron最早,所以用户量最大,其次是国内近段时间崛起的mmdetection,下面介绍该目标检测工具箱。
|
||||
|
||||
|
||||
1. **Introduction**
|
||||
MMdetection的特点:
|
||||
* 模块化设计:将不同网络的部分进行切割,模块之间具有很高的复用性和独立性(十分便利,可以任意组合)
|
||||
* 高效的内存使用
|
||||
* SOTA
|
||||
|
||||
2. **Support Frameworks**
|
||||
* 单阶段检测器
|
||||
SSD、RetinaNet、FCOS、FSAF
|
||||
|
||||
* 两阶段检测器
|
||||
Faster R-CNN、R-FCN、Mask R-CNN、Mask Scoring R-CNN、Grid R-CNN
|
||||
|
||||
* 多阶段检测器
|
||||
Cascade R-CNN、Hybrid Task Cascade
|
||||
|
||||
* 通用模块和方法
|
||||
soft-NMS、DCN、OHEN、Train from Scratch 、M2Det 、GN 、HRNet 、Libra R-CNN
|
||||
|
||||
3. **Architecture**
|
||||
|
||||
模型表征:划分为以下几个模块:
|
||||
Backbone(ResNet等)、Neck(FPN)、DenseHead(AnchorHead)、RoIExtractor、RoIHead(BBoxHead/MaskHead)
|
||||
结构图如下:
|
||||

|
||||
|
||||
4. **Notice**
|
||||
* 1x代表12epoch的COCO训练,2x类似推导
|
||||
* 由于batch-size一般比较小(1/2这样的量级),所以大多数地方默认冻结BN层。可以使用GN代替。
|
||||
|
||||
5. **参考链接**
|
||||
mmdetection代码高度模块化,十分好用和便利,更详细的文档直接参见官方文档:
|
||||
https://github.com/open-mmlab/mmdetection
|
||||
|
||||
注释版的mmdetection代码(更新至v1.0.0):https://github.com/ming71/mmdetection-annotated
|
||||
|
||||
使用方法简介:
|
||||
安装记录(可能过时,以官方文档为准):https://ming71.github.io/mmdetection-memo.html
|
||||
使用方法(截止更新日期,如果过时以官方为准):https://ming71.github.io/mmdetection-instruction.html
|
||||
|
||||
|
||||
## TODO
|
||||
|
||||
- [ ] 目标检测基础知识:mAP、IoU和NMS等
|
||||
@@ -1138,4 +1504,4 @@ https://blog.csdn.net/hw5226349/article/details/78987385
|
||||
|
||||
[13] Liu S, Huang D. Receptive field block net for accurate and fast object detection[C]//Proceedings of the European Conference on Computer Vision (ECCV). 2018: 385-400.
|
||||
|
||||
[14] Zhao Q, Sheng T, Wang Y, et al. M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network[J]. arXiv preprint arXiv:1811.04533, 2018.
|
||||
[14] Zhao Q, Sheng T, Wang Y, et al. M2Det: A Single-Shot Object Detector based on Multi-Level Feature Pyramid Network[J]. arXiv preprint arXiv:1811.04533, 2018.
|
||||
BIN
ch09_图像分割/img/ch9/9.13-1.png
Normal file
|
After Width: | Height: | Size: 155 KiB |
BIN
ch09_图像分割/img/ch9/9.13-2.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
ch09_图像分割/img/ch9/9.13-3.png
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
ch09_图像分割/img/ch9/9.13-4.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
ch09_图像分割/img/ch9/9.13-5.png
Normal file
|
After Width: | Height: | Size: 873 KiB |
@@ -13,4 +13,6 @@
|
||||
**贡献者(排名不分先后):**
|
||||
内容贡献者可自加信息
|
||||
|
||||
北京理工大学--明奇
|
||||
|
||||
###########################################################
|
||||
@@ -39,7 +39,6 @@
|
||||

|
||||
|
||||
<center>图 4</center>
|
||||
|
||||
### 9.3.2 FCN网络结构?
|
||||
|
||||
FCN对图像进行像素级的分类,从而解决了语义级别的图像分割(semantic segmentation)问题。与经典的CNN在卷积层之后使用全连接层得到固定长度的特征向量进行分类(全联接层+softmax输出)不同,FCN可以接受任意尺寸的输入图像,采用反卷积层对最后一个卷积层的feature map进行上采样, 使它恢复到输入图像相同的尺寸,从而可以对每个像素都产生了一个预测, 同时保留了原始输入图像中的空间信息, 最后在上采样的特征图上进行逐像素分类。
|
||||
@@ -138,7 +137,6 @@ Upsampling的操作可以看成是反卷积(deconvolutional),卷积运算的
|
||||
<center>上图中的反卷积,input是2×2, output是4×4。 Zero padding, non-unit strides, transposed。</center>
|
||||

|
||||
<center>上图中的反卷积,input feature map是3×3, 转化后是5×5, output是5×5</center>
|
||||
|
||||
### 9.2.8 跳级(skip)结构
|
||||
|
||||
  
|
||||
@@ -199,7 +197,6 @@ Upsampling的操作可以看成是反卷积(deconvolutional),卷积运算的
|
||||

|
||||
|
||||
<center>第三次反卷积步长为8,记为FCN-8s</center>
|
||||
|
||||
其他参数:
|
||||
  
|
||||
minibatch:20张图片。
|
||||
@@ -717,7 +714,6 @@ $$
|
||||
|
||||
  
|
||||
Wisconsin-Madison大学的Jia Xu提出了一个统一的框架来处理各种不同类型的弱标记:图像级别的标记、bounding box和部分像素标记如scribbles。该方法把所有的训练图像分成共计$n$个super-pixel,对每个super-pixel提取一个$d$维特征向量。因为不知道每个super-pixel所属的类别,相当于无监督学习,因此该方法对所有的super-pixel做聚类,使用的是最大间隔聚类方法(max-margin clustering, MMC),该过程的最优化目标函数是:
|
||||
|
||||
$$
|
||||
\underset{W,H}{min} \qquad \frac{1}{2}tr\left ( W^TW \right ) + \lambda\sum_{p=1}^{n}\sum_{c=1}^{C}\xi \left ( w_c;x_p;h_p^c \right)
|
||||
$$
|
||||
@@ -733,6 +729,43 @@ $$
|
||||
  
|
||||
小结:在弱标记的数据集上训练图像分割算法可以减少对大量全标记数据的依赖,在大多数应用中会更加贴合实际情况。弱标记可以是图像级别的标记、边框和部分像素的标记等。训练的方法一般看做是限制条件下的最优化方法。另外EM算法可以用于CNN参数和像素类别的联合求优。
|
||||
|
||||
|
||||
### 9.10.5 弱监督分割最新进展(贡献者:明奇-北京理工大学)
|
||||
* **bbox监督**
|
||||
1. Learning to Segment via Cut-and-Paste(ECCV 2018)
|
||||
|
||||
利用GAN对抗学习的思想,在cut-paste思想指导下利用bbox弱监督进行实例分割。
|
||||

|
||||
采用对抗学习的思想,网络主体分为两大部分:mask生成器和合成图像判别器。具体过程为:(1)在图像上截取gt,经过特征提取后预测一个bbox内gt的mask;(2)在原图上随机cut一个背景图像,将bbox内按照生成的mask提取出物体分割结果,然后paste到原图裁剪的背景上去;(3)合成的图像经过判别器进行真假判断。
|
||||
通过生成器生成更好mask来使得判别器更难判别,在对抗学习中提升两者的性能,逐渐获得更好的结果 .
|
||||
|
||||
2. Simple Does It: Weakly Supervised Instance and Semantic Segmentation(CVPR2017)
|
||||
本文做的是bbox弱监督语义/实例分割任务,能达到全监督分割效果(DeepLabv1)的95%。主要工作为:讨论了使用弱监督语义标签进行迭代训练的方法,以及其限制和不足之处;证明了通过类似GrabCut的算法能通过bbox生成分割训练标签方法的可行性,可以避免像上面的迭代方法重新调整网络训练策略;在VOC数据集上逼近监督学习的分割任务效果。
|
||||
作者的启发是:将bbox level的mask送入网络训练后得到分割mask的比输入的bbox mask要好(这是很好的insight)。因此启发的操作是:将bbox level标注作为初始mask输入优化,每次得到的标注作为gt进行下一轮的迭代,从而不断获得更好的效果。效果图如下:
|
||||

|
||||
在此基础上,再加上优化的GrabCut+算法,以及部分区域的筛选,以及BSDS500的边界预测信息整合到一起,能够达到很好的弱监督迭代分割效果。
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
* **分类监督**
|
||||
1. Weakly Supervised Learning of Instance Segmentation with Inter-pixel Relations(CVPR2019)
|
||||
使用分类标注作为弱监督信息,在CAM提取到特征的基础上,进一步设计IRNet学习额外的特征约束,从而到达更好的弱监督实例分割效果。为了解决CAM应用到实例分割的上述局限,设计IRNet。其组成为两部分:(1)不分类别的实例响应图 (2)pairwise semantic affinitie。其中通过不分类别的实例响应图和CAM结合,约束后得到instance-wise CAMS;另一个分支预先预测物体的边界然后得到pairwise semantic affinitie(关于这个的论文参考Related Work的对应部分,有相应的方法,暂时不深究)进行融合和处理得到最终的分割。整体流程如下:
|
||||

|
||||
|
||||
2. Weakly Supervised Instance Segmentation using Class Peak Response(CVPR2018)
|
||||
本文使用图像级的类别标注监督信息,通过探索类别响应峰值使分类网络能够很好地提取实例分割mask。本工作是使用图像级标注进行弱监督实例分割的首个工作。
|
||||
在分类监督信息之下,CNN网络会产生一个类别响应图,每个位置是类别置信度分数。其局部极大值往往具有实例很强视觉语义线索。首先将类别峰值响应图的信息进行整合,然后反向传播将其映射到物体实例信息量较大的区域如边界。上述从类别极值响应图产生的映射图称为Peak Response Maps (PRMs),该图提供了实例物体的详细表征,可以很好地用作分割监督信息。
|
||||
具体流程如图:
|
||||

|
||||
首先将图片经过正常的分类网络训练,其中在类别预测响应图上提取出局部响应极值点,进行增强卷积后预测出PRM。然后结合多种信息进行推断生成mask。
|
||||
|
||||
3. Weakly Supervised Semantic Segmentation Using Superpixel Pooling Network(AAAI 2017)
|
||||
本文介绍通过类别标注的标签实现弱监督语义分割的方法。该方法在语义分割mask生成和使用生成mask学习分割生成网络之间反复交替。要实现这种交替迭代学习,关键点就是如何利用类别标注得到较准确的初始分割。为了解决这一问题,提出了Superpixel Pooling Network (SPN),将输入图像的超像素分割结果作为低阶结构的表征,辅助语义分割的推断。
|
||||

|
||||
首先是SPN生成初始mask,然后用另一个网络DecoupledNet来学习每个像素的mask标注。其中,该分割网络将语义分割任务解耦为分类和分割两个子任务,并且能够从类别标注中学习形状先验知识用于辅助分割。
|
||||
|
||||
## 9.11 DenseNet(贡献者:黄钦建-华南理工大学)
|
||||
|
||||
  
|
||||
@@ -794,10 +827,85 @@ Cityscapes 是驾驶领域进行效果和性能测试的图像分割数据集,
|
||||
|
||||

|
||||
|
||||
## 9.13 全景分割(贡献者:北京理工大学--明奇)
|
||||
全景分割的开山之作:何恺明的*Panoptic Segmentation*
|
||||
|
||||
1. **Introduction**
|
||||
|
||||
  语义分割通过带孔全卷积网络,根据不同的stuff进行划分;实例分割则是在目标检测的基础上基于检测框进行物体的分割。缺少一种框架可以将两者进行融合实现既能分割背景又能分割实例,而这在自动驾驶和AR技术中大有作为。由此提出的全景分割任务能将两者进行结合。
|
||||
|
||||
|
||||
  全景分割的思路很直观:为图像的每个像素分配语义label和类内实例id,前者用于区分语义信息,后者用于分割实例(因此stuff不具有实例id)。提出全景分割时,只是启发式地将语意分割和实例分割两种任务的输出进行后处理的融合(如NMS),并以此建立PS任务的baseline。为了评价全景分割的质量,提出panoptic quality (PQ) 标准,将背景和物体的评价纳入一个完整的框架下。示意图如下:
|
||||

|
||||
|
||||
2. **Panoptic Segmentation**
|
||||
* **Task format**
|
||||
全景分割的标注方法:
|
||||
像素级的标注,标出类别label和类内实例id。如果某像素的这两个信息都能匹配,则可以将该像素匹配到某个类别和实例中去;类外的像素可以分配空标签,即并不是所有的像素都要有语义类别。
|
||||
|
||||
* **Stuff and thing labels**
|
||||
对于stuff和thing(背景填充和物体实例)的标签,交集是空集,并集是所有可能的label空间。这两者是互相独立不相关的(很好理解,像素属于那个类和它属于哪个物体不具有相关性)。
|
||||
|
||||
* **Relationship**
|
||||
都是像素级的label,需要为每个像素分配对应的标签。但是实例分割基于region的,允许重叠的segmentation,而全景分割和语义分割一样是像素级的label,不允许重叠标签的出现。
|
||||
|
||||
* **Confidence scores**
|
||||
这一点上更像语义分割而不是实例分割,对于PS不需要置信分数评价分割质量。提到这个,作者认为语义分割和全景分割可以直接利用人工标注的label进行对比从而评价当前mask的质量;而实例分割在选择mask时评价的是分类置信度,这个并没有人工标注进行参考,因此难以把握。
|
||||
|
||||
|
||||
3. **Panoptic Segmentation Metric**
|
||||
  用于衡量全景分割效果的指标应具有:完备性;可解释性;简洁性。由是提出了PQ指标,可分为两步:分割匹配、在匹配上进行计算PQ。
|
||||
|
||||
3.1 **Segment Matching**
|
||||
  定义match:预测的segmentation和gt的iou大于0.5,说明两者can match。再结合全景分割的不可重叠性,不难得到:最多只有一个预测的segmentation可以match gt。
|
||||
|
||||
3.2 **PQ Computation**
|
||||
  PQ的计算类似mAP,也是类内求取,然后求类间的平均值,以便不敏感类别不平衡。对于每一类,可以根据gt与预测的segmentation分为三类(下图描述):
|
||||

|
||||
|
||||
TP: 预测为正,实际为正,描述match较好的
|
||||
FP: 预测为正,实际为负,描述match错的
|
||||
FN: 预测为负,实际为正,描述没match出来的gt
|
||||
  通过上述三类可以计算得到PQ值公式:
|
||||

|
||||
|
||||
式中出去FP与FN后,剩下的式子描述的是match的segmentation的平均IoU,加上FP与FN是为了惩罚match失败的分割实例。
|
||||
有意思的是,对上述式子进行简单的恒等变化:
|
||||

|
||||
|
||||
第一项评价的是match分割的质量,第二项类似于F1得分。因此可以PQ分解为:
|
||||
$$PQ=SQ*RQ$$
|
||||
|
||||
* **Void labels**
|
||||
gt中可能出现两种像素标注为空的情况:超出类别的像素和模糊不清的像素(难以分类)。在评估结果时,这些空的标签不予以评估。具体而言:
|
||||
(1)在matching部分,预测出为void的像素会被移出prediction并不参与IoU计算;
|
||||
(2)matching后,unmatched prediction按照一般情况会计算FP FN,但是对于空标签情况,如果该prediction含有的void像素块超过一定匹配阈值就会被移除,并不算作FP计算得分。
|
||||
|
||||
* **Group labels**
|
||||
有时区分相同语义类别的实例个体标注比较困难,因此有提出组标签的标注方法。但对于PQ计算而言:
|
||||
(1)matching部分不使用组标签,而是严格区分实例
|
||||
(2)matching后,对于包含一部分相同类别像素点的unmatched predicted segments,这一部分将被去除并不视作false positives
|
||||
|
||||
3.3 **Comparison to Existing Metrics**
|
||||
* **Semantic segmentation metrics**
|
||||
衡量语义分割的标准有像素级精度,平均精度,IoU。但是其只专注于像素级的划分,不能反映物体实例级别的分割性能。
|
||||
|
||||
* **Instance segmentation metrics**
|
||||
度量为AP,主要是引入了置信度分数confidence score对检测目标进行打分。(两者不是完全的隔绝,实例分割也有用IoU监督的,而confidence score是否能够反映mask的真实质量也有存疑过,这个标准也不是固定的)
|
||||
|
||||
* **Panoptic quality**
|
||||
PQ的度量可以分解成SQ和RQ,SQ反映了语义分割的像素级IoU性能,RQ专注于检测识别的效果,因此将两者统一到一个框架下。
|
||||
|
||||
分割效果:
|
||||

|
||||
|
||||
<br>
|
||||
<br>
|
||||
<hr />
|
||||
TODO
|
||||
|
||||
- [ ] 图像分割数据集标注工具
|
||||
- [ ] 图像分割评价标准
|
||||
- [ ] 全景分割
|
||||
- [x] 全景分割
|
||||
- [ ] UNet++
|
||||
|
||||
|
||||