图像分割掩模的应用与实现

在植物病害检测领域,及时准确地识别出病害植株对于农业生产至关重要。本文将探讨如何利用计算机视觉技术,特别是图像分割掩模技术,来提高病害检测的效率和准确性。将通过Roboflow平台来实现这一过程,并详细说明如何将分割掩模集成到工作流程中。

什么是图像分割掩模?

图像分割掩模是一种从图像中隔离出特定部分的技术。通过使用分割掩模,可以复制图像中被计算机视觉模型标记的确切区域。例如,分割掩模可以用来隔离植物上的病叶。

分割检测与分割掩模的区别

在图像中,如何检测对象(如人、狗、苹果等),并利用这些检测结果?将在图像中识别对象的行为定义为检测。一旦检测到对象并知道其在图像中的位置,就可以将其从图像的其余部分中裁剪出来。这个过程称为创建掩模。

分割掩模的用例

分割掩模在许多场景中都非常有用,例如:

  • 在繁忙的杂货店货架上检测和分类产品类型
  • 在拥挤的停车场中检测和分类汽车的制造商/型号
  • 在拥挤的购物中心区分不同的人
  • 在配送中心跟踪单个包裹

在所有这些情况下,能够隔离图像中的特定项目都是非常有用的。

使用分割掩模解决问题

在本节中,将构建一个模型,该模型能够识别植物上的感染叶片,并根据叶片上病斑的形状对病斑类型进行分类。这是一个现实世界中的问题,可以应用于农场、研究实验室和农业加工设施中,以识别疾病迹象并防止病害作物与健康作物混在一起。

可以使用任何RoboflowUniverse上的分割模型来执行实例分割。如果想了解更多关于如何创建自己的模型的信息,请查看关于创建自定义实例分割模型的指南。但是,对于本教程,将使用一个现有的托管在Universe上的数据集。让开始尝试预训练模型,该模型可以检测植物上的病斑。

# 假设已经有了一个预训练的模型和API密钥 # 将使用Roboflow的API来获取模型的预测结果 import requests from PIL import Image def get_prediction(image_path, api_key, model, version): files = {'image': open(image_path, 'rb')} params = {'model': model, 'version': version} headers = {'Authorization': f'Bearer {api_key}'} response = requests.post('https://api.roboflow.com/predict', files=files, params=params, headers=headers) return response.json()

使用远程端点时,推理结果将返回一个JSON对象,如下所示:

{ "predictions": [ { "x": 282.5, "y": 376.7, "width": 61, "height": 58, "class": "Scab", "confidence": 0.706, "points": [ { "x": 288, "y": 399 }, { "x": 270, "y": 397 }, { "x": 256, "y": 387 }, { "x": 251, "y": 381 }, ... ], }, ... ] }

这个JSON对象包含了图像中“Scab”的正确认位置的坐标。使用这些坐标,可以裁剪出(创建掩模)病叶。

现在既有Roboflow推理API显示图像上病斑位置的结果,也有显示每个识别出的病斑坐标的元组列表。对于推理结果中的每个预测,希望:

  • 将坐标点转换为步骤二中描述的元组对象列表;
  • 创建一个新的掩模层(灰色背景);
  • 使用多边形坐标点裁剪出图像中要通过掩模显示的部分;
  • 将图像转换为numpy数组,这使得更容易进行转换;
  • 保存只包含掩模的图像。
# 使用Python3 Pillow包处理检测 from PIL import Image, ImageDraw def create_mask(image_path, polygon_points): image = Image.open(image_path) draw = ImageDraw.Draw(image) draw.polygon(polygon_points, fill=(255, 255, 255, 0)) # 创建透明掩模 image.save(f"mask_{index}.png")

在本教程中,讨论了分割掩模以及它们如何使能够裁剪出分割模型返回的正确认位置。使用分割掩模中的内容,可以在图像的特定区域运行额外的模型。这在想要使用一个精细调整的图像分类器时特别有用,如果背景中有很多对象,它可能不会表现得那么好。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485