7
7
import tarfile
8
8
import requests
9
9
10
- if sys .version_info [0 ] < 3 :
11
- from urllib2 import urlopen
12
- else :
13
- from urllib .request import urlopen
14
-
15
-
16
10
class Model :
17
11
MB = 1024 * 1024
18
12
BUFSIZE = 10 * MB
@@ -31,12 +25,12 @@ def __str__(self):
31
25
32
26
def printRequest (self , r ):
33
27
def getMB (r ):
34
- d = dict (r .info () )
28
+ d = dict (r .headers )
35
29
for c in ['content-length' , 'Content-Length' ]:
36
30
if c in d :
37
31
return int (d [c ]) / self .MB
38
32
return '<unknown>'
39
- print (' {} {} [{} Mb]' .format (r .getcode (), r . msg , getMB (r )))
33
+ print (' {} [{} Mb]' .format (r .status_code , getMB (r )))
40
34
41
35
def verify (self ):
42
36
if not self .sha :
@@ -54,7 +48,7 @@ def verify(self):
54
48
self .sha_actual = sha .hexdigest ()
55
49
return self .sha == self .sha_actual
56
50
except Exception as e :
57
- print (' catch {}' .format (e ))
51
+ print (' verify {}' .format (e ))
58
52
59
53
def get (self ):
60
54
if self .verify ():
@@ -90,31 +84,42 @@ def get(self):
90
84
91
85
def download (self ):
92
86
try :
93
- r = urlopen (self .url , timeout = 60 )
87
+ session = requests .Session ()
88
+ r = session .get (self .url , stream = True , timeout = 60 )
94
89
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
+
96
101
except Exception as e :
97
- print (' catch {}' .format (e ))
102
+ print (' download {}' .format (e ))
98
103
99
104
def extract (self ):
100
105
try :
101
106
with tarfile .open (self .archive ) as f :
102
107
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 )
106
109
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 ))
118
123
119
124
def handle_bad_download (self ):
120
125
if os .path .exists (self .filename ):
@@ -220,14 +225,14 @@ def get_confirm_token(response): # in case of large files
220
225
filename = 'squeezenet_v1.1.caffemodel' ),
221
226
Model (
222
227
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' ),
226
231
Model (
227
232
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' ),
231
236
Model (
232
237
name = 'OpenFace' , # https://github.com/cmusatyalab/openface
233
238
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
298
303
filename = 'ssd_mobilenet_v2_coco_2018_03_29.pb' ),
299
304
Model (
300
305
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' ,
302
307
sha = 'f528334e386a69cbaaf237a7611d833bef8e5219' ,
303
308
filename = 'colorization_deploy_v2.prototxt' ),
304
309
Model (
@@ -432,29 +437,18 @@ def get_confirm_token(response): # in case of large files
432
437
filename = 'faster_rcnn_resnet50_coco_2018_01_28.pb' ),
433
438
Model (
434
439
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' ,
442
441
sha = 'b256703f2b125d8681a0a6e5a40a6c9deb7d2b4b' ,
443
442
filename = 'onnx/models/alexnet.onnx' ),
444
- Model (
445
- 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
443
Model (
450
444
name = 'GoogleNet (ONNX)' ,
451
445
archive = 'bvlc_googlenet.tar.gz' ,
452
- member = 'bvlc_googlenet/ model.onnx' ,
446
+ url = 'https://github.com/onnx/models/raw/69c5d3751dda5349fd3fc53f525395d180420c07/vision/classification/inception_and_googlenet/googlenet/ model/googlenet-8 .onnx' ,
453
447
sha = '534a16d7e2472f6a9a1925a5ee6c9abc2f5c02b0' ,
454
448
filename = 'onnx/models/googlenet.onnx' ),
455
449
Model (
456
450
name = 'CaffeNet (ONNX)' ,
457
- url = 'https://s3.amazonaws. com/download. onnx/models/opset_8/bvlc_reference_caffenet .tar.gz' ,
451
+ url = 'https://github. com/onnx/models/raw/4eff8f9b9189672de28d087684e7085ad977747c/vision/classification/caffenet/model/caffenet-8 .tar.gz' ,
458
452
sha = 'f9f5dd60d4c9172a7e26bd4268eab7ecddb37393' ,
459
453
filename = 'bvlc_reference_caffenet.tar.gz' ),
460
454
Model (
@@ -477,7 +471,7 @@ def get_confirm_token(response): # in case of large files
477
471
filename = 'onnx/data/output_caffenet.pb' ),
478
472
Model (
479
473
name = 'RCNN_ILSVRC13 (ONNX)' ,
480
- url = 'https://s3.amazonaws. com/download. onnx/models/opset_8/bvlc_reference_rcnn_ilsvrc13 .tar.gz' ,
474
+ url = 'https://github. com/onnx/models/raw/cbda9ebd037241c6c6a0826971741d5532af8fa4/vision/classification/rcnn_ilsvrc13/model/rcnn-ilsvrc13-8 .tar.gz' ,
481
475
sha = 'b1b27a41066c26f824d57e99036dc885459017f0' ,
482
476
filename = 'bvlc_reference_rcnn_ilsvrc13.tar.gz' ),
483
477
Model (
@@ -500,7 +494,7 @@ def get_confirm_token(response): # in case of large files
500
494
filename = 'onnx/data/output_rcnn_ilsvrc13.pb' ),
501
495
Model (
502
496
name = 'ZFNet512 (ONNX)' ,
503
- url = 'https://s3.amazonaws. com/download. onnx/models/opset_8/ zfnet512.tar.gz' ,
497
+ url = 'https://github. com/onnx/models/raw/f884b33c3e2371952aad7ea091898f418c830fe5/vision/classification/zfnet-512/model/ zfnet512-8 .tar.gz' ,
504
498
sha = 'c040c455c8aac71c8cda57595b698b76449e4ff4' ,
505
499
filename = 'zfnet512.tar.gz' ),
506
500
Model (
@@ -523,7 +517,7 @@ def get_confirm_token(response): # in case of large files
523
517
filename = 'onnx/data/output_zfnet512.pb' ),
524
518
Model (
525
519
name = 'VGG16_bn (ONNX)' ,
526
- url = 'https://s3.amazonaws. com/onnx-model-zoo/ vgg/vgg16-bn /vgg16-bn.tar.gz' ,
520
+ url = 'https://github. com/onnx/models/raw/f884b33c3e2371952aad7ea091898f418c830fe5/vision/classification/ vgg/model /vgg16-bn-7 .tar.gz' ,
527
521
sha = '60f4685aed632d2ce3b137017cf44ae1a5c55459' ,
528
522
filename = 'vgg16-bn.tar.gz' ),
529
523
Model (
@@ -546,7 +540,7 @@ def get_confirm_token(response): # in case of large files
546
540
filename = 'onnx/data/output_vgg16-bn.pb' ),
547
541
Model (
548
542
name = 'ResNet-18v1 (ONNX)' ,
549
- url = 'https://s3.amazonaws. com/onnx-model-zoo/ resnet/resnet18v1/resnet18v1 .tar.gz' ,
543
+ url = 'https://github. com/onnx/models/raw/69c5d3751dda5349fd3fc53f525395d180420c07/vision/classification/ resnet/model/resnet18-v1-7 .tar.gz' ,
550
544
sha = 'd132be4857d024de9caa21fd5300dee7c063bc35' ,
551
545
filename = 'resnet18v1.tar.gz' ),
552
546
Model (
@@ -569,7 +563,7 @@ def get_confirm_token(response): # in case of large files
569
563
filename = 'onnx/data/output_resnet18v1.pb' ),
570
564
Model (
571
565
name = 'ResNet-50v1 (ONNX)' ,
572
- url = 'https://s3.amazonaws. com/onnx-model-zoo/ resnet/resnet50v1/resnet50v1 .tar.gz' ,
566
+ url = 'https://github. com/onnx/models/raw/69c5d3751dda5349fd3fc53f525395d180420c07/vision/classification/ resnet/model/resnet50-v1-7 .tar.gz' ,
573
567
sha = 'a4ac2da7e0024d61fdb80481496ba966b48b9fea' ,
574
568
filename = 'resnet50v1.tar.gz' ),
575
569
Model (
@@ -592,7 +586,7 @@ def get_confirm_token(response): # in case of large files
592
586
filename = 'onnx/data/output_resnet50v1.pb' ),
593
587
Model (
594
588
name = 'ResNet50-Int8 (ONNX)' ,
595
- url = 'https://github.com/onnx/models/raw/master /vision/classification/resnet/model/resnet50-v1-12-int8.tar.gz' ,
589
+ url = 'https://github.com/onnx/models/raw/771185265efbdc049fb223bd68ab1aeb1aecde76 /vision/classification/resnet/model/resnet50-v1-12-int8.tar.gz' ,
596
590
sha = '2ff2a58f4a27362ee6234915452e86287cdcf269' ,
597
591
filename = 'resnet50-v1-12-int8.tar.gz' ),
598
592
Model (
@@ -626,7 +620,7 @@ def get_confirm_token(response): # in case of large files
626
620
filename = 'ssd_mobilenet_v1_ppn_coco.pb' ),
627
621
Model (
628
622
name = 'ResNet101_DUC_HDC (ONNX)' ,
629
- url = 'https://s3.amazonaws. com/onnx-model-zoo/duc/ResNet101_DUC_HDC .tar.gz' ,
623
+ url = 'https://github. com/onnx/models/raw/69c5d3751dda5349fd3fc53f525395d180420c07/vision/classification/resnet/model/resnet101-v1-7 .tar.gz' ,
630
624
sha = 'f8314f381939d01045ac31dbb53d7d35fe3ff9a0' ,
631
625
filename = 'ResNet101_DUC_HDC.tar.gz' ),
632
626
Model (
@@ -649,7 +643,7 @@ def get_confirm_token(response): # in case of large files
649
643
filename = 'onnx/data/output_resnet101_duc_hdc.pb' ),
650
644
Model (
651
645
name = 'TinyYolov2 (ONNX)' ,
652
- url = 'https://www.cntk.ai/OnnxModels/tiny_yolov2/opset_1/tiny_yolov2 .tar.gz' ,
646
+ url = 'https://github.com/onnx/models/raw/3d4b2c28f951064ab35c89d5f5c3ffe74a149e4b/vision/object_detection_segmentation/tiny-yolov2/model/tinyyolov2-1 .tar.gz' ,
653
647
sha = 'b9102abb8fa6f51368119b52146c30189353164a' ,
654
648
filename = 'tiny_yolov2.tar.gz' ),
655
649
Model (
@@ -672,7 +666,7 @@ def get_confirm_token(response): # in case of large files
672
666
filename = 'onnx/data/output_tiny_yolo2.pb' ),
673
667
Model (
674
668
name = 'CNN Mnist (ONNX)' ,
675
- url = 'https://www.cntk.ai/OnnxModels/ mnist/opset_7 /mnist.tar.gz' ,
669
+ url = 'https://github.com/onnx/models/raw/cbda9ebd037241c6c6a0826971741d5532af8fa4/vision/classification/ mnist/model /mnist-7 .tar.gz' ,
676
670
sha = '8bcd3372e44bd95dc8a211bc31fb3025d8edf9f9' ,
677
671
filename = 'mnist.tar.gz' ),
678
672
Model (
@@ -741,7 +735,7 @@ def get_confirm_token(response): # in case of large files
741
735
filename = 'onnx/data/output_LResNet100E_IR.pb' ),
742
736
Model (
743
737
name = 'Emotion FERPlus (ONNX)' ,
744
- url = 'https://www.cntk.ai/OnnxModels/emotion_ferplus/opset_7/ emotion_ferplus.tar.gz' ,
738
+ url = 'https://github.com/onnx/models/raw/7cee9777a86dd6e80040d6b786869a83d2ad1273/vision/body_analysis/ emotion_ferplus/model/emotion-ferplus-7 .tar.gz' ,
745
739
sha = '9ff80899c0cd468999db5d8ffde98780ef85455e' ,
746
740
filename = 'emotion_ferplus.tar.gz' ),
747
741
Model (
@@ -764,7 +758,7 @@ def get_confirm_token(response): # in case of large files
764
758
filename = 'onnx/data/output_emotion_ferplus.pb' ),
765
759
Model (
766
760
name = 'Squeezenet (ONNX)' ,
767
- url = 'https://s3.amazonaws. com/download. onnx/models/opset_8/ squeezenet.tar.gz' ,
761
+ url = 'https://github. com/onnx/models/raw/f884b33c3e2371952aad7ea091898f418c830fe5/vision/classification/ squeezenet/model/squeezenet1.0-8 .tar.gz' ,
768
762
sha = '57348321d4d460c07c41af814def3abe728b3a03' ,
769
763
filename = 'squeezenet.tar.gz' ),
770
764
Model (
@@ -787,7 +781,7 @@ def get_confirm_token(response): # in case of large files
787
781
filename = 'onnx/data/output_squeezenet.pb' ),
788
782
Model (
789
783
name = 'DenseNet121 (ONNX)' ,
790
- url = 'https://s3.amazonaws. com/download. onnx/models/opset_8/densenet121 .tar.gz' ,
784
+ url = 'https://github. com/onnx/models/raw/4eff8f9b9189672de28d087684e7085ad977747c/vision/classification/densenet-121/model/densenet-8 .tar.gz' ,
791
785
sha = '338b70e871e73b0550fc8ccc0863b8382e90e8e5' ,
792
786
filename = 'densenet121.tar.gz' ),
793
787
Model (
@@ -810,7 +804,7 @@ def get_confirm_token(response): # in case of large files
810
804
filename = 'onnx/data/output_densenet121.pb' ),
811
805
Model (
812
806
name = 'Inception v1 (ONNX)' ,
813
- url = 'https://s3.amazonaws. com/download. onnx/models/opset_8/ inception_v1.tar.gz' ,
807
+ url = 'https://github. com/onnx/models/raw/4eff8f9b9189672de28d087684e7085ad977747c/vision/classification/inception_and_googlenet/ inception_v1/model/inception-v1-8 .tar.gz' ,
814
808
sha = '94ecb2bd1426704dca578dc746e3c27bedf22352' ,
815
809
filename = 'inception_v1.tar.gz' ),
816
810
Model (
@@ -833,7 +827,7 @@ def get_confirm_token(response): # in case of large files
833
827
filename = 'onnx/data/output_inception_v1.pb' ),
834
828
Model (
835
829
name = 'Inception v2 (ONNX)' ,
836
- url = 'https://s3.amazonaws. com/download. onnx/models/opset_8/ inception_v2.tar.gz' ,
830
+ url = 'https://github. com/onnx/models/raw/4eff8f9b9189672de28d087684e7085ad977747c/vision/classification/inception_and_googlenet/ inception_v2/model/inception-v2-8 .tar.gz' ,
837
831
sha = 'd07a442a84d939232c37c976fd8d624fa9f82026' ,
838
832
filename = 'inception_v2.tar.gz' ),
839
833
Model (
@@ -856,7 +850,7 @@ def get_confirm_token(response): # in case of large files
856
850
filename = 'onnx/data/output_inception_v2.pb' ),
857
851
Model (
858
852
name = 'Shufflenet (ONNX)' ,
859
- url = 'https://s3.amazonaws. com/download. onnx/models/opset_9/ shufflenet.tar.gz' ,
853
+ url = 'https://github. com/onnx/models/raw/f884b33c3e2371952aad7ea091898f418c830fe5/vision/classification/ shufflenet/model/shufflenet-9 .tar.gz' ,
860
854
sha = 'c99afcb7fcc809c0688cc99cb3709a052fde1de7' ,
861
855
filename = 'shufflenet.tar.gz' ),
862
856
Model (
0 commit comments