训练图像分类器 - 神经网络

Training image classifier - Neural Network

我想训练一个卷积神经网络来检测图像中是否存在手。

困难在于: 1/图像将包含手以外的其他物体,就像一群人的照片,其中手只是图像的一小部分 2/ 手可以有很多方向/形状等(是否打开,取决于角度等)

我正在考虑在大量裁剪的手部图像(+ 没有手的随机图像)上训练卷积神经网络,然后在图像的所有子方块上应用 classifier。这是一个好方法吗?

是否还有其他复杂的 2-class 卷积神经网络/RNN 示例可供我参考?

谢谢!

与选择网络相比,这似乎更像是寻找良好的标记训练数据的问题。神经网络可以学习 "pictures of hands" 和 "pictures which incidentally include hands" 之间的区别,但它需要一些带标签的示例才能弄清楚图像属于哪个类别。

你可能想看看这个:http://www.socher.org/index.php/Main/ParsingNaturalScenesAndNaturalLanguageWithRecursiveNeuralNetworks

I was thinking of training the convnet on a big set of cropped hand images (+ random images without hands) and then apply the classifier on all the subsquares of my images. Is this a good approach?

是的,我相信这是一个很好的方法。但是,请注意,当您说随机时,您或许应该从 "hands are most likely to appear" 的图像中对其进行采样。这实际上取决于您的用例,您必须调整数据集以适应您正在做的事情。

你应该如何构建你的数据集,就像这样:

  1. 从大图像中裁剪手部图像。
  2. 从同一张图片中抽取 X 张图片,但不在 hand/hands 附近的任何地方。

但是,如果您应该选择这样做:

  1. 从大图像中裁剪手部图像。
  2. 下载100万张绝对没有手的图片(夸张)。比如沙漠、海洋、天空、洞穴、高山,基本上是一大堆风景。然后用这个作为你的"random images without hands",你可能会得到不好的结果。

之所以这样,是因为已经有一个基础分布。我假设您的大部分图像可能是一群朋友的照片,在家里举行派对,或者背景图像可能是建筑物。因此,引入风景图像可能会破坏此分布,同时保持上述假设。

因此,使用 "random images"!

时要格外小心

on all the subsquares of my images

至于你问题的这一部分,你本质上是在整个图像上 运行 滑动 window。是的,实际上,它会起作用。但如果您正在寻找性能,这可能不是一个好主意。您可能需要 运行 一些分割算法,以缩小搜索范围 space。

Are there other examples of complex 2-class convnets / RNNs I could use for inspiration?

我不确定你所说的复杂 2-class 卷积网络是什么意思。我对 RNN 不熟悉,所以让我专注于卷积网络。您基本上可以自己定义卷积网络。例如,卷积层大小、层数、最大池化方法是什么、全连接层有多大等等。最后一层基本上是一个 softmax 层,网络决定什么 class 这将是。如果你有 2 classes,你的最后一层有 2 个节点。如果你有 3 个,那么 3 个。依此类推。所以它的范围从 2 到 1000 不等。我没听说过有超过 1000 classes 的卷积网络,但我可能是 ill-informed。希望对您有所帮助!