Merge pull request #2 from scutan90/master

更新
This commit is contained in:
Amusi 2018-11-18 07:23:51 -07:00 committed by GitHub
commit 50f6f4b02c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 1312 additions and 52 deletions

View File

@ -11,6 +11,19 @@
pages={271--279},
year={2016}
}
@article{choi2017stargan,
title={Stargan: Unified generative adversarial networks for multi-domain image-to-image translation},
author={Choi, Yunjey and Choi, Minje and Kim, Munyoung and Ha, Jung-Woo and Kim, Sunghun and Choo, Jaegul},
journal={arXiv preprint},
volume={1711},
year={2017}
}
@article{isola2017image,
title={Image-to-image translation with conditional adversarial networks},
author={Isola, Phillip and Zhu, Jun-Yan and Zhou, Tinghui and Efros, Alexei A},
journal={arXiv preprint},
year={2017}
}
@article{radford2015unsupervised,
title={Unsupervised representation learning with deep convolutional generative adversarial networks},
author={Radford, Alec and Metz, Luke and Chintala, Soumith},
@ -24,11 +37,11 @@
pages={3431--3440},
year={2015}
}
@article{choi2017stargan,
title={Stargan: Unified generative adversarial networks for multi-domain image-to-image translation},
author={Choi, Yunjey and Choi, Minje and Kim, Munyoung and Ha, Jung-Woo and Kim, Sunghun and Choo, Jaegul},
journal={arXiv preprint},
volume={1711},
@article{murez2017image,
title={Image to image translation for domain adaptation},
author={Murez, Zak and Kolouri, Soheil and Kriegman, David and Ramamoorthi, Ravi and Kim, Kyungnam},
journal={arXiv preprint arXiv:1712.00479},
volume={13},
year={2017}
}
@inproceedings{yi2017dualgan,

View File

@ -87,7 +87,7 @@ $$L^{infoGAN}_{G}=L^{GAN}_G-\lambda L_1(c,c')$$
目前Image-to-Image Translation做的最好的GAN。
## 7.5 GAN训练有什么难点
由于GAN的收敛要求**两个网络D&G同时达到一个均衡**
由于GAN的收敛要求**两个网络D&G同时达到一个均衡**
## 7.6 GAN与强化学习中的AC网络有何区别
强化学习中的AC网络也是Dual Network似乎从某个角度上理解可以为一个GAN。但是GAN本身
@ -112,15 +112,22 @@ Instance Norm比Batch Norm的效果要更好。
GAN只适用于连续型数据的生成对于离散型数据效果不佳因此假如NLP方法直接应用的是character-wise的方案Gradient based的GAN是无法将梯度Back propagationBP给生成网络的因此从训练结果上看GAN中G的表现长期被D压着打。
## 7.10 Reference
### DCGAN部分
* Radford, A., Metz, L., & Chintala, S. (2015). Unsupervised representation learning with deep convolutional generative adversarial networks. arXiv preprint arXiv:1511.06434.
* Long, J., Shelhamer, E., & Darrell, T. (2015). Fully convolutional networks for semantic segmentation. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 3431-3440).
* [可视化卷积操作](https://github.com/vdumoulin/conv_arithmetic)
### WGAN部分
* Arjovsky, M., & Bottou, L. (2017). Towards principled methods for training generative adversarial networks. arXiv preprint arXiv:1701.04862.
* Arjovsky, M., Chintala, S., & Bottou, L. (2017). Wasserstein gan. arXiv preprint arXiv:1701.07875.
* Nowozin, S., Cseke, B., & Tomioka, R. (2016). f-gan: Training generative neural samplers using variational divergence minimization. In Advances in Neural Information Processing Systems (pp. 271-279).
* Wu, J., Huang, Z., Thoma, J., Acharya, D., & Van Gool, L. (2018, September). Wasserstein Divergence for GANs. In Proceedings of the European Conference on Computer Vision (ECCV) (pp. 653-668).
### CycleGAN
Zhu, J. Y., Park, T., Isola, P., & Efros, A. A. (2017). Unpaired image-to-image translation using cycle-consistent adversarial networks. arXiv preprint.
### Image2Image Translation
* Isola P, Zhu JY, Zhou T, Efros AA. Image-to-image translation with conditional adversarial networks. arXiv preprint. 2017 Jul 21.
* Zhu, J. Y., Park, T., Isola, P., & Efros, A. A. (2017). Unpaired image-to-image translation using cycle-consistent adversarial networks. arXiv preprint.CycleGAN)
* Choi, Y., Choi, M., Kim, M., Ha, J. W., Kim, S., & Choo, J. (2017). Stargan: Unified generative adversarial networks for multi-domain image-to-image translation. arXiv preprint, 1711.
* Murez, Z., Kolouri, S., Kriegman, D., Ramamoorthi, R., & Kim, K. (2017). Image to image translation for domain adaptation. arXiv preprint arXiv:1712.00479, 13.
### GAN的训练
* Arjovsky, M., & Bottou, L. (2017). Towards principled methods for training generative adversarial networks. arXiv preprint arXiv:1701.04862.

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 471 KiB

View File

@ -4,6 +4,8 @@
2018.11.18 陈方杰修改第八章目标检测目录新增目标检测基本概念修改R-CNN、Fast R-CNN、RetinaNet新增待完善论文FPN、RefineDet、RFBNet以及新增所有论文链接。
2018.11.18 新增人脸检测部分修改ssd-yolo系列
# 第八章 目标检测
**目标检测负责人:**
@ -84,7 +86,7 @@ Reference
![图像识别四大类任务图像来源于cs231n 2016课件Lecture 8](./img/ch8/8.1.1.png)
### 8.1.2 目标检测要解决的核心问题
### 8.1.2 目标检测要解决的核心问题
除了图像分类之外,目标检测要解决的核心问题是:
@ -96,7 +98,7 @@ Reference
如果用矩形框来定义目标,则矩形有不同的宽高比。由于目标的宽高比不同,因此采用经典的滑动窗口+图像缩放的方案解决通用目标检测问题的成本太高。
### 8.1.2 目标检测算法
### 8.1.2 目标检测算法分类?
基于深度学习的目标检测算法主要分为两类:
@ -104,17 +106,17 @@ Reference
先进行区域生成region proposalRP一个有可能包含待检物体的预选框再通过卷积神经网络进行样本分类。
任务:特征提取—>生成RP—>分类/定位回归
任务:特征提取—>生成RP—>分类/定位回归
常见的two stage目标检测算法有R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN和R-FCN等
常见的two stage目标检测算法有R-CNN、SPP-Net、Fast R-CNN、Faster R-CNN和R-FCN等
**2.One stage目标检测算法**
不用RP直接在网络中提取特征来预测物体分类和位置。
任务:特征提取—>分类/定位回归
任务:特征提取—>分类/定位回归
常见的one stage目标检测算法有OverFeat、YOLOv1、YOLOv2、YOLOv3、SSD和RetinaNet等
常见的one stage目标检测算法有OverFeat、YOLOv1、YOLOv2、YOLOv3、SSD和RetinaNet等
![](./img/ch8/8.1.2.png)
@ -582,9 +584,9 @@ Faster R-CNN中在分类器之后有一个专用的候选区域网络。
**2Network Design**
YOLO检测网络包括24个卷积层和2个全连接层,如图所示:
图7.4.11
图7.4.12
其中卷积层用来提取图像特征全连接层用来预测图像位置和类别概率值。YOLO网络借鉴了GoogLeNet分类网络结构。不同的是YOLO未使用inception module而是使用1×1卷积层此处1x1卷积层的存在是为了跨通道信息整合3×3卷积层进行简单替代。
@ -594,14 +596,14 @@ Faster R-CNN中在分类器之后有一个专用的候选区域网络。
**4损失函数**
损失函数的设计目标就是让坐标x,y,w,hconfidenceclassification这个三个方面达到很好的平衡。简单的全部采用了sum-squared error loss来做这件事会有以下不足18维的localization error和20维的classification error同等重要显然是不合理的2如果一些栅格中没有object一幅图中这种栅格很多那么就会将这些栅格中的bounding box的confidence置为0相比于较少的有object的栅格这些不包含物体的栅格对梯度更新的贡献会远大于包含物体的栅格对梯度更新的贡献这会导致网络不稳定甚至发散。
图7.4.13
解决方案如下更重视8维的坐标预测给这些损失前面赋予更大的loss weight,记为λcoord,在pascal VOC训练中取5上图蓝色框。对没有object的bbox的confidence loss赋予小的loss weight记为λnoobj在pascal VOC训练中取0.5上图橙色框。有object的bbox的confidence loss(上图红色框)和类别的loss上图紫色框的loss weight正常取1。
对不同大小的bbox预测中相比于大bbox预测偏一点小box预测偏相同的尺寸对IOU的影响更大。而sum-square error loss中对同样的偏移loss是一样。为了缓和这个问题作者用了一个巧妙的办法就是将box的width和height取平方根代替原本的height和width。在YOLO中每个栅格预测多个bounding box但在网络模型的训练中希望每一个物体最后由一个bounding box predictor来负责预测。因此当前哪一个predictor预测的bounding box与ground truth box的IOU最大这个predictor就负责predict object。这会使得每个predictor可以专门的负责特定的物体检测。随着训练的进行每一个predictor对特定的物体尺寸、长宽比的物体的类别的预测会越来越好。
图7.4.14神经网络输出后的检测流程
图7.4.15
**5非极大值抑制**
@ -657,7 +659,7 @@ Faster R-CNN中在分类器之后有一个专用的候选区域网络。
3Convolutional With Anchor Boxes
之前的YOLO利用全连接层的数据完成边框的预测导致丢失较多的空间信息定位不准。作者在这一版本中借鉴了Faster R-CNN中的anchor思想回顾一下anchor是RNP网络中的一个关键步骤说的是在卷积特征图上进行滑窗操作每一个中心可以预测9种不同大小的建议框。
图7.4.21
为了引入anchor boxes来预测bounding boxes作者在网络中果断去掉了全连接层。剩下的具体怎么操作呢
首先作者去掉了后面的一个池化层以确保输出的卷积特征图有更高的分辨率。然后通过缩减网络让图片输入分辨率为416×416这一步的目的是为了让后面产生的卷积特征图宽高都为奇数这样就可以产生一个center cell。作者观察到大物体通常占据了图像的中间位置就可以只用中心的一个cell来预测这些物体的位置否则就要用中间的4个cell来进行预测这个技巧可稍稍提升效率。最后YOLOv2使用了卷积层降采样factor为32使得输入卷积网络的416×416图片最终得到13×13的卷积特征图416/32=13。加入了anchor boxes后可以预料到的结果是召回率上升准确率下降。我们来计算一下假设每个cell预测9个建议框那么总共会预测13×13×9=1521个boxes而之前的网络仅仅预测7×7×2=98个boxes。具体数据为没有anchor boxes模型recall为81%mAP为69.5%加入anchor boxes模型recall为88%mAP为69.2%。这样看来准确率只有小幅度的下降而召回率则提升了7%,说明可以通过进一步的工作来加强准确率,的确有改进空间。
@ -665,9 +667,9 @@ Faster R-CNN中在分类器之后有一个专用的候选区域网络。
4Dimension Clusters维度聚类
作者在使用anchor的时候遇到了两个问题第一个是anchor boxes的宽高维度往往是精选的先验框hand-picked priors虽说在训练过程中网络也会学习调整boxes的宽高维度最终得到准确的bounding boxes。但是如果一开始就选择了更好的、更有代表性的先验boxes维度那么网络就更容易学到准确的预测位置。和以前的精选boxes维度不同作者使用了K-means聚类方法类训练bounding boxes可以自动找到更好的boxes宽高维度。传统的K-means聚类方法使用的是欧氏距离函数也就意味着较大的boxes会比较小的boxes产生更多的error聚类结果可能会偏离。为此作者采用的评判标准是IOU得分也就是boxes之间的交集除以并集这样的话error就和box的尺度无关了最终的距离函数为
作者通过改进的K-means对训练集中的boxes进行了聚类判别标准是平均IOU得分聚类结果如下图
图7.4.22数据集VOC和COCO上的边界框聚类分析结果
可以看到平衡复杂度和IOU之后最终得到k值为5意味着作者选择了5种大小的box维度来进行定位预测这与手动精选的box维度不同。结果中扁长的框较少而瘦高的框更多这符合行人的特征这种结论如不通过聚类实验恐怕是发现不了的。当然作者也做了实验来对比两种策略的优劣如下图使用聚类方法仅仅5种boxes的召回率就和Faster R-CNN的9种相当。说明K-means方法的引入使得生成的boxes更具有代表性为后面的检测任务提供了便利。
表7.4.1
@ -680,13 +682,13 @@ Faster R-CNN中在分类器之后有一个专用的候选区域网络。
6Direct location prediction
前面讲到YOLOv2借鉴RPN网络使用anchor boxes来预测边界框相对先验框的offsets。边界框的实际中心位置 ,需要根据预测的坐标偏移值 ,先验框的尺度 以及中心坐标 (特征图每个位置的中心点)来计算:
但是上面的公式是无约束的,预测的边界框很容易向任何方向偏移,如当 时边界框将向右偏移先验框的一个宽度大小,而当 时边界框将向左偏移先验框的一个宽度大小因此每个位置预测的边界框可以落在图片任何位置这导致模型的不稳定性在训练时需要很长时间来预测出正确的offsets。所以YOLOv2弃用了这种预测方式而是沿用YOLOv1的方法就是预测边界框中心点相对于对应cell左上角位置的相对偏移值为了将边界框中心点约束在当前cell中使用sigmoid函数处理偏移值这样预测的偏移值在(0,1)范围内每个cell的尺度看做1。总结来看根据边界框预测的4个offsets ,可以按如下公式计算出边界框实际位置和大小:
其中为 为cell的左上角坐标如图5所示在计算时每个cell的尺度为1所以当前cell的左上角坐标为(1,1)。由于sigmoid函数的处理边界框的中心位置会约束在当前cell内部防止偏移过多。而 和 是先验框的宽度与长度前面说过它们的值也是相对于特征图大小的在特征图中每个cell的长和宽均为1。这里记特征图的大小为 (在文中是(13,13))这样我们可以将边界框相对于整张图片的位置和大小计算出来4个值均在0和1之间
如果再将上面的4个值分别乘以图片的宽度和长度像素点值就可以得到边界框的最终位置和大小了。这就是YOLOv2边界框的整个解码过程。约束了边界框的位置预测值使得模型更容易稳定训练结合聚类分析得到先验框与这种预测方法YOLOv2的mAP值提升了约5%。
图7.4.23边界框位置与大小的计算示例图
7Fine-Grained Features
@ -696,7 +698,7 @@ Faster R-CNN中在分类器之后有一个专用的候选区域网络。
8Multi-Scale Training
由于YOLOv2模型中只有卷积层和池化层所以YOLOv2的输入可以不限于416*416大小的图片。为了增强模型的鲁棒性YOLOv2采用了多尺度输入训练策略具体来说就是在训练过程中每间隔一定的iterations之后改变模型的输入图片大小。由于YOLOv2的下采样总步长为32输入图片大小选择一系列为32倍数的值输入图片最小为320*320此时对应的特征图大小为10*10不是奇数了确实有点尴尬而输入图片最大为608*608,对应的特征图大小为19*19,在训练过程每隔10个iterations随机选择一种输入图片大小然后只需要修改对最后检测层的处理就可以重新训练。
图7.4.24 Multi-Scale Training
采用Multi-Scale Training策略YOLOv2可以适应不同大小的图片并且预测出很好的结果。在测试时YOLOv2可以采用不同大小的图片作为输入在VOC 2007数据集上的效果如下图所示。可以看到采用较小分辨率时YOLOv2的mAP值略低但是速度更快而采用高分辨输入时mAP值更高但是速度略有下降对于544*544,mAP高达78.6%。注意这只是测试时输入图片大小不同而实际上用的是同一个模型采用Multi-Scale Training训练
@ -717,7 +719,7 @@ YOLOv2的训练
githubhttp://pjreddie.com/yolo9000/
YOLO9000是在YOLOv2的基础上提出的一种可以检测超过9000个类别的模型其主要贡献点在于提出了一种分类和检测的联合训练策略。众多周知检测数据集的标注要比分类数据集打标签繁琐的多所以ImageNet分类数据集比VOC等检测数据集高出几个数量级。在YOLO中边界框的预测其实并不依赖于物体的标签所以YOLO可以实现在分类和检测数据集上的联合训练。对于检测数据集可以用来学习预测物体的边界框、置信度以及为物体分类而对于分类数据集可以仅用来学习分类但是其可以大大扩充模型所能检测的物体种类。 作者选择在COCO和ImageNet数据集上进行联合训练但是遇到的第一问题是两者的类别并不是完全互斥的比如"Norfolk terrier"明显属于"dog"所以作者提出了一种层级分类方法Hierarchical classification主要思路是根据各个类别之间的从属关系根据WordNet建立一种树结构WordTree结合COCO和ImageNet建立的WordTree如下图所示
图7.4.26 基于COCO和ImageNet数据集建立的WordTree
WordTree中的根节点为"physical object"每个节点的子节点都属于同一子类可以对它们进行softmax处理。在给出某个类别的预测概率时需要找到其所在的位置遍历这个path然后计算path上各个节点的概率之积。
@ -982,6 +984,184 @@ github(Official)https://github.com/ruinmessi/RFBNet
- arXivhttps://arxiv.org/abs/1811.04533
- github(Official)https://github.com/qijiezhao/M2Det
## 8.4 人脸检测
在目标检测领域可以划分为了人脸检测与通用目标检测,往往人脸这方面会有专门的算法(包括人脸检测、人脸识别、人脸其他属性的识别等等),并且和通用目标检测(识别)会有一定的差别,着主要来源于人脸的特殊性(有时候目标比较小、人脸之间特征不明显、遮挡问题等),下面将从人脸检测和通用目标检测两个方面来讲解目标检测。
### 8.4.1 目前主要有人脸检测方法分类?
目前人脸检测方法主要包含两个区域传统人脸检测算法和基于深度学习的人脸检测算法。传统人脸检测算法主要可以分为4类
1基于知识的人脸检测方法
2基于模型的人脸检测方法
3基于特征的人脸检测方法
4基于外观的人脸检测方法。
由于本书着重关注深度学习,下面会着重介绍基于深度学习的人脸检测方法。
2006年Hinton首次提出深度学习Deep Learning的概念它是通过组合低层的特征形成更高层的抽象特征。随后研究者将深度学习应用在人脸检测领域主要集中在基于卷积神经网络CNN的人脸检测研究如基于级联卷积神经网络的人脸检测cascade cnn、 基于多任务卷积神经网络的人脸检测MTCNN、Facebox等很大程度上提高了人脸检测的鲁棒性。当然通用目标检测算法像Faster-rcnn、yolo、ssd等也有用在人脸检测领域也可以实现比较不错的结果但是和专门人脸检测算法比还是有差别。下面部分主要介绍基于深度学习的的人脸检测算法基于深度学习的通用目标检测算法将在第二大节介绍。
### 8.4.2 如何检测图片中不同大小的人脸?
传统人脸检测算法中针对不同大小人脸主要有两个策略:
1缩放图片的大小图像金字塔如图8.4.1所示);
2缩放滑动窗的大小如图8.4.2所示)。
![](./img/ch8/8.4.1.png)
图 8.1 图像金字塔
![](./img/ch8/8.4.2.png)
图 8.2 缩放滑动窗口
基于深度学习的人脸检测算法中针对不同大小人脸主要也有两个策略,但和传统人脸检测算法有点区别,主要包括:
1缩放图片大小。不过也可以通过缩放滑动窗的方式基于深度学习的滑动窗人脸检测方式效率会很慢存在多次重复卷积所以要采用全卷积神经网络FCN用FCN将不能用滑动窗的方法。
2通过anchor box的方法如图8.3所示不要和图8.2混淆这里是通过特征图预测原图的anchorbox区域具体在facebox中有描述
![](./img/ch8/8.4.3.png)
图 8.3 anchor box
### 8.4.3 如何设定算法检测最小人脸尺寸?
主要是看滑动窗的最小窗口和anchorbox的最小窗口。
1滑动窗的方法
假设通过12×12的滑动窗不对原图做缩放的话就可以检测原图中12×12的最小人脸。但是往往通常给定最小人脸a=40、或者a=80以这么大的输入训练CNN进行人脸检测不太现实速度会很慢并且下一次需求最小人脸a=30*30又要去重新训练通常还会是12×12的输入为满足最小人脸框a只需要在检测的时候对原图进行缩放即可w=w×12/a。
2anchorbox的方法
原理类似这里主要看anchorbox的最小box通过可以通过缩放输入图片实现最小人脸的设定。
### 8.4.4 如何定位人脸的位置
1滑动窗的方式
滑动窗的方式是基于分类器识别为人脸的框的位置确定最终的人脸,
![](./img/ch8/8.4.4.png)
图 8.4 滑动窗
2FCN的方式
FCN的方式通过特征图映射到原图的方式确定最终识别为人脸的位置特征图映射到原图人脸框是要看特征图相比较于原图有多少次缩放缩放主要查看卷积的步长和池化层假设特征图上(2,3)的点可粗略计算缩放比例为8倍原图中的点应该是(16,24)如果训练的FCN为12*12的输入对于原图框位置应该是(16,24,12,12),当然这只是估计位置,具体的再构建网络时要加入回归框的预测,主要是相对于原图框的一个平移与缩放。
3通过anchor box的方式
通过特征图映射到图的窗口,通过特征图映射到原图到多个框的方式确定最终识别为人脸的位置。
### 8.1.5 如何通过一个人脸的多个框确定最终人脸框位置?
![](./img/ch8/8.4.5.png)
图 8.5 通过NMS得到最终的人脸位置
NMS改进版本有很多最原始的NMS就是判断两个框的交集如果交集大于设定的阈值将删除其中一个框那么两个框应该怎么选择删除哪一个呢 因为模型输出有概率值,一般会优选选择概率小的框删除。
### 8.1.6 基于级联卷积神经网络的人脸检测Cascade CNN
1. cascade cnn的框架结构是什么
![](./img/ch8/8.4.6.png)
级联结构中有6个CNN3个CNN用于人脸非人脸二分类另外3个CNN用于人脸区域的边框校正。给定一幅图像12-net密集扫描整幅图片拒绝90%以上的窗口。剩余的窗口输入到12-calibration-net中调整大小和位置以接近真实目标。接着输入到NMS中消除高度重叠窗口。下面网络与上面类似。
2. cascade cnn人脸校验模块原理是什么
该网络用于窗口校正使用三个偏移变量Xn:水平平移量Yn:垂直平移量Sn:宽高比缩放。候选框口(x,y,w,h)中,(x,y)表示左上点坐标,(w,h)表示宽和高。
我们要将窗口的控制坐标调整为:
$$
x-{x_nw}/{s_n},y-{y_nh}/{s_n},{w}/{s_n},{h}/{s_n}
$$
这项工作中,我们有$N=5×3×3=45$种模式。偏移向量三个参数包括以下值:
$$
Sn(0.83,0.91,1.0,1.10,1.21)
$$
$$
Xn(-0.17,0,0.17)
$$
$$
Yn(-0.17,0,0.17)
$$
同时对偏移向量三个参数进行校正。
![](./img/ch8/8.4.8.png)
3、训练样本应该如何准备
人脸样本:
非人脸样本:
4. 级联的好处
级联的工作原理和好处:
- 最初阶段的网络可以比较简单,判别阈值可以设得宽松一点,这样就可以在保持较高召回率的同时排除掉大量的非人脸窗口;
- 最后阶段网络为了保证足够的性能,因此一般设计的比较复杂,但由于只需要处理前面剩下的窗口,因此可以保证足够的效率;
- 级联的思想可以帮助我们去组合利用性能较差的分类器,同时又可以获得一定的效率保证。
### 8.4.7 基于多任务卷积神经网络的人脸检测MTCNN
![](./img/ch8/8.4.9.png)
![](./img/ch8/8.4.10.png)
![](./img/ch8/8.4.11.png)
![](./img/ch8/8.4.12.png)
1.MTCNN模型有三个子网络。分别是P-Net,R-Net,O-Net.我想问一下1.模型中的三个input size是指的是同一张图resize到不同尺度下喂给不同模型还是同一张图依次经过三个模型然后是不同的输入尺寸这部分能给我讲一下吗2.每个模型它都有对应三个结果face classification;bounding box;facial landmark这三个在网络上是如何对应的呢
为了检测不同大小的人脸开始需要构建图像金字塔先经过pNet模型输出人脸类别和边界框边界框的预测为了对特征图映射到原图的框平移和缩放得到更准确的框将识别为人脸的框映射到原图框位置可以获取patch之后每一个patch通过resize的方式输入到rNet识别为人脸的框并且预测更准确的人脸框最后rNet识别为人脸的的每一个patch通过resize的方式输入到oNet跟rNet类似关键点是为了在训练集有限情况下使模型更鲁棒。
还要注意一点构建图像金字塔的的缩放比例要保留,为了将边界框映射到最开始原图上的
还要注意一点如何从featureMap映射回原图
### 8.4.8 Facebox
![](./img/ch8/8.4.13.png)
**1Rapidly Digested Convolutional Layers(RDCL)**
在网络前期使用RDCL快速的缩小feature map的大小。 主要设计原则如下:
- Conv1, Pool1, Conv2 和 Pool2 的stride分别是4, 2, 2 和 2。这样整个RDCL的stride就是32可以很快把feature map的尺寸变小。
- 卷积(或pooling)核太大速度就慢太小覆盖信息又不足。文章权衡之后将Conv1, Pool1, Conv2 和 Pool2 的核大小分别设为7x7,3x3,5x5,3x3
- 使用CReLU来保证输出维度不变的情况下减少卷积核数量。
**2Multiple Scale Convolutional Layers(MSCL)**
在网络后期使用MSCL更好地检测不同尺度的人脸。 主要设计原则有:
- 类似于SSD在网络的不同层进行检测
- 采用Inception模块。由于Inception包含多个不同的卷积分支因此可以进一步使得感受野多样化。
**3Anchor densification strategy**
为了anchor密度均衡可以对密度不足的anchor以中心进行偏移加倍如下图所示
![](./img/ch8/8.4.14.png)
## Reference
https://github.com/amusi/awesome-object-detection

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@ -10,5 +10,6 @@ xxx-xxx
**贡献者(排名不分先后):**
2018-11-04 新增移动端开源框架部署,细节内容有待完善
2018-11-18 新增10多个主流移动端开源框架介绍细节内容有待完善
###########################################################