Roboflow Yolo:如何处理多张图片并保存单独的返回json?

问题描述 投票:0回答:1

下面是我在 Colab 上运行的一个简单的 Roboflow Yolo 分割代码。 预训练模型在 1 个样本图像上运行良好。这里唯一重要的是

model
,它是一个实例分割模型。
prediction
的结果以 json 格式返回检测到的对象的标签和坐标。

!pip install roboflow

rf = Roboflow(api_key="YOUR_PRIVATE_API_KEY")
workspace = rf.workspace("workspace-id")
project = workspace.project("model-id")
version = project.version("version-number")
model = version("version-number").model

prediction = model.predict("/content/sample 1.jpg")

# Plot the prediction
prediction.plot()

# Convert predictions to JSON
prediction.json()

但是我很难修改脚本

问题1: 我搜索并尝试了每个代码,但仍然无法弄清楚如何保存返回的json文件。你能帮我添加一个代码来将 json 文件(在这种情况下是预测)保存到与输入图像具有相同文件名的特定位置吗?

问题2:我简单的拖了一个样图到content中测试。现在我正在尝试处理谷歌驱动器中的每张图片。我可以使用以下代码链接特定文件夹,但是如何才能自动处理驱动器上的所有图像?

from google.colab import drive
drive.mount('/gdrive')

python json google-drive-api google-colaboratory roboflow
1个回答
0
投票

问题 1 - 更新 imgfile_location 变量将更新您预测的图像,并使用相应的文件名保存预测的 JSON 文件:

from roboflow import Roboflow
from google.colab import files, drive
import os

def safe_create_path_parent(path: str) -> None:
path_parent = os.path.dirname(path)
os.makedirs(path_parent, exist_ok=True)

def dump_to_json(target_path: str, content: dict) -> None:
safe_create_path_parent(target_path)
with open(target_path, 'w') as outfile:
    json.dump(content, outfile, indent=4)

drive.mount(‘/gdrive’)

rf = Roboflow(api_key="YOUR_PRIVATE_API_KEY")
workspace = rf.workspace("workspace-id")
project = workspace.project("model-id")
version = project.version("version-number")
model = version("version-number").model

imgfile_location = "/content/sample 1.jpg"
imgfile_name = Path(imgfile_location).name
prediction = model.predict(imgfile_location)

# Plot the prediction
prediction.plot()

# Convert predictions to JSON
predicted_result = prediction.json()

# Save JSON predictions to your computer
dump_to_json(imgfile_name, predicted_result)

编辑:问题 2 - 多个图像或文件夹: raw_data_location = "INSERT_PATH_TO_IMG_DIRECTORY" for raw_data_extension in ['.jpg', '.jpeg', 'png'] globbed_files = glob.glob(raw_data_location + '/*' + raw_data_extension) 对于 globbed_files 中的 img_path: 预测= model.predict(img_path,置信度= 40,重叠= 30) # 保存预测图像 predictions.save(f'inferenceResult_{os.path.basename(img_path)}') predictions_json = predictions.json() 打印(predictions_json)

© www.soinside.com 2019 - 2024. All rights reserved.