77import tarfile
88import requests
99
10- if sys .version_info [0 ] < 3 :
11- from urllib2 import urlopen
12- else :
13- from urllib .request import urlopen
14-
15-
1610class Model :
1711 MB = 1024 * 1024
1812 BUFSIZE = 10 * MB
@@ -31,12 +25,12 @@ def __str__(self):
3125
3226 def printRequest (self , r ):
3327 def getMB (r ):
34- d = dict (r .info () )
28+ d = dict (r .headers )
3529 for c in ['content-length' , 'Content-Length' ]:
3630 if c in d :
3731 return int (d [c ]) / self .MB
3832 return '<unknown>'
39- print (' {} {} [{} Mb]' .format (r .getcode (), r . msg , getMB (r )))
33+ print (' {} [{} Mb]' .format (r .status_code , getMB (r )))
4034
4135 def verify (self ):
4236 if not self .sha :
@@ -54,7 +48,7 @@ def verify(self):
5448 self .sha_actual = sha .hexdigest ()
5549 return self .sha == self .sha_actual
5650 except Exception as e :
57- print (' catch {}' .format (e ))
51+ print (' verify {}' .format (e ))
5852
5953 def get (self ):
6054 if self .verify ():
@@ -90,31 +84,42 @@ def get(self):
9084
9185 def download (self ):
9286 try :
93- r = urlopen (self .url , timeout = 60 )
87+ session = requests .Session ()
88+ r = session .get (self .url , stream = True , timeout = 60 )
9489 self .printRequest (r )
95- self .save (r )
90+
91+ with open (self .filename , 'wb' ) as f :
92+ print (' progress ' , end = '' )
93+ sys .stdout .flush ()
94+ for buf in r .iter_content (self .BUFSIZE ):
95+ if not buf :
96+ continue
97+ f .write (buf )
98+ print ('>' , end = '' )
99+ sys .stdout .flush ()
100+
96101 except Exception as e :
97- print (' catch {}' .format (e ))
102+ print (' download {}' .format (e ))
98103
99104 def extract (self ):
100105 try :
101106 with tarfile .open (self .archive ) as f :
102107 assert self .member in f .getnames ()
103- self .save (f .extractfile (self .member ))
104- except Exception as e :
105- print (' catch {}' .format (e ))
108+ r = f .extractfile (self .member )
106109
107- def save (self , r ):
108- with open (self .filename , 'wb' ) as f :
109- print (' progress ' , end = '' )
110- sys .stdout .flush ()
111- while True :
112- buf = r .read (self .BUFSIZE )
113- if not buf :
114- break
115- f .write (buf )
116- print ('>' , end = '' )
117- sys .stdout .flush ()
110+ with open (self .filename , 'wb' ) as f :
111+ print (' progress ' , end = '' )
112+ sys .stdout .flush ()
113+ while True :
114+ buf = r .read (self .BUFSIZE )
115+ if not buf :
116+ break
117+ f .write (buf )
118+ print ('>' , end = '' )
119+ sys .stdout .flush ()
120+
121+ except Exception as e :
122+ print (' extract {}' .format (e ))
118123
119124 def handle_bad_download (self ):
120125 if os .path .exists (self .filename ):
@@ -220,14 +225,14 @@ def get_confirm_token(response): # in case of large files
220225 filename = 'squeezenet_v1.1.caffemodel' ),
221226 Model (
222227 name = 'MobileNet-SSD' , # https://github.com/chuanqi305/MobileNet-SSD
223- url = 'https://drive.google .com/uc?export=download&id=0B3gersZ2cHIxRm5PMWRoTkdHdHc ' ,
224- sha = '994d30a8afaa9e754d17d2373b2d62a7dfbaaf7a ' ,
225- filename = 'MobileNetSSD_deploy .caffemodel' ),
228+ url = 'https://raw.githubusercontent .com/chuanqi305/MobileNet-SSD/97406996b1eee2d40eb0a00ae567cf41e23369f9/mobilenet_iter_73000.caffemodel ' ,
229+ sha = '19e3ec38842f3e68b02c07a1c24424a1e9db57e9 ' ,
230+ filename = 'MobileNetSSD_deploy_19e3ec3 .caffemodel' ),
226231 Model (
227232 name = 'MobileNet-SSD' ,
228- url = 'https://raw.githubusercontent.com/chuanqi305/MobileNet-SSD/daef68a6c2f5fbb8c88404266aa28180646d17e0/MobileNetSSD_deploy .prototxt' ,
229- sha = 'd77c9cf09619470d49b82a9dd18704813a2043cd ' ,
230- filename = 'MobileNetSSD_deploy .prototxt' ),
233+ url = 'https://raw.githubusercontent.com/chuanqi305/MobileNet-SSD/97406996b1eee2d40eb0a00ae567cf41e23369f9/deploy .prototxt' ,
234+ sha = '50cf80235a8fcccc641bf9f8efc803edbf21c615 ' ,
235+ filename = 'MobileNetSSD_deploy_19e3ec3 .prototxt' ),
231236 Model (
232237 name = 'OpenFace' , # https://github.com/cmusatyalab/openface
233238 url = 'https://storage.cmusatyalab.org/openface-models/nn4.small2.v1.t7' ,
@@ -298,7 +303,7 @@ def get_confirm_token(response): # in case of large files
298303 filename = 'ssd_mobilenet_v2_coco_2018_03_29.pb' ),
299304 Model (
300305 name = 'Colorization' ,
301- url = 'https://raw.githubusercontent.com/richzhang/colorization/master /models/colorization_deploy_v2.prototxt' ,
306+ url = 'https://raw.githubusercontent.com/richzhang/colorization/caffe /models/colorization_deploy_v2.prototxt' ,
302307 sha = 'f528334e386a69cbaaf237a7611d833bef8e5219' ,
303308 filename = 'colorization_deploy_v2.prototxt' ),
304309 Model (
@@ -432,29 +437,17 @@ def get_confirm_token(response): # in case of large files
432437 filename = 'faster_rcnn_resnet50_coco_2018_01_28.pb' ),
433438 Model (
434439 name = 'AlexNet (ONNX)' ,
435- url = 'https://s3.amazonaws.com/download.onnx/models/opset_8/bvlc_alexnet.tar.gz' ,
436- sha = 'c713be2852472582224fa7395e2ab4641f8b6356' ,
437- filename = 'bvlc_alexnet.tar.gz' ),
438- Model (
439- name = 'AlexNet (ONNX)' ,
440- archive = 'bvlc_alexnet.tar.gz' ,
441- member = 'bvlc_alexnet/model.onnx' ,
440+ url = 'https://github.com/onnx/models/raw/69c5d3751dda5349fd3fc53f525395d180420c07/vision/classification/alexnet/model/bvlcalexnet-8.onnx' ,
442441 sha = 'b256703f2b125d8681a0a6e5a40a6c9deb7d2b4b' ,
443442 filename = 'onnx/models/alexnet.onnx' ),
444443 Model (
445444 name = 'GoogleNet (ONNX)' ,
446- url = 'https://s3.amazonaws.com/download.onnx/models/opset_8/bvlc_googlenet.tar.gz' ,
447- sha = '739732220ba2e3efa88f7c26f13badad9b7514bc' ,
448- filename = 'bvlc_googlenet.tar.gz' ),
449- Model (
450- name = 'GoogleNet (ONNX)' ,
451- archive = 'bvlc_googlenet.tar.gz' ,
452- member = 'bvlc_googlenet/model.onnx' ,
445+ url = 'https://github.com/onnx/models/raw/69c5d3751dda5349fd3fc53f525395d180420c07/vision/classification/inception_and_googlenet/googlenet/model/googlenet-8.onnx' ,
453446 sha = '534a16d7e2472f6a9a1925a5ee6c9abc2f5c02b0' ,
454447 filename = 'onnx/models/googlenet.onnx' ),
455448 Model (
456449 name = 'CaffeNet (ONNX)' ,
457- url = 'https://s3.amazonaws. com/download. onnx/models/opset_8/bvlc_reference_caffenet .tar.gz' ,
450+ url = 'https://github. com/onnx/models/raw/4eff8f9b9189672de28d087684e7085ad977747c/vision/classification/caffenet/model/caffenet-8 .tar.gz' ,
458451 sha = 'f9f5dd60d4c9172a7e26bd4268eab7ecddb37393' ,
459452 filename = 'bvlc_reference_caffenet.tar.gz' ),
460453 Model (
@@ -477,7 +470,7 @@ def get_confirm_token(response): # in case of large files
477470 filename = 'onnx/data/output_caffenet.pb' ),
478471 Model (
479472 name = 'RCNN_ILSVRC13 (ONNX)' ,
480- url = 'https://s3.amazonaws. com/download. onnx/models/opset_8/bvlc_reference_rcnn_ilsvrc13 .tar.gz' ,
473+ url = 'https://github. com/onnx/models/raw/cbda9ebd037241c6c6a0826971741d5532af8fa4/vision/classification/rcnn_ilsvrc13/model/rcnn-ilsvrc13-8 .tar.gz' ,
481474 sha = 'b1b27a41066c26f824d57e99036dc885459017f0' ,
482475 filename = 'bvlc_reference_rcnn_ilsvrc13.tar.gz' ),
483476 Model (
@@ -500,7 +493,7 @@ def get_confirm_token(response): # in case of large files
500493 filename = 'onnx/data/output_rcnn_ilsvrc13.pb' ),
501494 Model (
502495 name = 'ZFNet512 (ONNX)' ,
503- url = 'https://s3.amazonaws. com/download. onnx/models/opset_8/ zfnet512.tar.gz' ,
496+ url = 'https://github. com/onnx/models/raw/f884b33c3e2371952aad7ea091898f418c830fe5/vision/classification/zfnet-512/model/ zfnet512-8 .tar.gz' ,
504497 sha = 'c040c455c8aac71c8cda57595b698b76449e4ff4' ,
505498 filename = 'zfnet512.tar.gz' ),
506499 Model (
@@ -523,7 +516,7 @@ def get_confirm_token(response): # in case of large files
523516 filename = 'onnx/data/output_zfnet512.pb' ),
524517 Model (
525518 name = 'VGG16_bn (ONNX)' ,
526- url = 'https://s3.amazonaws. com/onnx-model-zoo/ vgg/vgg16-bn /vgg16-bn.tar.gz' ,
519+ url = 'https://github. com/onnx/models/raw/f884b33c3e2371952aad7ea091898f418c830fe5/vision/classification/ vgg/model /vgg16-bn-7 .tar.gz' ,
527520 sha = '60f4685aed632d2ce3b137017cf44ae1a5c55459' ,
528521 filename = 'vgg16-bn.tar.gz' ),
529522 Model (
@@ -546,7 +539,7 @@ def get_confirm_token(response): # in case of large files
546539 filename = 'onnx/data/output_vgg16-bn.pb' ),
547540 Model (
548541 name = 'ResNet-18v1 (ONNX)' ,
549- url = 'https://s3.amazonaws. com/onnx-model-zoo/ resnet/resnet18v1/resnet18v1 .tar.gz' ,
542+ url = 'https://github. com/onnx/models/raw/69c5d3751dda5349fd3fc53f525395d180420c07/vision/classification/ resnet/model/resnet18-v1-7 .tar.gz' ,
550543 sha = 'd132be4857d024de9caa21fd5300dee7c063bc35' ,
551544 filename = 'resnet18v1.tar.gz' ),
552545 Model (
@@ -569,7 +562,7 @@ def get_confirm_token(response): # in case of large files
569562 filename = 'onnx/data/output_resnet18v1.pb' ),
570563 Model (
571564 name = 'ResNet-50v1 (ONNX)' ,
572- url = 'https://s3.amazonaws. com/onnx-model-zoo/ resnet/resnet50v1/resnet50v1 .tar.gz' ,
565+ url = 'https://github. com/onnx/models/raw/69c5d3751dda5349fd3fc53f525395d180420c07/vision/classification/ resnet/model/resnet50-v1-7 .tar.gz' ,
573566 sha = 'a4ac2da7e0024d61fdb80481496ba966b48b9fea' ,
574567 filename = 'resnet50v1.tar.gz' ),
575568 Model (
@@ -592,7 +585,7 @@ def get_confirm_token(response): # in case of large files
592585 filename = 'onnx/data/output_resnet50v1.pb' ),
593586 Model (
594587 name = 'ResNet50-Int8 (ONNX)' ,
595- url = 'https://github.com/onnx/models/raw/master /vision/classification/resnet/model/resnet50-v1-12-int8.tar.gz' ,
588+ url = 'https://github.com/onnx/models/raw/771185265efbdc049fb223bd68ab1aeb1aecde76 /vision/classification/resnet/model/resnet50-v1-12-int8.tar.gz' ,
596589 sha = '2ff2a58f4a27362ee6234915452e86287cdcf269' ,
597590 filename = 'resnet50-v1-12-int8.tar.gz' ),
598591 Model (
@@ -626,7 +619,7 @@ def get_confirm_token(response): # in case of large files
626619 filename = 'ssd_mobilenet_v1_ppn_coco.pb' ),
627620 Model (
628621 name = 'ResNet101_DUC_HDC (ONNX)' ,
629- url = 'https://s3.amazonaws. com/onnx-model-zoo/duc/ResNet101_DUC_HDC .tar.gz' ,
622+ url = 'https://github. com/onnx/models/raw/69c5d3751dda5349fd3fc53f525395d180420c07/vision/classification/resnet/model/resnet101-v1-7 .tar.gz' ,
630623 sha = 'f8314f381939d01045ac31dbb53d7d35fe3ff9a0' ,
631624 filename = 'ResNet101_DUC_HDC.tar.gz' ),
632625 Model (
@@ -649,7 +642,7 @@ def get_confirm_token(response): # in case of large files
649642 filename = 'onnx/data/output_resnet101_duc_hdc.pb' ),
650643 Model (
651644 name = 'TinyYolov2 (ONNX)' ,
652- url = 'https://www.cntk.ai/OnnxModels/tiny_yolov2/opset_1/tiny_yolov2 .tar.gz' ,
645+ url = 'https://github.com/onnx/models/raw/3d4b2c28f951064ab35c89d5f5c3ffe74a149e4b/vision/object_detection_segmentation/tiny-yolov2/model/tinyyolov2-1 .tar.gz' ,
653646 sha = 'b9102abb8fa6f51368119b52146c30189353164a' ,
654647 filename = 'tiny_yolov2.tar.gz' ),
655648 Model (
@@ -672,7 +665,7 @@ def get_confirm_token(response): # in case of large files
672665 filename = 'onnx/data/output_tiny_yolo2.pb' ),
673666 Model (
674667 name = 'CNN Mnist (ONNX)' ,
675- url = 'https://www.cntk.ai/OnnxModels/ mnist/opset_7 /mnist.tar.gz' ,
668+ url = 'https://github.com/onnx/models/raw/cbda9ebd037241c6c6a0826971741d5532af8fa4/vision/classification/ mnist/model /mnist-7 .tar.gz' ,
676669 sha = '8bcd3372e44bd95dc8a211bc31fb3025d8edf9f9' ,
677670 filename = 'mnist.tar.gz' ),
678671 Model (
@@ -741,7 +734,7 @@ def get_confirm_token(response): # in case of large files
741734 filename = 'onnx/data/output_LResNet100E_IR.pb' ),
742735 Model (
743736 name = 'Emotion FERPlus (ONNX)' ,
744- url = 'https://www.cntk.ai/OnnxModels/emotion_ferplus/opset_7/ emotion_ferplus.tar.gz' ,
737+ url = 'https://github.com/onnx/models/raw/7cee9777a86dd6e80040d6b786869a83d2ad1273/vision/body_analysis/ emotion_ferplus/model/emotion-ferplus-7 .tar.gz' ,
745738 sha = '9ff80899c0cd468999db5d8ffde98780ef85455e' ,
746739 filename = 'emotion_ferplus.tar.gz' ),
747740 Model (
@@ -764,7 +757,7 @@ def get_confirm_token(response): # in case of large files
764757 filename = 'onnx/data/output_emotion_ferplus.pb' ),
765758 Model (
766759 name = 'Squeezenet (ONNX)' ,
767- url = 'https://s3.amazonaws. com/download. onnx/models/opset_8/ squeezenet.tar.gz' ,
760+ url = 'https://github. com/onnx/models/raw/f884b33c3e2371952aad7ea091898f418c830fe5/vision/classification/ squeezenet/model/squeezenet1.0-8 .tar.gz' ,
768761 sha = '57348321d4d460c07c41af814def3abe728b3a03' ,
769762 filename = 'squeezenet.tar.gz' ),
770763 Model (
@@ -787,7 +780,7 @@ def get_confirm_token(response): # in case of large files
787780 filename = 'onnx/data/output_squeezenet.pb' ),
788781 Model (
789782 name = 'DenseNet121 (ONNX)' ,
790- url = 'https://s3.amazonaws. com/download. onnx/models/opset_8/densenet121 .tar.gz' ,
783+ url = 'https://github. com/onnx/models/raw/4eff8f9b9189672de28d087684e7085ad977747c/vision/classification/densenet-121/model/densenet-8 .tar.gz' ,
791784 sha = '338b70e871e73b0550fc8ccc0863b8382e90e8e5' ,
792785 filename = 'densenet121.tar.gz' ),
793786 Model (
@@ -810,7 +803,7 @@ def get_confirm_token(response): # in case of large files
810803 filename = 'onnx/data/output_densenet121.pb' ),
811804 Model (
812805 name = 'Inception v1 (ONNX)' ,
813- url = 'https://s3.amazonaws. com/download. onnx/models/opset_8/ inception_v1.tar.gz' ,
806+ url = 'https://github. com/onnx/models/raw/4eff8f9b9189672de28d087684e7085ad977747c/vision/classification/inception_and_googlenet/ inception_v1/model/inception-v1-8 .tar.gz' ,
814807 sha = '94ecb2bd1426704dca578dc746e3c27bedf22352' ,
815808 filename = 'inception_v1.tar.gz' ),
816809 Model (
@@ -833,7 +826,7 @@ def get_confirm_token(response): # in case of large files
833826 filename = 'onnx/data/output_inception_v1.pb' ),
834827 Model (
835828 name = 'Inception v2 (ONNX)' ,
836- url = 'https://s3.amazonaws. com/download. onnx/models/opset_8/ inception_v2.tar.gz' ,
829+ url = 'https://github. com/onnx/models/raw/4eff8f9b9189672de28d087684e7085ad977747c/vision/classification/inception_and_googlenet/ inception_v2/model/inception-v2-8 .tar.gz' ,
837830 sha = 'd07a442a84d939232c37c976fd8d624fa9f82026' ,
838831 filename = 'inception_v2.tar.gz' ),
839832 Model (
@@ -856,7 +849,7 @@ def get_confirm_token(response): # in case of large files
856849 filename = 'onnx/data/output_inception_v2.pb' ),
857850 Model (
858851 name = 'Shufflenet (ONNX)' ,
859- url = 'https://s3.amazonaws. com/download. onnx/models/opset_9/ shufflenet.tar.gz' ,
852+ url = 'https://github. com/onnx/models/raw/f884b33c3e2371952aad7ea091898f418c830fe5/vision/classification/ shufflenet/model/shufflenet-9 .tar.gz' ,
860853 sha = 'c99afcb7fcc809c0688cc99cb3709a052fde1de7' ,
861854 filename = 'shufflenet.tar.gz' ),
862855 Model (
0 commit comments