我有一个关于图像识别的相当具有挑战性的用例。我想检测混合回收材料的组成,例如压碎的罐头、纸张、瓶子,并检测任何异常情况,如玻璃、袋子、鞋子等。
使用Google Vision API尝试这些图像时,结果主要是“垃圾”、“回收”、“塑料”等,可能是因为API没有针对这种混合和破损的材料进行训练?
对于这种情况,我是否需要使用像TensorFlow这样的工具,并从我自己的图像构建一个神经网络?我猜我不需要使用Google,因为TensorFlow是开源的?
谢谢。
回答:
因此,通常情况下,当你将机器学习应用于一个新的、现实世界的用例时,最好获取一个代表性的数据集,在你的案例中,就是这些垃圾材料的图像。
然后你可以选择一个合适的检测模型(如VGG、Inception、ResNet),修改最终的分类层以输出你需要的类别标签数量(在你的案例中可能是“正常”或“异常”,所以是2个类别)。
然后你加载这个网络的预训练权重,因为所学的特征具有泛化性(谷歌“迁移学习”),随机初始化你修改的分类层,然后训练最后一层,可能训练最后两层,或最后三层(取决于什么效果最好,你有多少数据,泛化性)等。
简而言之:1. 选择一个预训练模型。2. 针对你的问题进行修改。3. 在你自己的数据集上微调权重。