tuoheng_AIPlatform/AI_web_dsj/test/yolov5_test1.py

55 lines
1.9 KiB
Python
Executable File

import torch
import os
from pathlib import Path
import os
os.environ['GITHUB_ASSETS'] = 'disabled'
os.environ['YOLOv5_OFFLINE'] = 'true'
os.environ['ULTRALYTICS_HUB'] = 'off'
# 强制禁用所有网络连接
os.environ['GITHUB_ASSETS'] = 'disabled'
os.environ['YOLOv5_OFFLINE'] = 'true'
# 配置路径
model_dir = Path('/home/th/jcq/AI_AutoPlat/AI_web_dsj/ultralytics/yolov5')
model_path = Path('/home/th/jcq/AI_AutoPlat/yolov5-th/yolov5/yolov5s.pt') # 自定义模型权重路径
device = torch.device('cpu') # 离线环境建议强制使用CPU
def load_yolov5_offline():
try:
# 1. 手动添加本地YOLOv5到Python路径
import sys
sys.path.insert(0, str(model_dir))
# 2. 直接使用YOLOv5本地代码加载
from models.experimental import attempt_load
model = attempt_load(
weights=model_path,
device=device,
inplace=True,
fuse=True # 融合Conv+BN层提升效率
)
# 3. 验证模型
if not hasattr(model, 'names'):
raise RuntimeError("模型结构异常")
print(f"✅ 离线加载成功 | 设备: {device} | 类别数: {len(model.names)}")
return model
except Exception as e:
print(f"❌ 加载失败: {type(e).__name__}: {e}")
if "No module named" in str(e):
print("\n⚠️ 解决方案:")
print(f"1. 确认 {model_dir} 包含完整YOLOv5代码")
print(f"2. 检查是否有 __init__.py 文件在 models/ 和 utils/ 目录")
return None
if __name__ == "__main__":
model = load_yolov5_offline()
if model:
# 测试推理
img = torch.rand((1, 3, 640, 640)) # 模拟输入图像
results = model(img)
print(f"推理测试完成!输出形状: {results[0].shape}")