3

我正在学习使用神经网络和对象检测,使用PythonKeras. 我的目标是检测图像中非常具体的东西,比如说一个非常具体的品牌/类型的汽车化油器(汽车发动机的一部分)。

到目前为止,我发现的教程以猫和狗的检测为例,其中许多使用预训练的 VGG16 网络来提高性能。

如果我只想检测我的特定化油器,而不关心图像中的任何其他内容,那么使用 VGG16 是否有意义。?VGG16 是否仅在您想要检测许多通用项目而不是一个特定项目时有用?

编辑:我只想知道图像中是否有特定的物体(化油器)。无需在其周围定位或放置一个盒子。我有大约 1000 张这种特定化油器的图像供网络训练。

4

2 回答 2

2

VGG16 或其他一些预训练的神经网络主要用于分类。这意味着您可以使用它来区分图像属于哪个类别。

据我了解,您需要检测化油器在图像中的位置。对于类似的事情,您需要一种不同的、更复杂的方法。

你可以使用

于 2017-10-20T13:18:02.850 回答
1

VGG 16 可用于此目的。(现在是最好的吗?这是一个没有明确答案的开放式问题)

但是你必须替换它的结尾来满足你的需要。一个常规的 VGG 模型的末端有大约一千个类,而一个猫 x 狗的 VGG 模型的末端变成了两个类。在您的情况下,您应该将其结尾更改为只有一个类。

在 Keras 中,您必须使用选项加载 VGG 模型include_top = False

然后你应该添加你自己的最终密集层(最后两个或三个密集层),确保最后一层只有一个单元:Dense(1, activation='sigmoid').

这将适用于“检测”(是/否结果)。
但是,如果您的目标是“定位/分割”,那么您应该创建自己的 U-net 或 SegNet 版本,例如。

于 2017-10-20T11:54:35.257 回答