MTCNN笔记

MTCNN:级联卷积神经网络

技术关键点:图像金字塔,三层及联网络架构(P、R、O)、NMS、IOU

特点:多目标识别,无anchor

数据集:CelebA+WiderFace

网络流程:

第一步:对图片做图像金字塔,将一张图像缩放成多种尺寸,这一步的目的是让图片中的人脸有多个尺寸,以便于网络来识别,可以理解为框选人脸的框的大小是固定的,但是有些图像中人脸大小不一样,我们通过对图像做缩放,总有一个尺寸的人脸是符合该框的。

第二步:将这些图片传入P网络中,P网络输出是一张无固定大小的特征图,特征图上每一个特征点,都是一个输出(分类、偏移),我们可以通过该特征点再特征图上的位置,反算到该特征点所对应的原图的区域,从而通过输出的偏移量,来获得该位置的输出的候选框。然后我们将候选框调整为正方形后,获取到该候选框内的图像。

第三步:此时我们获得了大量的图像,再将这些图像缩放到24*24的大小,传入到R网络当中,R网络对每一个输入进来对图片进行二次的筛选和调整。得到了精选过的候选框。

第四步:我们将R网络得到的精选框,反算到原图,再次进行框选,得到精选后的图片,再将这些图片缩放为48*48,再传入到O网络中进行最终的筛选和调整,从而得到准确的结果。

网络模型:在这里插入图片描述

损失函数:
总损失 = 分类损失(除去部分样本):交叉熵 ➕ 偏移量损失(除去负样本):均方差

疑问难点:
1、P、R、O分别是用尺寸为12 x 12、24 x 24、48 x 48的图片进行训练的,但使用的时候,为什么能直接传原图进入P网络?
答:传12 x 12的图片时只得到的一个输出,但当传一整张图时,输出为一张特征图,此时特征图上的每一个特征点,都是一个输出,可以由该点在特征图的位置反算到该输出对应的原图位置。

2、P网络的输出,如何反算回原图获得目标区域?
答:特征图中每个特征区域代表原图的一个区域,通过该区域可以反算到所对应的原图位置。

3、R网络的输出,如何反算回原图获得目标区域?
答:R网络输入的是原图的坐标,直接通过坐标进行反算。

4、数据集如何制作 ?
答:我们分别要为P、R、O三个网络做数据集,每个网络的数据集中图片尺寸分别为12 x 12,24 x 24,48 x 48,每个尺寸又分为正样本、负样本、部分样本三个部分。 通过对CelebA中Label的目标框进行随机移动,获得新的目标框,再计算新建议框和原建议框的IOU,通过IOU值对将新对目标框分为正、负、部分样本。

猜你喜欢

转载自blog.csdn.net/Naturino/article/details/104733832
今日推荐