首页 > 解决方案 > OpenCV中的“增量”人脸训练

问题描述

我一直在使用 OpenCV 中的一些人脸检测。我已经完成了几个项目 - 一个使用预先构建的模型进行人脸检测。其他一些人做不同的事情,我收集自己的图像并训练自己的模型。当我做后者时,通常使用的数据集比你用于面部训练的数据集小得多。

在我的面部识别器上 - 我使用的许多常见面部都没有被正确检测到(由于面具、帽子、护目镜、眼镜等奇怪的属性)。所以我想重新训练我自己的模型——但是抓住巨大的“股票”数据集,将我的图像添加到其中可能需要很长时间。

所以问题是:有没有办法从现有模型(XML 文件)开始,并以一种只添加我的图像的方式运行训练器?

标签: opencvmachine-learningcomputer-visionface-detectionopencv-python

解决方案


这被称为“迁移学习”。Tenserflow (Keras) 对此有很多支持。它基本上包括采用具有预先存在的权重的预先存在的模型,在某些层上“冻结”权重,在现有层中或下方添加新层,然后仅重新训练未冻结的层。

它不能用来轻易地“继续”学习,但可以用来在训练中添加额外的东西——对于更新的方面(比如可能,将蒙面人添加到已经训练的未蒙面人模型中,如我原来的问题)


推荐阅读