使用OpenAI和Roboflow的数字化工作流程

在本指南中,将使用家庭作业簿作为示例,展示如何构建自定义模型以及基础模型。首先,可以选择复制一个现有模型(耗时较短),或者从头开始构建自己的模型。通过使用模型ID和API密钥,可以立即开始使用训练的模型。还将教如何使用现有数据集创建自己的模型,但如果想从头开始构建自己的数据集,请参考这个教程。

要复制现有模型,可以在RoboflowUniverse上找到模型,那里存储了成千上万的计算机视觉模型。一旦找到了适合用例的模型,就下载完整的数据集。选择想要放入的工作区:之后,将图像添加到数据集中。接下来,将使用这个数据集在账户中训练模型。为此,请转到生成并创建一个新版本。确保添加一个预处理步骤,该步骤应将图像大小调整为2048乘以2048。模型训练完成后,可以进行下一步。

在侧边栏中,打开工作流,点击创建工作流,然后添加以下模型。之后,在对象检测块中,添加训练的模型。接下来,对LMM(GPT-4)进行类似的操作。点击LMM,添加一个提示(提示是:孩子完成小册子需要多长时间?输出格式为列表,仅包含孩子的名字和时间。例如,如果时间是10分钟,名字是Nathan,那么格式将是:["Nathan", "10"])。

指定模型,通过打开可选属性添加OpenAIAPI密钥。现在已经添加了模型,工作流应该看起来像这样:注意LMM与响应之间没有连接线?要添加LMM,请点击响应并添加另一个输出。然后,工作流应该看起来像这样。现在工作流已经设置好了。要部署它,请点击保存并部署工作流。使用部署工作流中提供的Python代码。

参考这个Google Colab笔记本,跟随构建项目的下一步。首先安装所需的库。这些包括:Opencv Inference!pip install inference opencv-python。接下来,添加从工作流中获得的代码。

from inference_sdk import InferenceHTTPClient client = InferenceHTTPClient( api_url="https://detect.roboflow.com", api_key="ADD YOUR API KEY" ) result = client.run_workflow( workspace_name="nathan-yan", workflow_id="kumon", images={"image": "/content/IMG_3442.jpg"}, )

现在,让看看正在处理的图像。因为使用的是kumon小册子,所以使用了从以下Google Drive链接获得的小册子图像。

# 图像链接:https://drive.google.com/file/d/1pDJaWemV5oMcMkSeTETxWl_ks-_Jp2AO/view?usp=sharing !wget --no-check-certificate 'https://drive.google.com/ucexport=download&id=1pDJaWemV5oMcMkSeTETxWl_ks-_Jp2AO' -O kumon.jpg

接下来,使用代码显示图像,以更好地了解预期的输出应该是什么。在这种情况下,花费的时间是10分钟,名字是Nathan,在一页上得了70%,其他四页都是完美的。

from google.colab.patches import cv2_imshow import cv2 image = cv2.imread("IMAGE_PATH") # 显示图像 cv2_imshow(image) # 标记是检查,7,检查,检查,检查。 # 时间是10分钟 # 名字是Nathan

在这里,定义变量,并获取每个预测的结果。对于每个预测,取x变量以及对象的类别(应该是检查,9,8,7或6)。这样,就能够获得页面的顺序以及哪个特定页面是错误的。

scores = [] main_dict = result[0] # 预测 predictions = main_dict['predictions']['predictions'] # 访问每个预测的详细信息 for prediction in predictions: x = prediction['x'] class_name = prediction['class'] scores.append([class_name, x])

接下来,使用检测到的类别的顺序x坐标,按顺序对检测进行排序。将特定的标记而不是x坐标添加到列表“marks”中。

sorted_scores = sorted(scores, key=lambda item: item[1]) marks = [] for score in sorted_scores: marks.append(score[0])

那里!得到了标记!现在需要访问时间和孩子的名字,这是通过GPT-4 Vision获得的。首先获取GPT-4的原始输出。

raw_output = main_dict['output']['raw_output']

原始输出存储的数据应该看起来像这样:["Nathan", "14"]。因此,为了将字符串转换为列表,使用以下代码。

import ast output = ast.literal_eval(raw_output)

最后,能够访问这两个变量,这意味着可以使用以下代码将两者结合起来。

booklet_information = { "name": output[0], "time": output[1], "scores": marks } print(f"Booklet Information: {booklet_information}")
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485