Spaces:
Runtime error
Runtime error
Delete hubconf.py
Browse files- hubconf.py +0 -169
hubconf.py
DELETED
@@ -1,169 +0,0 @@
|
|
1 |
-
# YOLOv5 🚀 by Ultralytics, AGPL-3.0 license
|
2 |
-
"""
|
3 |
-
PyTorch Hub models https://pytorch.org/hub/ultralytics_yolov5
|
4 |
-
|
5 |
-
Usage:
|
6 |
-
import torch
|
7 |
-
model = torch.hub.load('ultralytics/yolov5', 'yolov5s') # official model
|
8 |
-
model = torch.hub.load('ultralytics/yolov5:master', 'yolov5s') # from branch
|
9 |
-
model = torch.hub.load('ultralytics/yolov5', 'custom', 'yolov5s.pt') # custom/local model
|
10 |
-
model = torch.hub.load('.', 'custom', 'yolov5s.pt', source='local') # local repo
|
11 |
-
"""
|
12 |
-
|
13 |
-
import torch
|
14 |
-
|
15 |
-
|
16 |
-
def _create(name, pretrained=True, channels=3, classes=80, autoshape=True, verbose=True, device=None):
|
17 |
-
"""Creates or loads a YOLOv5 model
|
18 |
-
|
19 |
-
Arguments:
|
20 |
-
name (str): model name 'yolov5s' or path 'path/to/best.pt'
|
21 |
-
pretrained (bool): load pretrained weights into the model
|
22 |
-
channels (int): number of input channels
|
23 |
-
classes (int): number of model classes
|
24 |
-
autoshape (bool): apply YOLOv5 .autoshape() wrapper to model
|
25 |
-
verbose (bool): print all information to screen
|
26 |
-
device (str, torch.device, None): device to use for model parameters
|
27 |
-
|
28 |
-
Returns:
|
29 |
-
YOLOv5 model
|
30 |
-
"""
|
31 |
-
from pathlib import Path
|
32 |
-
|
33 |
-
from models.common import AutoShape, DetectMultiBackend
|
34 |
-
from models.experimental import attempt_load
|
35 |
-
from models.yolo import ClassificationModel, DetectionModel, SegmentationModel
|
36 |
-
from utils.downloads import attempt_download
|
37 |
-
from utils.general import LOGGER, check_requirements, intersect_dicts, logging
|
38 |
-
from utils.torch_utils import select_device
|
39 |
-
|
40 |
-
if not verbose:
|
41 |
-
LOGGER.setLevel(logging.WARNING)
|
42 |
-
check_requirements(exclude=('opencv-python', 'tensorboard', 'thop'))
|
43 |
-
name = Path(name)
|
44 |
-
path = name.with_suffix('.pt') if name.suffix == '' and not name.is_dir() else name # checkpoint path
|
45 |
-
try:
|
46 |
-
device = select_device(device)
|
47 |
-
if pretrained and channels == 3 and classes == 80:
|
48 |
-
try:
|
49 |
-
model = DetectMultiBackend(path, device=device, fuse=autoshape) # detection model
|
50 |
-
if autoshape:
|
51 |
-
if model.pt and isinstance(model.model, ClassificationModel):
|
52 |
-
LOGGER.warning('WARNING ⚠️ YOLOv5 ClassificationModel is not yet AutoShape compatible. '
|
53 |
-
'You must pass torch tensors in BCHW to this model, i.e. shape(1,3,224,224).')
|
54 |
-
elif model.pt and isinstance(model.model, SegmentationModel):
|
55 |
-
LOGGER.warning('WARNING ⚠️ YOLOv5 SegmentationModel is not yet AutoShape compatible. '
|
56 |
-
'You will not be able to run inference with this model.')
|
57 |
-
else:
|
58 |
-
model = AutoShape(model) # for file/URI/PIL/cv2/np inputs and NMS
|
59 |
-
except Exception:
|
60 |
-
model = attempt_load(path, device=device, fuse=False) # arbitrary model
|
61 |
-
else:
|
62 |
-
cfg = list((Path(__file__).parent / 'models').rglob(f'{path.stem}.yaml'))[0] # model.yaml path
|
63 |
-
model = DetectionModel(cfg, channels, classes) # create model
|
64 |
-
if pretrained:
|
65 |
-
ckpt = torch.load(attempt_download(path), map_location=device) # load
|
66 |
-
csd = ckpt['model'].float().state_dict() # checkpoint state_dict as FP32
|
67 |
-
csd = intersect_dicts(csd, model.state_dict(), exclude=['anchors']) # intersect
|
68 |
-
model.load_state_dict(csd, strict=False) # load
|
69 |
-
if len(ckpt['model'].names) == classes:
|
70 |
-
model.names = ckpt['model'].names # set class names attribute
|
71 |
-
if not verbose:
|
72 |
-
LOGGER.setLevel(logging.INFO) # reset to default
|
73 |
-
return model.to(device)
|
74 |
-
|
75 |
-
except Exception as e:
|
76 |
-
help_url = 'https://github.com/ultralytics/yolov5/issues/36'
|
77 |
-
s = f'{e}. Cache may be out of date, try `force_reload=True` or see {help_url} for help.'
|
78 |
-
raise Exception(s) from e
|
79 |
-
|
80 |
-
|
81 |
-
def custom(path='path/to/model.pt', autoshape=True, _verbose=True, device=None):
|
82 |
-
# YOLOv5 custom or local model
|
83 |
-
return _create(path, autoshape=autoshape, verbose=_verbose, device=device)
|
84 |
-
|
85 |
-
|
86 |
-
def yolov5n(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None):
|
87 |
-
# YOLOv5-nano model https://github.com/ultralytics/yolov5
|
88 |
-
return _create('yolov5n', pretrained, channels, classes, autoshape, _verbose, device)
|
89 |
-
|
90 |
-
|
91 |
-
def yolov5s(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None):
|
92 |
-
# YOLOv5-small model https://github.com/ultralytics/yolov5
|
93 |
-
return _create('yolov5s', pretrained, channels, classes, autoshape, _verbose, device)
|
94 |
-
|
95 |
-
|
96 |
-
def yolov5m(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None):
|
97 |
-
# YOLOv5-medium model https://github.com/ultralytics/yolov5
|
98 |
-
return _create('yolov5m', pretrained, channels, classes, autoshape, _verbose, device)
|
99 |
-
|
100 |
-
|
101 |
-
def yolov5l(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None):
|
102 |
-
# YOLOv5-large model https://github.com/ultralytics/yolov5
|
103 |
-
return _create('yolov5l', pretrained, channels, classes, autoshape, _verbose, device)
|
104 |
-
|
105 |
-
|
106 |
-
def yolov5x(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None):
|
107 |
-
# YOLOv5-xlarge model https://github.com/ultralytics/yolov5
|
108 |
-
return _create('yolov5x', pretrained, channels, classes, autoshape, _verbose, device)
|
109 |
-
|
110 |
-
|
111 |
-
def yolov5n6(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None):
|
112 |
-
# YOLOv5-nano-P6 model https://github.com/ultralytics/yolov5
|
113 |
-
return _create('yolov5n6', pretrained, channels, classes, autoshape, _verbose, device)
|
114 |
-
|
115 |
-
|
116 |
-
def yolov5s6(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None):
|
117 |
-
# YOLOv5-small-P6 model https://github.com/ultralytics/yolov5
|
118 |
-
return _create('yolov5s6', pretrained, channels, classes, autoshape, _verbose, device)
|
119 |
-
|
120 |
-
|
121 |
-
def yolov5m6(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None):
|
122 |
-
# YOLOv5-medium-P6 model https://github.com/ultralytics/yolov5
|
123 |
-
return _create('yolov5m6', pretrained, channels, classes, autoshape, _verbose, device)
|
124 |
-
|
125 |
-
|
126 |
-
def yolov5l6(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None):
|
127 |
-
# YOLOv5-large-P6 model https://github.com/ultralytics/yolov5
|
128 |
-
return _create('yolov5l6', pretrained, channels, classes, autoshape, _verbose, device)
|
129 |
-
|
130 |
-
|
131 |
-
def yolov5x6(pretrained=True, channels=3, classes=80, autoshape=True, _verbose=True, device=None):
|
132 |
-
# YOLOv5-xlarge-P6 model https://github.com/ultralytics/yolov5
|
133 |
-
return _create('yolov5x6', pretrained, channels, classes, autoshape, _verbose, device)
|
134 |
-
|
135 |
-
|
136 |
-
if __name__ == '__main__':
|
137 |
-
import argparse
|
138 |
-
from pathlib import Path
|
139 |
-
|
140 |
-
import numpy as np
|
141 |
-
from PIL import Image
|
142 |
-
|
143 |
-
from utils.general import cv2, print_args
|
144 |
-
|
145 |
-
# Argparser
|
146 |
-
parser = argparse.ArgumentParser()
|
147 |
-
parser.add_argument('--model', type=str, default='yolov5s', help='model name')
|
148 |
-
opt = parser.parse_args()
|
149 |
-
print_args(vars(opt))
|
150 |
-
|
151 |
-
# Model
|
152 |
-
model = _create(name=opt.model, pretrained=True, channels=3, classes=80, autoshape=True, verbose=True)
|
153 |
-
# model = custom(path='path/to/model.pt') # custom
|
154 |
-
|
155 |
-
# Images
|
156 |
-
imgs = [
|
157 |
-
'data/images/zidane.jpg', # filename
|
158 |
-
Path('data/images/zidane.jpg'), # Path
|
159 |
-
'https://ultralytics.com/images/zidane.jpg', # URI
|
160 |
-
cv2.imread('data/images/bus.jpg')[:, :, ::-1], # OpenCV
|
161 |
-
Image.open('data/images/bus.jpg'), # PIL
|
162 |
-
np.zeros((320, 640, 3))] # numpy
|
163 |
-
|
164 |
-
# Inference
|
165 |
-
results = model(imgs, size=320) # batched inference
|
166 |
-
|
167 |
-
# Results
|
168 |
-
results.print()
|
169 |
-
results.save()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|