基于上下文的细粒度识别方案
预期搭建的网络如图:
通过keras搭建后:
选择VGG16的原因是:
因为之前我针对VGG16 fine tune训练了一个人头分类器,效果较好,所以最主要的特征提取工作就可以交给预训练的vgg16来做了。
这样搭建网络的目的:
其实我们在做细粒度分类的时候,如果针对整幅图像分类的话,在不同缩小过程中,会忽略掉很多细节,尤其是池化这个过程,但是如果不池化的话,超大的参数量和不够深的网络是无法有好的效果的。所以我认为比较好的一种方案是,通过窗口对图像进行检测,但是遇到的问题就是,窗口语义能力不强,他只能判断这个 是不是人头,根据特征图来判断,但是其实当人头特别小的时候,例如4*4像素的人头,在多层maxpool后,就变成了1*1 和 非人头的差距非常小,导致误分严重,之前的算法 recall接近100%,但是precision在小窗口下比较低,效果不理想。所以引入上下文思路,做一些尝试。已经凌晨2点了,为了活的更久,做更多研究,先回去睡一会。明早起来继续战。
明天训练一下看看效果怎么样。