使用SAHI加载自定义YOLOv5s6模型报错:yolov5无load属性
问题解决方法
错误原因
报错AttributeError: module 'yolov5' has no attribute 'load'是因为SAHI的YOLOv5加载逻辑依赖旧版YOLOv5的API,而你使用的YOLOv5s6(或更高版本)已经移除了yolov5.load()方法,或者YOLOv5的安装方式不对导致SAHI无法调用正确的接口。
具体解决方案
方案1:安装SAHI兼容的YOLOv5版本
卸载当前YOLOv5,安装适配SAHI的版本:
pip uninstall -y yolov5 # 安装ultralytics官方的YOLOv5仓库版本 pip install git+https://github.com/ultralytics/yolov5.git # 或者指定稳定兼容版本,比如v6.2 # pip install yolov5==6.2
安装完成后,重新运行你的原代码即可。
方案2:手动加载YOLOv5模型后传入SAHI
如果不想更换YOLOv5版本,可以手动加载模型再用SAHI包装:
import torch from sahi.models.yolov5 import Yolov5DetectionModel from sahi.predict import get_sliced_prediction # 手动加载自定义YOLOv5模型 model = torch.hub.load('ultralytics/yolov5', 'custom', path=str(path_model), device='cuda') # 包装为SAHI检测模型 detection_model = Yolov5DetectionModel( model=model, confidence_threshold=0.3, device="cuda", category_names=model.names # 传入模型的类别名称列表 ) # 切片预测逻辑不变 result = get_sliced_prediction( convert_file, detection_model, slice_height=1280, slice_width=1280, overlap_height_ratio=0.2, overlap_width_ratio=0.2 ) result.export_visuals(export_dir=path_export_txt)
方案3:升级SAHI到最新版本
新版SAHI已适配ultralytics的YOLO系列模型,尝试升级:
pip install --upgrade sahi
升级后再运行原代码,若仍有问题,可将model_type='yolov5'改为model_type='yolov5s'(对应你的模型大小)。
额外检查点
- 确保
path_model是有效路径:可以将model_path=path_model改为model_path=str(path_model),避免Path对象导致的路径解析问题。 - 确认CUDA环境可用:运行
torch.cuda.is_available()验证设备是否正确识别。
内容的提问来源于stack exchange,提问作者PawelKinczyk
相关产品推荐
相关产品推荐

