使用yolov8 classify 分类预测报错:
错误一:
File "/root/python-workspace/ultralytics-main/ultralytics/engine/predictor.py", line 281, in stream_inference
im = self.preprocess(im0s)
^^^^^^^^^^^^^^^^^^^^^
File "/root/python-workspace/ultralytics-main/ultralytics/models/yolo/classify/predict.py", line 46, in preprocess
[self.transforms(Image.fromarray(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))) for im in img], dim=0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/python-workspace/ultralytics-main/ultralytics/models/yolo/classify/predict.py", line 46, in <listcomp>
[self.transforms(Image.fromarray(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))) for im in img], dim=0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/anaconda3/lib/python3.11/site-packages/torchvision/transforms/transforms.py", line 95, in __call__
img = t(img)
^^^^^^
AttributeError: 'Image' object has no attribute 'shape'. Did you mean: 'save'?
错误二:
WARNING ⚠️ Ultralytics settings reset to default values. This may be due to a possible problem with your settings or a recent ultralytics package update.
View settings with 'yolo settings' or at '/root/.config/Ultralytics/settings.yaml'
Update settings with 'yolo settings key=value', i.e. 'yolo settings runs_dir=path/to/dir'.
Traceback (most recent call last):
File "/root/python-workspace/lifecycleClassifyPredict.py", line 5, in <module>
results = model_cls("/root/python-workspace/ultralytics-main/56.png")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/anaconda3/lib/python3.11/site-packages/ultralytics/engine/model.py", line 98, in __call__
return self.predict(source, stream, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/anaconda3/lib/python3.11/site-packages/ultralytics/engine/model.py", line 257, in predict
return self.predictor.predict_cli(source=source) if is_cli else self.predictor(source=source, stream=stream)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/anaconda3/lib/python3.11/site-packages/ultralytics/engine/predictor.py", line 198, in __call__
return list(self.stream_inference(source, model, *args, **kwargs)) # merge list of Result into one
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/anaconda3/lib/python3.11/site-packages/torch/utils/_contextlib.py", line 35, in generator_context
response = gen.send(None)
^^^^^^^^^^^^^^
File "/root/anaconda3/lib/python3.11/site-packages/ultralytics/engine/predictor.py", line 261, in stream_inference
im = self.preprocess(im0s)
^^^^^^^^^^^^^^^^^^^^^
File "/root/anaconda3/lib/python3.11/site-packages/ultralytics/models/yolo/classify/predict.py", line 36, in preprocess
img = torch.stack([self.transforms(im) for im in img], dim=0)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/root/anaconda3/lib/python3.11/site-packages/ultralytics/models/yolo/classify/predict.py", line 36, in <listcomp>
img = torch.stack([self.transforms(im) for im in img], dim=0)
^^^^^^^^^^^^^^^^^^^
File "/root/anaconda3/lib/python3.11/site-packages/torchvision/transforms/transforms.py", line 95, in __call__
img = t(img)
^^^^^^
ValueError: too many values to unpack (expected 2)
产生原因:
应该是python版本问题或者是ultrlytics新版本未修复的bug
解决办法:
1、将python3.11 版本改为python3.10
2、pip install ultralytics==8.0.230
效果
至此,代码正常运行,不在报错啦