0

这里对 ML 来说几乎是全新的。我正在尝试使用 turicreate 创建手部检测 CoreML 模型。

我使用的数据集来自https://github.com/aurooj/Hand-Segmentation-in-the-Wild,它从以自我为中心的角度提供手的图像,以及图像的掩码。我正在按照 turicreate 的“数据准备”(https://github.com/apple/turicreate/blob/master/userguide/object_detection/data-preparation.md)中的步骤逐步创建 SFrame。在整个过程中检查变量的内容,似乎没有任何问题。

准备好数据后,我按照https://github.com/apple/turicreate/tree/master/userguide/object_detection的“介绍性示例”部分中的步骤进行操作

当 turicreate 执行迭代以创建模型时,我得到了错误提示。似乎根本没有任何损失,这似乎不对。

no_loss_iterations

创建模型后,我尝试使用 SFrame 的 test_data 部分对其进行测试。然而,这些预测的结果只是空数组,这显然是不正确的。

空预测

将模型导出为 CoreML .mlmodel 并在应用程序中试用后,它无法识别任何东西(不足为奇)。

我对模型创建完全陌生,我无法弄清楚可能出了什么问题。数据集对我来说似乎相当准确。我对数据集所做的唯一更改是某些掩码没有明确的文件扩展名(它们是 PNG),因此我添加了 .png 扩展名。我还重命名了图像以遵循 turicreate 的教程格式(即vid4frame025.image.pngvid4frame025.mask.0.png。同样,使用此数据的 SFrame 创建过程在每一步似乎都是正确的。我能够成功地使用 turicreate 的教程数据集(自行车和汽车)遵循该过程。关于可能出了什么问题?

4

1 回答 1

0

我发现了这个问题,它基本上源于我对 Python 的不熟悉。

在数据准备部分的一部分中,在从掩码图像创建边界框之后,每个注释都被分配一个'label'指示注释所指对象的类型。'label': 'bike'我的数据具有与教程数据不同的名称格式,因此我的注释不是每个注释都有'label': 'vid4frame25`, 'label': 'vid4frame26', etc.

纠正这一点,使得每个注释'label': 'hand'似乎都纠正了这一点(或者至少到目前为止它正在创建一个看似合法的模型)。

于 2020-03-06T20:49:14.157 回答