You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

YOLO NAS报错:'ImageDetectionPrediction'对象不可迭代

问题分析

报错原因是单张图片预测时,best_model.predict()返回的是单个ImageDetectionPrediction对象,而非可迭代的列表,用for循环遍历单个对象自然会触发TypeError。之前能运行可能是依赖库版本更新,或是之前传入的是图片列表而非单张图片路径。

解决方案

两种修改方式任选其一即可:

方式1:直接使用单个预测结果(推荐,针对单张图片场景)

去掉外层for循环,直接操作返回的预测对象:

img_url='/content/Retail-Store-1/valid/images/-10_jpg.rf.d5119996f5715cf1105b1e5bf01c0ced.jpg'

image_prediction = best_model.predict(img_url)
class_names = image_prediction.class_names
labels = image_prediction.prediction.labels
confidence = image_prediction.prediction.confidence
bboxes = image_prediction.prediction.bboxes_xyxy

for i, (label, conf, bbox) in enumerate(zip(labels, confidence, bboxes)):
    print("prediction: ", i)
    print("label_id: ", label)
    print("label_name: ", class_names[int(label)])
    print("confidence: ", conf)
    print("bbox: ", bbox)
    print("--" * 10)

方式2:包装成列表(兼容单张/多张图片场景)

如果需要保持原有代码结构,同时兼容后续传入多张图片的情况,手动将预测结果放入列表:

img_url='/content/Retail-Store-1/valid/images/-10_jpg.rf.d5119996f5715cf1105b1e5bf01c0ced.jpg'

images_predictions = [best_model.predict(img_url)]  # 用列表包裹单个结果
for image_prediction in images_predictions:
    class_names = image_prediction.class_names
    labels = image_prediction.prediction.labels
    confidence = image_prediction.prediction.confidence
    bboxes = image_prediction.prediction.bboxes_xyxy

    for i, (label, conf, bbox) in enumerate(zip(labels, confidence, bboxes)):
        print("prediction: ", i)
        print("label_id: ", label)
        print("label_name: ", class_names[int(label)])
        print("confidence: ", conf)
        print("bbox: ", bbox)
        print("--" * 10)

内容的提问来源于stack exchange,提问作者XYZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 05:06:19