- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 Apache MXNet 进行机器学习项目,并且使用 Inception V3 模型(MXNet 模型动物园中的 imagenet1k-inception-bn 模型)。
我目前正在尝试训练一个模型来区分两种对象类型,但对象之间的差异很微妙。我发现该模型仍然混淆了另一件事,因为它看起来基本相同。
例如,假设您正在尝试训练模型来区分短吻鳄和鳄鱼。人类第一眼辨别它们的方法之一是通过观察它们 Nose 的形状。在训练机器学习模型时,我会给它整个短吻鳄和鳄鱼的图像并希望它能弄清楚,还是只给它 Nose 的图像,因为这是我关注的区别?
谢谢!
最佳答案
像 Inception 这样的深度学习模型有能力在足够的数据下学习这些特征。您不需要裁剪您认为对区分这两个类有用的功能。理想情况下,一个或多个卷积滤波器将检测 Nose 中的某些形状,并能够正确分类。
不过,您不应该对该模型抱有不合理的期望。如果仅凭视觉数据不足以让专家对某些短吻鳄和鳄鱼进行分类,那么您就不应该期望该模型能够做得更好。您应该建立人类基线表现,并将其用于比较。
与所有模型一样,数据质量/数量是最重要的部分。我强烈建议你也研究一下迁移学习;使用在更大的数据集上学到的权重作为起点。查看this blog post举个例子。您可以训练模型末尾的全连接层来区分短吻鳄和鳄鱼。甚至fine tune the convolutional layers以提高性能。
您可以使用 MXNet Gluon 轻松开始迁移学习。在下面的代码片段中,我们将权重从已经在 ImageNet(具有 1000 个类)上训练的 Inception v3 模型转移到非常相似的二元分类模型(除了最后一层之外,其他模型都相同)。然后,您可以使用自己的数据训练该网络。
import mxnet as mx
pretrained_net = mx.gluon.model_zoo.vision.get_model(name='inceptionv3', pretrained=True, classes=1000, prefix='aligcroc_')
net = mx.gluon.model_zoo.vision.get_model(name='inceptionv3', classes=2, prefix='aligcroc_')
net.features = pretrained_net.features
net.output.initialize()
batch_size = 1
channels = 3
height = width = 299
data_batch = mx.ndarray.random.normal(shape=(batch_size, channels, height, width))
net(data_batch)
关于machine-learning - 如何让图像识别深度网络检测微小差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48865895/
我是一名优秀的程序员,十分优秀!