Roboflow不得不说是一个让人非常惊艳的视觉平台,最近在做乒乓球检查,在上面可以搜索到很多相关例子,包含数据集和预训练好的模型。嗯,果然是具备构建和部署计算机视觉模型所需的一切。
在网站上搜索table tennis,有很多相关项目和数据集,如图找到一个乒乓球的数据集,包含4714张标注图片,并且包含预训练好的模型,模型使用的是 Roboflow 2.0 Object Detection(Fast)。
用树莓派5拍了一张包含乒乓球的图片,上传测试一下:
拍的比较昏暗,也算小目标了,居然成功检测出来了:
于是想着赶紧本地部署测一下,如下是具体步骤:
1、安装 roboflow inference
Roboflow Inferencehttps://inference.roboflow.com/
先看roboflow inference,是一种在最先进的计算机视觉模型上运行推理的工具。它可以在各种设备和环境上部署,无需机器学习的先验知识。Roboflow推理支持目标检测、分类、实例分割模型以及基础模型。
Roboflow inference使用Onnxruntime作为其核心推理引擎。Onnxruntime提供了一系列不同的执行提供程序,可以优化不同目标设备上的推理。
因为笔记本电脑带GPU,所以安装如下:
conda create --name roboflow python=3.10
conda activate roboflow
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple inference-gpu
如果还没安装onnxruntime-gpu,这里会自动安装onnxruntime-gpu,一定得注意 onnxruntime-gpu 与cuda的对应关系:
由于我的电脑是cuda12.1的版本,安装后需要升级onnxruntime-gpu 到 1.17版本,升级命令如下:
pip install --upgrade onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/
2、申请API KEY
Authentication | Roboflow Docs
需要注册 Roboflow,并创建dashboard,在 settings 里面,工作目录下可以找到你的 API KEY
3、使用roboflow平台上预训练好的模型进行推理
使用roboflow inference,您可以运行Roboflow Universe上提供的50000多个模型中的任何一个。Run a Fine-Tuned Model - Roboflow Inferencehttps://inference.roboflow.com/quickstart/explore_models/#run-a-model-on-universe
我所需要推理的乒乓球检查模型是 tt2-cyt9i/1
所以具体代码如下:
# import a utility function for loading Roboflow models
from inference import get_model
# import supervision to visualize our results
import supervision as sv
# import cv2 to helo load our image
import cv2
# define the image url to use for inference
image_file = "ping_pong.jpg"
image = cv2.imread(image_file)
# load a pre-trained yolov8n model
model = get_model(model_id="tt2-cyt9i/1", api_key="填入你申请的API KEY")
# run inference on our chosen image, image can be a url, a numpy array, a PIL image, etc.
results = model.infer(image)
# load the results into the supervision Detections api
detections = sv.Detections.from_inference(results[0].dict(by_alias=True, exclude_none=True))
# create supervision annotators
bounding_box_annotator = sv.BoundingBoxAnnotator()
label_annotator = sv.LabelAnnotator()
# annotate the image with our inference results
annotated_image = bounding_box_annotator.annotate(
scene=image, detections=detections)
annotated_image = label_annotator.annotate(
scene=annotated_image, detections=detections)
# display the image
sv.plot_image(annotated_image)
会使用 matplotlib 展示出检查结果:
4、常见问题
很遗憾如果你不会科学上网的话,会连不上Roboflow API。
最后使用NVIDIA老黄最喜欢的 perplexity ai 做个Roboflow介绍Perplexityhttps://www.perplexity.ai/
Roboflow是一个为开发者提供的工具和平台,旨在帮助他们构建自己的计算机视觉应用。它提供了一整套端到端的解决方案,包括图像收集、标注、创建数据集、模型训练和部署应用。Roboflow的目标是使计算机视觉成为每个开发者工具箱中的必备工具,并为尽可能多的开发者提供支持。Roboflow的主要功能包括:
- 数据收集与管理:帮助用户收集和管理用于训练自定义YOLOv8模型的数据。
- 数据标注:提供工具和服务,快速标注数据集,包括使用基于SAM的标签助手,以更快的速度对图像进行标注。
- 数据预处理和扩充:通过预处理和扩充数据,提高模型的稳健性。
- 模型训练与评估:支持模型训练过程,并提供模型评估工具,如混淆矩阵和交互式矢量分析图,帮助用户找到改进模型的机会。
- 模型部署:支持模型部署,允许用户测试模型并查找部署指南,包括实时测试和使用训练好的模型作为标注助手。
Roboflow使用WebML和TensorFlow.js作为其核心技术,提供了一种快速而便捷的方式,让开发者在网页浏览器中运行他们的计算机视觉模型。这使得无论开发者的技能水平或经验如何,都能够利用Roboflow构建计算机视觉应用。
迄今为止,已经有超过10万名开发者使用Roboflow构建了各种各样的应用,包括许多知名企业。Roboflow的使用案例涵盖了从药房管理系统到游戏应用等多个领域。
总之,Roboflow为构建和部署计算机视觉模型提供了全面的工具和服务,从数据收集、标注到模型训练和部署,为开发者提供了一站式的解决方案。