在开始构建需要特定区域鱼类信息的应用程序之前,无论是渔场、水族馆还是其他水域,需要一个能够识别鱼类存在及其种类的模型。Roboflow提供了一个免费使用的鱼类检测模型,可以作为鱼类检测和识别应用程序的起点。该模型能够识别七种鱼类类别,但底层数据可以与更多标注图像一起使用,以识别更广泛的鱼类。
在本指南中,将展示如何使用Roboflow鱼类检测API来检测水域中鱼类的存在。到本教程结束时,将获得代表图像中所有鱼类位置的JSON数据,以及由检测模型返回的预测的视觉表示。当将检测结果绘制到图像上时,它们将如下所示:
现在,让开始吧!将使用Roboflow Universe上的“Aquarium Combined”数据集,这是一个社区,可以在这里找到超过100,000个开源数据集和11,000个训练模型,可以使用这些模型来解决计算机视觉问题。Aquarium Combined模型已经训练识别七种鱼类,包括:
Fish (general), Jellyfish, Penguin, Puffin, Shark, Starfish, Stingray
可以从这个模型复制数据并创建自己的模型来识别新的鱼类。要了解更多关于创建自己的模型的信息,请查看。
将使用的模型具有74.0%的mAP分数和78.5%的精确度。要开始使用,请创建一个免费的Roboflow账户。这个账户将给一个API密钥,可以使用它来查询Universe上的公共模型,比如将要使用的鱼类检测模型。
可以通过转到RoboflowUniverse上的“Model”标签来测试模型,以确保它满足需求。这个标签提供了一个交互式小部件,通过它可以测试模型。
现在已经测试了模型,可以开始在应用程序中使用它了!在Universe上的模型页面底部,测试小部件下方,将有一个部分提供一系列部署选项。使用Roboflow,可以将模型部署到多种环境中,包括:
Luxonis OAK; Raspberry Pi; NVIDIA Jetson; A Docker container; A web page and; A Python script using the Roboflow SDK.
对于本指南,将专注于在Python脚本中使用模型。要使用模型,请将Universe上“在本地和托管图像上进行推理”标题下的Python标签中的代码复制到一个新文件中:
from roboflow import Roboflow
rf = Roboflow(api_key="API_KEY")
project = rf.workspace().project("aquarium-combined")
model = project.version(5).model
# infer on a local image
print(model.predict("your_image.jpg", confidence=40, overlap=30).json())
# visualize your prediction
model.predict("your_image.jpg", confidence=40, overlap=30).save("prediction.jpg")
代码片段将预填充API密钥。此脚本:
导入Roboflow包;创建一个对象,通过该对象可以与Roboflow API进行交互;在本地计算机上的图像上运行模型的推理。取消注释“visualize your prediction”注释后的代码行。此行代码将创建一个名为“prediction.jpg”的新文件,显示模型返回的所有预测的位置。
让在以下图像上测试脚本:
图像包含三条鱼。让运行代码,看看模型表现如何。代码只会返回置信度为20%或更高的预测,如之前设置的“confidence”值所定义。如果有一些置信度低且无用的预测,可以调整这个值使其更高。
以下是模型返回的JSON对象的摘录:
{'predictions': [{'x': 283.0, 'y': 1222.0, 'width': 218.0, 'height': 132.0, 'confidence': 0.905432939529419, 'class': 'fish', 'image_path': 'new1.jpg', 'prediction_type': 'ObjectDetectionModel'}...], 'image': {'width': 1080, 'height': 1920}}
可以通过打开之前要求程序创建的“prediction.jpg”文件,来确认对象映射返回的坐标对应于图像上鱼的位置:
模型已成功识别了图像中的鱼,尽管一片叶子被错误地识别为鱼。这可以通过向模型添加更具代表性的标记数据来解决。要运行鱼类视频的预测,可以通过创建的“model”对象将视频的每一帧传递给Roboflow API并运行推理。
如何使用鱼类检测API?这是一个很好的问题。以下是一些由能够检测鱼类的计算机视觉模型启用的项目,就像在本文中使用的那个模型一样:
- 构建一个应用程序,允许某人拍摄水族馆中的鱼的照片并返回有关鱼类的信息;
- 监控特定区域的不同鱼类种类;
- 计算受控区域中的鱼的数量;
- 监控受控区域中捕食者的存在;
- 等等。
要构建这些应用程序,可以使用已经创建的基本模型,并通过添加不同鱼类的标记图像来扩展它。Roboflow提供了一系列工具,帮助高效地构建自己的模型,从让使用现有的模型——以及已经构建的模型的以前版本——来帮助加快注释,到帮助以一种将有助于提高模型性能的方式增加数据集的大小。