Yolo 到 keras 到 coreml:获得置信度和坐标作为输出

Yolo to keras to coreml : get confidence and coordinates as outputs

❓问题

你好, 采取了以下步骤

  1. 我只用一个自定义数据集训练了 yolo tiny class

  2. 将 .weights(darknet) 转换为 .h5 (keras)(已验证并且 keras 模型也工作正常)

  3. 现在,当我将 Keras 转换为核心 ml 模型时,我没有得到坐标和置信度作为输出

用于转换为核心 ml 的命令

coremltools.converters.keras.convert(
'model_data/yolo.h5',
 input_names='image',
 class_labels=output_labels,
 image_input_names='image',
 input_name_shape_dict={'image': [None, 416, 416, 3]}
 )

虽然我检查了第三方 Yolo 模型转换为核心 ml 给出坐标和置信度

参考截图:

第3方Yolo模型转换为核心ml

我的Yolo模型转换成核心ml

系统信息

不要添加这个:class_labels=output_labels -- 它会使你的 Core ML 模型变成一个分类器,在 Core ML 中被特殊对待。由于您的模型是一个对象检测器,因此您不需要这个。

在此处查看其余内容:https://github.com/hollance/YOLO-CoreML-MPSNNGraph

基本上,您需要在 Swift 或 Obj-C 代码中自行解码边界框坐标。您也可以将其添加到模型中,但根据我的经验,速度较慢。 (这里有一个 blog post 展示了如何对 SSD 执行此操作,它与 YOLO 类似但不完全相同。)

我会继续更新它,因为它可能对其他人有用:

这将非常特定于您具有 自定义暗网权重 的场景,它检测到 场景中的自定义对象

典型的后续操作是:

  1. 训练自定义权重(我假设您将使用 Darknet 来执行此操作)
  2. 将 Darknet 权重转换为 keras 检查点或 .h5(以适合您的方式)
  3. 使用 Coreml 工具将您的 keras 模型转换为 coreml 模型
  4. 确保在创建 coreml 模型时使用 Imagetype
  5. 测试 coreml 模型是否给出 multi-array 形状 13x13x125
  6. 在 iOS 应用程序中使用此 coreml 模型

希望这会有所帮助。如果需要更多帮助,请在评论中删除您的请求

问候 Ankit