鸟类识别模型介绍
在自然保护领域,鸟类识别技术的应用越来越广泛。通过使用摄像头和应用程序,可以识别出不同种类的鸟类,从而帮助人们更好地了解周围的自然环境。Roboflow Universe提供了一个包含超过110,000个公共数据集和11,000个训练模型的存储库,这些资源可以免费用于计算机视觉项目。该平台提供了一个开放且免费的API,能够检测大约30种鸟类,从蓝松鸦到歌麻雀。通过使用底层数据集并添加新的标注图像,可以扩展模型以识别更多种类的鸟类。
如何使用鸟类检测模型
将展示如何使用Roboflow Universe上的鸟类检测模型来识别图片中鸟类的位置。在本指南结束时,将得到一个Python脚本,该脚本能够获取模型对图片的预测坐标,并在提供的图片上绘制方框以直观表示识别结果。
开始使用鸟类检测API
将使用的鸟类检测API名为"bird v2",该API托管在Roboflow Universe上。要从此模型检索预测结果,需要有一个Roboflow账户。可以免费创建一个。创建账户后,将获得一个API密钥,可以使用它来访问Universe上的公开模型。
在开始编写脚本以从API检索预测之前,将测试模型以确保它满足需求。如前所述,该模型仅检测大约30种鸟类,但可以下载数据集并添加新图像来训练模型以识别更多种类。该模型达到了89.7%的mAP分数和90.3%的精确度分数。
测试模型
要测试模型,请访问Roboflow Universe上的鸟类检测页面,然后点击侧边栏中的"模型"。这个页面包含一个交互式小部件,可以使用它来测试模型。这个小部件支持使用以下方式测试模型:
- 数据集测试集中的图像;
- 通过URL可访问的图像或视频;
- 上传到页面上的图像或视频;
- 浏览器摄像头。
在应用中使用API
在Universe的测试环境中实验API后,准备好开始在应用中使用API了。对于本指南,将使用Roboflow Python SDK。这个SDK可以让用几行代码"运行推理"(从模型中检索预测)。要开始,请创建一个名为"app.py"的新文件。滚动到Universe模型页面上的"在本地和托管图像上推理"部分,并将提供的代码片段复制到新app.py文件中。
from roboflow import Roboflow
rf = Roboflow(api_key="YOUR_API_KEY")
project = rf.workspace().project("bird-v2")
model = project.version(2).model
# 在本地图像上进行推理
print(model.predict("your_image.jpg", confidence=40, overlap=30).json())
model.predict("your_image.jpg", confidence=40, overlap=30).save("prediction.jpg")
从脚本的最后"可视化预测"行的注释中移除。这行代码将创建一个新的图像文件,其中包含显示模型识别鸟类位置的方框。在添加此代码到脚本后,运行脚本。这个脚本将:
- 在控制台打印一个JSON对象,其中包含有关所有预测的信息;
- 创建一个新的prediction.jpg文件,显示图片上的所有预测。
测试脚本
运行脚本后,得到这个JSON对象,显示预测:
{'predictions': [{'x': 494.0, 'y': 308.5, 'width': 258.0, 'height': 209.0, 'confidence': 0.8964624404907227, 'class': 'orchard-oriole', 'image_path': 'original.jpg', 'prediction_type': 'ObjectDetectionModel'}], 'image': {'width': 800, 'height': 533}}
"prediction.jpg"文件看起来像这样:可以看到,模型成功地识别出图片中的鸟是果园鹂。太好了!
模型部署到生产环境
有了可用的模型后,下一步是考虑最适合用例的部署方法。Roboflow提供了一系列的SDK,这些SDK减少了在代码中使用模型的摩擦。Roboflow文档包含了可用选项的详细信息。以下是一些最常用的部署方法:
- Web浏览器:使用JavaScript和roboflow.js在浏览器中运行模型。
- iOS:在原生iOS应用中部署模型。
- NVIDIA Jetson:在专为边缘计算设计的设备上运行模型。非常适合需要更多计算能力的应用。
- Raspberry Pi:在小型计算机上运行模型。
- Luxonis OAK:在具有相机和其他内置功能(例如深度功能)的边缘推理设备上使用模型。
- Python SDK:之前使用过,Roboflow Python SDK提供了抽象函数,可以在Python应用中运行推理,模型托管在Roboflow上。
鸟类检测模型的使用案例
在本文开头,提到了一些鸟类检测模型的使用案例。无论是业余爱好者还是自然保护专业人士,都可以利用鸟类检测模型。例如,可以:
- 使用鸟类检测模型收集关于花园中鸟类的数据;
- 跟踪某种鸟类在自然保护区出现的次数;
- 记录在一年中不同时间在特定区域最常见的鸟类种类;
- 创建一个互动且有趣的应用程序,帮助孩子们更多地了解周围的鸟类;
- 等等!
根据用例,可能想要改进底层检测模型以满足需求。可以在这个指南中了解更多关于创建自己的模型的信息:例如,如果是一个自然组织,想要监测濒危物种,可以选择训练一个新模型来识别这些物种;如果正在构建一个鸟类识别应用程序,可能想要复制一直在使用的模型,并添加更多数据以增加应用程序的实用性。
在本指南中,介绍了如何使用托管在Roboflow Universe上的鸟类检测模型来识别图片中的鸟类种类。展示了如何使用Roboflow Universe推理小部件来测试鸟类检测模型。然后,编写了一个简短的Python脚本,该脚本查询Roboflow API并在图片上运行推理。检索了所有预测的JSON表示以及显示所有预测的图片。还讨论了使用模型的一系列部署选项,以及模型的一些潜在用例。鼓励探索想法,让创造力流动;自然检测系统如鸟类种类分类器的实用性是巨大的。祝构建愉快!