image-processing - 人脸识别的误报

标签 image-processing face-recognition torch conv-neural-network

我有一个 CNN 根据 Mark Ruffalo 的图像(裁剪过的面孔)进行训练。对于我的正类,我有大约 200 张图像,对于负类数据点,我随机抽取了 200 张面孔。

该模型的召回率很高,但准确率很低。我怎样才能提高精度?我也受到我拥有的正面图像数量的限制。在这个权衡中,我准备妥协召回。

我曾尝试增加负样本的数量,但这引入了一种形式的偏差,并且模型开始将所有内容归类为负样本以达到局部最优。

我的 CNN 建立在 overfeat 的基础上:

local features = nn.Sequential()

features:add(nn.SpatialConvolutionMM(3, 96, 11, 11))
features:add(nn.ReLU())
features:add(nn.SpatialMaxPooling(2, 2, 2, 2))

features:add(nn.SpatialConvolutionMM(96, 256, 5, 5))
features:add(nn.ReLU())
features:add(nn.SpatialMaxPooling(2, 2, 2, 2))

features:add(nn.SpatialConvolutionMM(256, 512, 3, 3))
features:add(nn.ReLU())
features:add(nn.SpatialMaxPooling(2, 2, 2, 2))

-- 24x24x512
features:add(nn.SpatialConvolutionMM(512, 1024, 3, 3))
features:add(nn.ReLU())
features:add(nn.SpatialMaxPooling(2, 2, 2, 2))

--11x11x1024
features:add(nn.SpatialConvolutionMM(1024, 1024, 3, 3))
features:add(nn.ReLU())
features:add(nn.SpatialMaxPooling(2, 2, 2, 2))

-- 1.3. Create Classifier (fully connected layers)
local classifier = nn.Sequential()
classifier:add(nn.View(1024*4*4))
classifier:add(nn.Dropout(0.5))
classifier:add(nn.Linear(1024*4*4, 3072))
classifier:add(nn.Threshold(0, 1e-6))

classifier:add(nn.Dropout(0.5))
classifier:add(nn.Linear(3072, 4096))
classifier:add(nn.Threshold(0, 1e-6))

classifier:add(nn.Linear(4096, noutputs))




model = nn.Sequential():add(features):add(classifier)

请帮忙

最佳答案

尝试使用 CNN 的原始输出,而不是使用输出节点的 sign() (因为它是一个正负类,我假设在 [-1,1 范围内只有一个输出])。

例如,对于一个样本,输出可能是 [0.9] 表示应该选择正类。但是,如果您使用这些值,您可以找到一个特定的 threshold 值,希望,它可以为您提供所需的精度。换句话说,如果您发现任何大于 [-0.35] 的东西实际上应该被选为正类,因为它给了您更好的精度,那么 -0.35 应该是您的阈值 值。

这是ROC analysis的地方派上用场。

如果这有帮助,请告诉我。

关于image-processing - 人脸识别的误报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31187549/

相关文章:

android - BufferedImage 安卓端口

opencv - 差异框架进行人脸匹配

python - IndexError:列表索引超出范围,face_recognition

lua - 在 Windows 上使用 Luarocks 安装 Torch7 时出现 mingw 构建错误

lua - torch7 的意外行为

numpy - Lua Torch 相当于 np.where()?

python - 一像素宽曲线的曲率

c++ - 如何在 Magick++ 中以灰度格式写入图像

image-processing - 反向(移除)抗混叠滤波器

python - 如何为人脸识别python创建未知的人脸数据集