From 7d445a74beebe334aed401b9bacdc142fe6215a0 Mon Sep 17 00:00:00 2001 From: Marc-Alexandre Paquet Date: Tue, 11 Aug 2020 11:07:08 -0400 Subject: [PATCH 1/6] assets autodownload --- utils/google_utils.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index 1dbe0897ebb2..587d93352382 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -5,6 +5,7 @@ import os import platform import time +import torch from pathlib import Path @@ -34,7 +35,12 @@ def attempt_download(weights): # Error check if not (r == 0 and os.path.exists(weights) and os.path.getsize(weights) > 1E6): # weights exist and > 1MB os.remove(weights) if os.path.exists(weights) else None # remove partial downloads - raise Exception(msg) + + torch.hub.download_url_to_file("https://github.com/ultralytics/yolov5/releases/download/v2.0/%s" % file, weights) + if not (os.path.exists(weights) and os.path.getsize(weights) > 1E6): # weights exist and > 1MB + os.remove(weights) if os.path.exists(weights) else None # remove partial downloads + + raise Exception(msg) def gdrive_download(id='1n_oKgR81BJtqk75b00eAjdv03qVCQn2f', name='coco128.zip'): From fe338550023e8d947965016e52724788dcbb2e05 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 11 Aug 2020 12:00:53 -0700 Subject: [PATCH 2/6] Update google_utils.py --- utils/google_utils.py | 56 +++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index 587d93352382..6fa74ce525b8 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -5,42 +5,40 @@ import os import platform import time -import torch from pathlib import Path +import torch.hub as hub def attempt_download(weights): # Attempt to download pretrained weights if not found locally weights = weights.strip().replace("'", '') - msg = weights + ' missing, try downloading from https://drive.google.com/drive/folders/1Drs_Aiu7xx6S-ix95f9kNsA6ueKRpN2J' - - r = 1 # return - if len(weights) > 0 and not os.path.isfile(weights): - d = {'yolov3-spp.pt': '1mM67oNw4fZoIOL1c8M3hHmj66d8e-ni_', # yolov3-spp.yaml - 'yolov5s.pt': '1R5T6rIyy3lLwgFXNms8whc-387H0tMQO', # yolov5s.yaml - 'yolov5m.pt': '1vobuEExpWQVpXExsJ2w-Mbf3HJjWkQJr', # yolov5m.yaml - 'yolov5l.pt': '1hrlqD1Wdei7UT4OgT785BEk1JwnSvNEV', # yolov5l.yaml - 'yolov5x.pt': '1mM8aZJlWTxOg7BZJvNUMrTnA2AbeCVzS', # yolov5x.yaml - } - - file = Path(weights).name - if file in d: - r = gdrive_download(id=d[file], name=weights) - - if not (r == 0 and os.path.exists(weights) and os.path.getsize(weights) > 1E6): # weights exist and > 1MB + file = Path(weights).name + + msg = weights + ' missing, try downloading from https://github.com/ultralytics/yolov5/releases/' + models = ['yolov5s.pt', 'yolov5m.pt', 'yolov5l.pt', 'yolov5x.pt'] # available models + + if file in models and not os.path.isfile(weights): + # Google Drive + # d = {'yolov5s.pt': '1R5T6rIyy3lLwgFXNms8whc-387H0tMQO', + # 'yolov5m.pt': '1vobuEExpWQVpXExsJ2w-Mbf3HJjWkQJr', + # 'yolov5l.pt': '1hrlqD1Wdei7UT4OgT785BEk1JwnSvNEV', + # 'yolov5x.pt': '1mM8aZJlWTxOg7BZJvNUMrTnA2AbeCVzS'} + # r = gdrive_download(id=d[file], name=weights) if file in d else 1 # return value + # if r == 0 and os.path.exists(weights) and os.path.getsize(weights) > 1E6: # check + # return + + # GitHub + hub.download_url_to_file('https://github.com/ultralytics/yolov5/releases/download/v2.0/' + file, weights) + if os.path.exists(weights) and os.path.getsize(weights) > 1E6: # check + return + + # GCP (redundant backup) + hub.download_url_to_file('https://storage.googleapis.com/ultralytics/yolov5/ckpt/' + file, weights) + if os.path.exists(weights) and os.path.getsize(weights) > 1E6: # check + return + else: os.remove(weights) if os.path.exists(weights) else None # remove partial downloads - s = 'curl -L -o %s "storage.googleapis.com/ultralytics/yolov5/ckpt/%s"' % (weights, file) - r = os.system(s) # execute, capture return values - - # Error check - if not (r == 0 and os.path.exists(weights) and os.path.getsize(weights) > 1E6): # weights exist and > 1MB - os.remove(weights) if os.path.exists(weights) else None # remove partial downloads - - torch.hub.download_url_to_file("https://github.com/ultralytics/yolov5/releases/download/v2.0/%s" % file, weights) - if not (os.path.exists(weights) and os.path.getsize(weights) > 1E6): # weights exist and > 1MB - os.remove(weights) if os.path.exists(weights) else None # remove partial downloads - - raise Exception(msg) + raise Exception(msg) def gdrive_download(id='1n_oKgR81BJtqk75b00eAjdv03qVCQn2f', name='coco128.zip'): From ef478e2b604c447557aa267ca7de9d4000a783bd Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 11 Aug 2020 12:13:17 -0700 Subject: [PATCH 3/6] Update google_utils.py --- utils/google_utils.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index 6fa74ce525b8..78cc91d37b2e 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -6,7 +6,7 @@ import platform import time from pathlib import Path -import torch.hub as hub +import torch def attempt_download(weights): @@ -28,13 +28,18 @@ def attempt_download(weights): # return # GitHub - hub.download_url_to_file('https://github.com/ultralytics/yolov5/releases/download/v2.0/' + file, weights) + url = 'https://github.com/ultralytics/yolov5/releases/download/v2.0/' + file + print('Downloading %s to %s...' % (url, weights)) + torch.hub.download_url_to_file(url, weights) if os.path.exists(weights) and os.path.getsize(weights) > 1E6: # check + print('') return # GCP (redundant backup) - hub.download_url_to_file('https://storage.googleapis.com/ultralytics/yolov5/ckpt/' + file, weights) + url = 'https://storage.googleapis.com/ultralytics/yolov5/ckpt/' + file + torch.hub.download_url_to_file(url, weights) if os.path.exists(weights) and os.path.getsize(weights) > 1E6: # check + print('') return else: os.remove(weights) if os.path.exists(weights) else None # remove partial downloads @@ -42,8 +47,7 @@ def attempt_download(weights): def gdrive_download(id='1n_oKgR81BJtqk75b00eAjdv03qVCQn2f', name='coco128.zip'): - # Downloads a file from Google Drive, accepting presented query - # from utils.google_utils import *; gdrive_download() + # Downloads a file from Google Drive. from utils.google_utils import *; gdrive_download() t = time.time() print('Downloading https://drive.google.com/uc?export=download&id=%s as %s... ' % (id, name), end='') @@ -57,7 +61,7 @@ def gdrive_download(id='1n_oKgR81BJtqk75b00eAjdv03qVCQn2f', name='coco128.zip'): s = 'curl -Lb ./cookie "drive.google.com/uc?export=download&confirm=%s&id=%s" -o %s' % (get_token(), id, name) else: # small file s = 'curl -s -L -o %s "drive.google.com/uc?export=download&id=%s"' % (name, id) - r = os.system(s) # execute, capture return values + r = os.system(s) # execute, capture return os.remove('cookie') if os.path.exists('cookie') else None # Error check From 3f47ccffd84611fbbbc7ae067e012cc084e36f6d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 11 Aug 2020 12:58:47 -0700 Subject: [PATCH 4/6] Update google_utils.py --- utils/google_utils.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index 78cc91d37b2e..8557bae975c0 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -30,14 +30,17 @@ def attempt_download(weights): # GitHub url = 'https://github.com/ultralytics/yolov5/releases/download/v2.0/' + file print('Downloading %s to %s...' % (url, weights)) - torch.hub.download_url_to_file(url, weights) + if platform.system() == 'Darwin': # avoid MacOS python requests certificate error + r = os.system('curl -L %s -o %s' % (url, weights)) + else: + torch.hub.download_url_to_file(url, weights) if os.path.exists(weights) and os.path.getsize(weights) > 1E6: # check print('') return # GCP (redundant backup) url = 'https://storage.googleapis.com/ultralytics/yolov5/ckpt/' + file - torch.hub.download_url_to_file(url, weights) + r = os.system('curl -L %s -o %s' % (url, weights)) # torch.hub.download_url_to_file(url, weights) if os.path.exists(weights) and os.path.getsize(weights) > 1E6: # check print('') return From a0f50baf6d7b7884537c1ca281c4d16a7dc7623d Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 11 Aug 2020 16:36:57 -0700 Subject: [PATCH 5/6] Update google_utils.py --- utils/google_utils.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index 8557bae975c0..9e4c4cbbc6b9 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -27,27 +27,27 @@ def attempt_download(weights): # if r == 0 and os.path.exists(weights) and os.path.getsize(weights) > 1E6: # check # return - # GitHub - url = 'https://github.com/ultralytics/yolov5/releases/download/v2.0/' + file - print('Downloading %s to %s...' % (url, weights)) - if platform.system() == 'Darwin': # avoid MacOS python requests certificate error - r = os.system('curl -L %s -o %s' % (url, weights)) - else: - torch.hub.download_url_to_file(url, weights) - if os.path.exists(weights) and os.path.getsize(weights) > 1E6: # check + try: # GitHub + url = 'https://github.com/ultralytics/yolov5/releases/download/v2.0/' + file + print('Downloading %s to %s...' % (url, weights)) + if platform.system() == 'Darwin': # avoid MacOS python requests certificate error + r = os.system('curl -L %s -o %s' % (url, weights)) + else: + torch.hub.download_url_to_file(url, weights) + assert os.path.exists(weights) and os.path.getsize(weights) > 1E6 # check + + except Exception as e: # GCP + url = 'https://storage.googleapis.com/ultralytics/yolov5/ckpt/' + file + print('Downloading %s to %s...' % (url, weights)) + r = os.system('curl -L %s -o %s' % (url, weights)) # torch.hub.download_url_to_file(url, weights) + + finally: + if not (os.path.exists(weights) and os.path.getsize(weights) > 1E6): # check + os.remove(weights) if os.path.exists(weights) else None # remove partial downloads + print('ERROR: Download failure: %s' % e) print('') return - # GCP (redundant backup) - url = 'https://storage.googleapis.com/ultralytics/yolov5/ckpt/' + file - r = os.system('curl -L %s -o %s' % (url, weights)) # torch.hub.download_url_to_file(url, weights) - if os.path.exists(weights) and os.path.getsize(weights) > 1E6: # check - print('') - return - else: - os.remove(weights) if os.path.exists(weights) else None # remove partial downloads - raise Exception(msg) - def gdrive_download(id='1n_oKgR81BJtqk75b00eAjdv03qVCQn2f', name='coco128.zip'): # Downloads a file from Google Drive. from utils.google_utils import *; gdrive_download() From 8281754d87977165d0833803c401700cd906eda7 Mon Sep 17 00:00:00 2001 From: Glenn Jocher Date: Tue, 11 Aug 2020 16:59:59 -0700 Subject: [PATCH 6/6] Update google_utils.py --- utils/google_utils.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/utils/google_utils.py b/utils/google_utils.py index 9e4c4cbbc6b9..ff83f5fc9e72 100644 --- a/utils/google_utils.py +++ b/utils/google_utils.py @@ -23,7 +23,7 @@ def attempt_download(weights): # 'yolov5m.pt': '1vobuEExpWQVpXExsJ2w-Mbf3HJjWkQJr', # 'yolov5l.pt': '1hrlqD1Wdei7UT4OgT785BEk1JwnSvNEV', # 'yolov5x.pt': '1mM8aZJlWTxOg7BZJvNUMrTnA2AbeCVzS'} - # r = gdrive_download(id=d[file], name=weights) if file in d else 1 # return value + # r = gdrive_download(id=d[file], name=weights) if file in d else 1 # if r == 0 and os.path.exists(weights) and os.path.getsize(weights) > 1E6: # check # return @@ -35,16 +35,15 @@ def attempt_download(weights): else: torch.hub.download_url_to_file(url, weights) assert os.path.exists(weights) and os.path.getsize(weights) > 1E6 # check - except Exception as e: # GCP + print('Download error: %s' % e) url = 'https://storage.googleapis.com/ultralytics/yolov5/ckpt/' + file print('Downloading %s to %s...' % (url, weights)) r = os.system('curl -L %s -o %s' % (url, weights)) # torch.hub.download_url_to_file(url, weights) - finally: if not (os.path.exists(weights) and os.path.getsize(weights) > 1E6): # check os.remove(weights) if os.path.exists(weights) else None # remove partial downloads - print('ERROR: Download failure: %s' % e) + print('ERROR: Download failure: %s' % msg) print('') return