如何在YOLO_NAS目标检测中获取边界框坐标与模型预测结果?
获取YOLO-NAS的结构化预测结果
你可以通过访问predict()方法返回的预测对象属性,提取边界框、类别、置信度等结构化数据,无需仅调用.show()展示图片。以下是修改后的实现代码:
from super_gradients.training import models # 加载预训练YOLO-NAS-L模型 yolo_nas_l = models.get("yolo_nas_l", pretrained_weights="coco") image_url = "https://previews.123rf.com/images/freeograph/freeograph2011/freeograph201100150/158301822-group-of-friends-gathering-around-table-at-home.jpg" # 获取预测结果对象 prediction_output = yolo_nas_l.predict(image_url, conf=0.25) # 提取核心预测数据 # 边界框(xyxy格式:左上角x,y + 右下角x,y) bboxes = prediction_output.prediction.bboxes_xyxy # 预测置信度 confidences = prediction_output.prediction.confidence # 类别ID class_ids = prediction_output.prediction.labels # 映射类别ID到类别名称 class_names = yolo_nas_l.get_class_names() class_labels = [class_names[int(class_id)] for class_id in class_ids] # 组合为结构化数组(列表嵌套字典,方便后续业务处理) structured_predictions = [ { "bbox": bbox.tolist(), "confidence": float(conf), "class_id": int(cls_id), "class_name": cls_name } for bbox, conf, cls_id, cls_name in zip(bboxes, confidences, class_ids, class_labels) ] # 打印结构化结果 print(structured_predictions)
关键细节说明:
predict()返回的DetectionPrediction对象中,prediction属性存储了所有原始预测数据- 边界框默认是
xyxy格式,若需要xywh(中心坐标+宽高)格式,可替换为bboxes_xywh属性 - 如果需要numpy数组格式,直接调用
.numpy()方法即可(比如bboxes.numpy()) get_class_names()会返回模型训练时使用的类别列表(此处为COCO数据集的80类)
内容的提问来源于stack exchange,提问作者Fernando J. Quisaguano
相关产品推荐
相关产品推荐

