| 1234567891011121314151617181920212223242526272829303132 |
- #!/usr/bin/env python3
- """Export YOLOv5s / YOLOv8s to ONNX for OpenCV DNN inference."""
- import sys
- import argparse
- def export_yolov5(weights, output, input_size=640):
- import torch
- model = torch.hub.load('ultralytics/yolov5', 'custom', path=weights, force_reload=False)
- model.eval()
- img = torch.zeros(1, 3, input_size, input_size)
- torch.onnx.export(model, img, output, opset_version=12,
- input_names=['images'], output_names=['output'],
- dynamic_axes={'images': {0: 'batch'}, 'output': {0: 'batch'}})
- print(f"YOLOv5 exported -> {output}")
- def export_yolov8(weights, output, input_size=640):
- from ultralytics import YOLO
- model = YOLO(weights)
- model.export(format='onnx', imgsz=input_size, simplify=True)
- print(f"YOLOv8 exported -> {output}")
- if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- parser.add_argument('--weights', required=True, help='yolov5s.pt or yolov8s.pt')
- parser.add_argument('--output', default='models/yolov8s.onnx')
- parser.add_argument('--input-size', type=int, default=640)
- args = parser.parse_args()
- if 'yolov8' in args.weights.lower():
- export_yolov8(args.weights, args.output, args.input_size)
- else:
- export_yolov5(args.weights, args.output, args.input_size)
|