计算机视觉,也称为机器视觉、数字化转型或机器人流程自动化,是一种使计算机能够从图像或多维数据中解释和理解视觉信息的技术。这项技术的应用范围广泛,从简单的图像识别到复杂的场景理解。无论项目是研究性质的、个人项目还是商业解决方案,都可以通过简单的命令pip install roboflow
来为计算机视觉项目注入活力。
使用Roboflow的pip包,可以进行多种操作,包括但不限于:从数据集中以多种格式下载或导出图像、上传图像和注释、上传视频帧、运行训练好的数据集版本的推理,以及通过主动学习快速提升模型性能。
假设想要为工厂实现更多的自动化安全检查和产品质量分析。决定创建一个基于计算机视觉的自动化系统,以帮助识别并通知相关人员,例如:工厂地板或周边财产的危险或限制区域中出现的未授权人员或物品;检测员工是否穿戴适当的安全设备,并在工厂地板的正确区域;识别原材料或成品中的缺陷,如缺失或组装不当的部件;在生产线上识别其他潜在的危险或生命威胁情况,如在产品进入生产线之前检测产品的危险或不正确的方向,以防止造成堵塞或伤害。
和团队决定使用Roboflow和pip包来帮助更快地创建和部署模型。在创建模型之后,采取了必要的中间步骤,例如实现Roboflow的简单部署选项之一,现在视觉解决方案已经投入生产!
但是,等等——出现了一些问题。模型可能会出现误报或在应该检测到时未能检测到。所有的工作,只是为了解决另一个问题。这里有一个陷阱,问题实际上已经通过主动学习解决了。pip install roboflow
来拯救。
以下是如何在生产环境中使用Roboflow Python包实现主动学习的方法:
from roboflow import Roboflow
import json
# 在Roboflow > YOURWORKSPACE > Roboflow API中找到私有API密钥
# 注意:这是私有密钥,不是可公开的密钥!
# https://docs.roboflow.com/rest-api#obtaining-your-api-key
private_api_key = "INSERT API KEY HERE"
# 访问工作空间
rf = Roboflow(api_key=private_api_key)
workspace = rf.workspace()
# 可以从项目URL中获取模型路径,它位于URL中工作空间名称之后
# 也可以在任何使用Roboflow Train训练的数据集版本的示例Web应用中找到模型路径
# https://docs.roboflow.com/inference/hosted-api#obtaining-your-model-endpoint
model_path = "INSERT MODEL PATH HERE"
project = workspace.project(f"{model_path}")
# 确保替换为文件路径
# 如果在Colab中运行此代码,请确保将文件上传到Colab,将鼠标悬停在文件名上
# 并选择文件名右侧的三个点以复制文件路径,并将其粘贴为"imgpath"的值
img_path = "INSERT IMAGE PATH HERE"
# 确定上传失败时使用的重试次数
project.upload(f"{img_path}", num_retry_uploads=3)
主动学习是一种机器学习策略,它允许模型通过选择最有助于其学习的数据点来提高性能。在Roboflow中,可以设置条件来决定哪些图像应该被上传以供进一步训练。例如,可以根据对象的数量、类别、大小、置信区间等条件来过滤图像。
以下是如何使用Roboflow Python包在生产环境中实现主动学习条件的示例代码:
from roboflow import Roboflow
# 获取API密钥:https://docs.roboflow.com/rest-api#obtaining-your-api-key
rf = Roboflow(api_key="INSERT_PRIVATE_API_KEY")
workspace = rf.workspace()
raw_data_location = "INSERT_PATH_TO_IMAGES"
raw_data_extension = ".jpg" # 或 ".png", ".jpeg" 取决于文件类型
# 替换*为模型版本号进行推理
inference_endpoint = ["INSERT_MODEL_ID", *]
upload_destination = "INSERT_MODEL_ID"
# 根据主动学习需求设置条件值
conditionals = {
"required_objects_count" : 1,
"required_class_count": 1,
"target_classes": [],
"minimum_size_requirement" : float('-inf'),
"maximum_size_requirement" : float('inf'),
"confidence_interval" : [10,90],
}
# 付费计划中提供按相似性过滤上传图像的功能
# 联系Roboflow团队获取访问权限:https://roboflow.com/sales
# conditionals = {
# "required_objects_count" : 1,
# "required_class_count": 1,
# "target_classes": [],
# "minimum_size_requirement" : float('-inf'),
# "maximum_size_requirement" : float('inf'),
# "confidence_interval" : [10,90],
# "similarity_confidence_threshold": .3,
# "similarity_timeout_limit": 3
# }
workspace.active_learning(raw_data_location=raw_data_location,
raw_data_extension=raw_data_extension,
inference_endpoint=inference_endpoint,
upload_destination=upload_destination,
conditionals=conditionals)