原文链接:目标检测
目标检测
目标检测是在图片中对目标进行分类和定位。给定一幅图片,检测器会对目标进行预测,如下图所示:
该模型是用来检测动物面部。并通过圈在目标周围的边界框对目标进行注释
入门实例
在该例子中,目标是预测图片中的汽车和自行车以及它们在图片中的位置(可以跳转到 数据准备 来了解怎么获取 ig02.sframe)
import turicreate as tc
# Load the data
data = tc.SFrame('ig02.sframe')
# Make a train-test split
train_data, test_data = data.random_split(0.8)
# Create a model
model = tc.object_detector.create(train_data)
# Save predictions to an SArray
predictions = model.predict(test_data)
# Evaluate the model and save the results into a dictionary
metrics = model.evaluate(test_data)
# Save the model for later use in Turi Create
model.save('ig02.model')
# Export for use in Core ML
model.export_coreml('MyCustomObjectDetector.mlmodel')
数据采集
这个例子假设数据已经存在了,在我们创建模型之前,我们需要给数据打标签。数据应该是由图片和正确的注释(目标的标签和边界框)组成。我们拥有越多的数据,我们的预测就会越好。预测的数据是要和标记出来的数据一样的,你标记的数据是什么样子,预测出来的数据就会是什么样子。如下图所示:
在这个例子中,我们选择球和杯子作为识别目标,因此我们会标记球和杯子。在这个场景里,我们不检测水果,所以我们不会标记它们。首先你应该确定要检测哪些类别。如果训练集中的所有类别的目标都需要标记,反而每个类别的样本会变少。然而,你可以尽可能的在图片上标记目标,但是在使用 classes
参数传递要create
的标签列表时,此列表中未涵盖的目标类别会自动忽略。
上面图片的注释是一个字典类型,每个字典代表一个边界框
[{
'coordinates': {
'height': 104, 'width': 110, 'x': 115, 'y': 216},
'label': 'ball'},
{
'coordinates': {