【问题标题】:False Positives with Face recognition人脸识别的误报
【发布时间】:2015-09-20 03:48:28
【问题描述】:

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

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

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

我的 CNN 是基于过分的:

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)

请帮助

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我确实有连续范围形式的输出。问题是没有遵循这种理想的情况。无论如何(就每个类的功能价值而言),都无法区分误报和真阳性。
    • 这样的话,好像是特征提取的问题。您需要更好的人脸图像表示。做PCA 很容易,there is a lot of documentation 也很简单。如果您在图像中控制了照明并且姿势和面部表情的变化很小,这是一个很好的选择。你试过吗?用于人脸识别的 PCA 也称为eigenfaces。您目前是否在进行任何特征提取/表示?
    • 我试过fisherfaces和lbp。如果不对齐面,它们就会惨遭失败。然而在对齐之后出现了同样的误报问题!
    猜你喜欢
    • 2020-03-21
    • 1970-01-01
    • 2023-03-25
    • 2011-12-14
    • 1970-01-01
    • 2022-12-11
    • 2022-06-24
    • 2018-06-14
    • 2018-06-28
    相关资源
    最近更新 更多