Python Linux/Jetson 代码示例
您可以使用我们给的 Python示例代码 里面包含了图片的读取,模型的读取,以及模型的预测 和输出绘制。
下载后,解压文件夹,如果您使用的是Docker Image, 请确保文件放置在 /home/appuser/workdir 下,也就是启动时的本地目录下。
然后运行以下命令就可以运行python脚本,并使用提供的示例模型和图片做模型的预测,结果会输出在同文件夹中的 output_with_masks_classes_scores.png 文件。
python3 example.py
您可以通过更改example.py中的文件读取路径来使用不同的图片和深度学习模型。
MODEL_ZIP = 'kp1.zip'
IMG_PATH = 'kp.png'
您也可以从一个新的python文件开始,那么首先需要导入 daoai_vision 库,也就是我们的DaoAI World Python SDK
import daoai_vision as dv
以下的库可能也会对您有帮助
import cv2
import numpy as np
import matplotlib.pyplot as plt
读取模型
MODEL_ZIP = 'kp_fast_model.zip' #DaoAI world 模型文件路径
DEVICE = 'gpu' # 硬件选项: cpu 或 gpu 使用cpu的话模型预测速度会显著慢于gpu
model = dv.get_model(model_zip=MODEL_ZIP, device=DEVICE)
读取图片,和模型预测
IMG_PATH = 'test_image.png' #读取的图片路径
results = model.infer(IMG_PATH) #模型 调用预测功能
预测结果
boxes = results.boxes # [N][x1,y1,x2,y2] :两个点组成的边界框
classes = results.classes # [N] 模型类别索引值
labels = results.labels # [N] 模型类别字符串, 可以用 labels[classes[i]] 来访问对应结果的类别字符串
scores = results.scores # [N] 预测的置信度
masks = results.masks # [N][H][W] 模型的掩膜像素
keypoints = results.keypoints # [N][x, y, score] 模型的关键点
sem_masks = results.sem_seg # 像素掩码
之后您可以按照需要使用这些结果。
绘制bounding box
# 绘制 bounding boxes
if(boxes is not None):
for box in boxes:
cv2.rectangle(img, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), (0, 255, 0), 2)
绘制keypoints
if keypoints is not None:
for obj in keypoints:
for kp in obj:
if float(kp[2]) > 0.5:
cv2.circle(img, (int(kp[0]), int(kp[1])), 2, (0, 0, 255), 2)
绘制掩膜,类,和置信度
# 绘制 masks、classes 和 scores
for i in range(len(boxes)):
if masks is not None:
mask = masks[i]
# 将 mask 缩放到图像大小
mask_resized = cv2.resize(mask.astype(np.uint8), (img.shape[1], img.shape[0]))
mask_rgb = np.zeros_like(img)
mask_rgb[mask_resized > 0.5] = (255, 0,255) # 设置 mask 的颜色
# 绘制 mask
img = cv2.addWeighted(img, 1, mask_rgb, 0.5, 0)
cls = classes[i]
score = scores[i]
label = labels[cls]
# 获取当前检测框的坐标
bbox = boxes[i]
x1, y1, x2, y2 = int(bbox[0]), int(bbox[1]), int(bbox[2]), int(bbox[3])
# 绘制 class 和 score
text = f'{cls} {label}: {score:.2f}'
cv2.putText(img, text, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 1)
使用示例代码的预测结果:
