Note
Click here to download the full example code
Object Detection From TF1 Saved Model¶
This demo will take you through the steps of running an “out-of-the-box” TensorFlow 1 compatible detection model on a collection of images. More specifically, in this example we will be using the Saved Model Format to load the model.
Download the test images¶
First we will download the images that we will use throughout this tutorial. The code snippet
shown bellow will download the test images from the TensorFlow Model Garden
and save them inside the data/images
folder.
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # Suppress TensorFlow logging (1)
import pathlib
import tensorflow as tf
tf.get_logger().setLevel('ERROR') # Suppress TensorFlow logging (2)
# Enable GPU dynamic memory allocation
gpus = tf.config.experimental.list_physical_devices('GPU')
for gpu in gpus:
tf.config.experimental.set_memory_growth(gpu, True)
def download_images():
base_url = 'https://raw.githubusercontent.com/tensorflow/models/master/research/object_detection/test_images/'
filenames = ['image1.jpg', 'image2.jpg']
image_paths = []
for filename in filenames:
image_path = tf.keras.utils.get_file(fname=filename,
origin=base_url + filename,
untar=False)
image_path = pathlib.Path(image_path)
image_paths.append(str(image_path))
return image_paths
IMAGE_PATHS = download_images()
Download the model¶
The code snippet shown below is used to download the pre-trained object detection model we shall use to perform inference. The particular detection algorithm we will use is the SSD MobileNet v2. More models can be found in the TensorFlow 1 Detection Model Zoo. To use a different model you will need the URL name of the specific model. This can be done as follows:
Right click on the Model name of the model you would like to use;
Click on Copy link address to copy the download link of the model;
Paste the link in a text editor of your choice. You should observe a link similar to
download.tensorflow.org/models/object_detection/XXXXXXXXX.tar.gz
;Copy the
XXXXXXXXX
part of the link and use it to replace the value of theMODEL_NAME
variable in the code shown below;
For example, the download link for the model used below is: download.tensorflow.org/models/object_detection/ssd_mobilenet_v2_coco_2018_03_29.tar.gz
# Download and extract model
def download_model(model_name):
base_url = 'http://download.tensorflow.org/models/object_detection/'
model_file = model_name + '.tar.gz'
model_dir = tf.keras.utils.get_file(fname=model_name,
origin=base_url + model_file,
untar=True)
return str(model_dir)
MODEL_NAME = 'ssd_mobilenet_v2_coco_2018_03_29'
PATH_TO_MODEL_DIR = download_model(MODEL_NAME)
Out:
Downloading data from http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v2_coco_2018_03_29.tar.gz
8192/187925923 [..............................] - ETA: 0s
16384/187925923 [..............................] - ETA: 41:09
32768/187925923 [..............................] - ETA: 25:46
49152/187925923 [..............................] - ETA: 24:11
90112/187925923 [..............................] - ETA: 15:23
172032/187925923 [..............................] - ETA: 8:58
253952/187925923 [..............................] - ETA: 7:55
286720/187925923 [..............................] - ETA: 8:43
507904/187925923 [..............................] - ETA: 5:13
606208/187925923 [..............................] - ETA: 5:21
696320/187925923 [..............................] - ETA: 4:59
950272/187925923 [..............................] - ETA: 3:49
1105920/187925923 [..............................] - ETA: 3:27
1286144/187925923 [..............................] - ETA: 3:05
1318912/187925923 [..............................] - ETA: 3:24
1589248/187925923 [..............................] - ETA: 2:55
1654784/187925923 [..............................] - ETA: 2:56
1818624/187925923 [..............................] - ETA: 2:46
1998848/187925923 [..............................] - ETA: 2:35
2121728/187925923 [..............................] - ETA: 2:36
2310144/187925923 [..............................] - ETA: 2:28
2498560/187925923 [..............................] - ETA: 2:25
2605056/187925923 [..............................] - ETA: 2:23
2777088/187925923 [..............................] - ETA: 2:17
2965504/187925923 [..............................] - ETA: 2:17
3112960/187925923 [..............................] - ETA: 2:13
3358720/187925923 [..............................] - ETA: 2:06
3497984/187925923 [..............................] - ETA: 2:04
3768320/187925923 [..............................] - ETA: 1:57
3964928/187925923 [..............................] - ETA: 1:54
4145152/187925923 [..............................] - ETA: 1:51
4308992/187925923 [..............................] - ETA: 1:50
4628480/187925923 [..............................] - ETA: 1:44
4841472/187925923 [..............................] - ETA: 1:41
4980736/187925923 [..............................] - ETA: 1:42
5079040/187925923 [..............................] - ETA: 1:42
5234688/187925923 [..............................] - ETA: 1:40
5398528/187925923 [..............................] - ETA: 1:40
5439488/187925923 [..............................] - ETA: 1:41
5652480/187925923 [..............................] - ETA: 1:40
5693440/187925923 [..............................] - ETA: 1:42
5890048/187925923 [..............................] - ETA: 1:40
6062080/187925923 [..............................] - ETA: 1:38
6103040/187925923 [..............................] - ETA: 1:40
6275072/187925923 [>.............................] - ETA: 1:39
6447104/187925923 [>.............................] - ETA: 1:38
6660096/187925923 [>.............................] - ETA: 1:36
6864896/187925923 [>.............................] - ETA: 1:35
7069696/187925923 [>.............................] - ETA: 1:33
7299072/187925923 [>.............................] - ETA: 1:31
7544832/187925923 [>.............................] - ETA: 1:30
7716864/187925923 [>.............................] - ETA: 1:29
7987200/187925923 [>.............................] - ETA: 1:28
8232960/187925923 [>.............................] - ETA: 1:26
8380416/187925923 [>.............................] - ETA: 1:26
8708096/187925923 [>.............................] - ETA: 1:23
8814592/187925923 [>.............................] - ETA: 1:24
9060352/187925923 [>.............................] - ETA: 1:22
9297920/187925923 [>.............................] - ETA: 1:21
9551872/187925923 [>.............................] - ETA: 1:20
9797632/187925923 [>.............................] - ETA: 1:19
10035200/187925923 [>.............................] - ETA: 1:18
10264576/187925923 [>.............................] - ETA: 1:17
10543104/187925923 [>.............................] - ETA: 1:16
10797056/187925923 [>.............................] - ETA: 1:15
11026432/187925923 [>.............................] - ETA: 1:14
11247616/187925923 [>.............................] - ETA: 1:13
11608064/187925923 [>.............................] - ETA: 1:12
11714560/187925923 [>.............................] - ETA: 1:12
11927552/187925923 [>.............................] - ETA: 1:11
12263424/187925923 [>.............................] - ETA: 1:10
12566528/187925923 [=>............................] - ETA: 1:09
12640256/187925923 [=>............................] - ETA: 1:09
12918784/187925923 [=>............................] - ETA: 1:08
13164544/187925923 [=>............................] - ETA: 1:08
13549568/187925923 [=>............................] - ETA: 1:06
13787136/187925923 [=>............................] - ETA: 1:06
14131200/187925923 [=>............................] - ETA: 1:05
14565376/187925923 [=>............................] - ETA: 1:03
14704640/187925923 [=>............................] - ETA: 1:03
14934016/187925923 [=>............................] - ETA: 1:03
15163392/187925923 [=>............................] - ETA: 1:03
15392768/187925923 [=>............................] - ETA: 1:02
15605760/187925923 [=>............................] - ETA: 1:02
15704064/187925923 [=>............................] - ETA: 1:03
16015360/187925923 [=>............................] - ETA: 1:02
16244736/187925923 [=>............................] - ETA: 1:02
16416768/187925923 [=>............................] - ETA: 1:02
16637952/187925923 [=>............................] - ETA: 1:01
16883712/187925923 [=>............................] - ETA: 1:01
17047552/187925923 [=>............................] - ETA: 1:02
17342464/187925923 [=>............................] - ETA: 1:01
17678336/187925923 [=>............................] - ETA: 1:00
17924096/187925923 [=>............................] - ETA: 1:00
18243584/187925923 [=>............................] - ETA: 59s
18505728/187925923 [=>............................] - ETA: 59s
18792448/187925923 [=>............................] - ETA: 58s
19120128/187925923 [==>...........................] - ETA: 57s
19406848/187925923 [==>...........................] - ETA: 57s
19488768/187925923 [==>...........................] - ETA: 57s
19718144/187925923 [==>...........................] - ETA: 57s
19759104/187925923 [==>...........................] - ETA: 58s
19865600/187925923 [==>...........................] - ETA: 58s
20004864/187925923 [==>...........................] - ETA: 58s
20488192/187925923 [==>...........................] - ETA: 57s
20799488/187925923 [==>...........................] - ETA: 56s
21053440/187925923 [==>...........................] - ETA: 56s
21168128/187925923 [==>...........................] - ETA: 56s
21438464/187925923 [==>...........................] - ETA: 56s
21700608/187925923 [==>...........................] - ETA: 56s
21815296/187925923 [==>...........................] - ETA: 56s
21970944/187925923 [==>...........................] - ETA: 56s
22085632/187925923 [==>...........................] - ETA: 56s
22192128/187925923 [==>...........................] - ETA: 57s
22396928/187925923 [==>...........................] - ETA: 57s
22667264/187925923 [==>...........................] - ETA: 57s
22716416/187925923 [==>...........................] - ETA: 58s
23199744/187925923 [==>...........................] - ETA: 57s
23437312/187925923 [==>...........................] - ETA: 56s
23666688/187925923 [==>...........................] - ETA: 56s
23838720/187925923 [==>...........................] - ETA: 56s
24141824/187925923 [==>...........................] - ETA: 56s
24354816/187925923 [==>...........................] - ETA: 55s
24608768/187925923 [==>...........................] - ETA: 55s
24616960/187925923 [==>...........................] - ETA: 56s
24870912/187925923 [==>...........................] - ETA: 55s
25124864/187925923 [===>..........................] - ETA: 55s
25370624/187925923 [===>..........................] - ETA: 55s
25575424/187925923 [===>..........................] - ETA: 55s
25796608/187925923 [===>..........................] - ETA: 55s
25968640/187925923 [===>..........................] - ETA: 56s
26198016/187925923 [===>..........................] - ETA: 55s
26443776/187925923 [===>..........................] - ETA: 55s
26624000/187925923 [===>..........................] - ETA: 55s
26763264/187925923 [===>..........................] - ETA: 55s
26918912/187925923 [===>..........................] - ETA: 55s
27074560/187925923 [===>..........................] - ETA: 55s
27213824/187925923 [===>..........................] - ETA: 55s
27385856/187925923 [===>..........................] - ETA: 55s
27615232/187925923 [===>..........................] - ETA: 54s
27860992/187925923 [===>..........................] - ETA: 54s
28082176/187925923 [===>..........................] - ETA: 54s
28336128/187925923 [===>..........................] - ETA: 54s
28655616/187925923 [===>..........................] - ETA: 53s
28925952/187925923 [===>..........................] - ETA: 53s
29196288/187925923 [===>..........................] - ETA: 53s
29491200/187925923 [===>..........................] - ETA: 52s
29818880/187925923 [===>..........................] - ETA: 52s
30007296/187925923 [===>..........................] - ETA: 52s
30384128/187925923 [===>..........................] - ETA: 51s
30769152/187925923 [===>..........................] - ETA: 51s
31105024/187925923 [===>..........................] - ETA: 50s
31432704/187925923 [====>.........................] - ETA: 50s
31883264/187925923 [====>.........................] - ETA: 49s
32161792/187925923 [====>.........................] - ETA: 49s
32555008/187925923 [====>.........................] - ETA: 49s
32808960/187925923 [====>.........................] - ETA: 49s
33177600/187925923 [====>.........................] - ETA: 48s
33366016/187925923 [====>.........................] - ETA: 48s
33718272/187925923 [====>.........................] - ETA: 48s
34037760/187925923 [====>.........................] - ETA: 48s
34357248/187925923 [====>.........................] - ETA: 47s
34463744/187925923 [====>.........................] - ETA: 47s
34791424/187925923 [====>.........................] - ETA: 47s
34955264/187925923 [====>.........................] - ETA: 47s
35110912/187925923 [====>.........................] - ETA: 47s
35381248/187925923 [====>.........................] - ETA: 47s
35586048/187925923 [====>.........................] - ETA: 47s
35840000/187925923 [====>.........................] - ETA: 47s
35995648/187925923 [====>.........................] - ETA: 47s
36216832/187925923 [====>.........................] - ETA: 47s
36503552/187925923 [====>.........................] - ETA: 46s
36773888/187925923 [====>.........................] - ETA: 46s
37003264/187925923 [====>.........................] - ETA: 46s
37036032/187925923 [====>.........................] - ETA: 47s
37412864/187925923 [====>.........................] - ETA: 46s
37724160/187925923 [=====>........................] - ETA: 46s
38019072/187925923 [=====>........................] - ETA: 46s
38330368/187925923 [=====>........................] - ETA: 45s
38608896/187925923 [=====>........................] - ETA: 45s
38903808/187925923 [=====>........................] - ETA: 45s
39288832/187925923 [=====>........................] - ETA: 45s
39641088/187925923 [=====>........................] - ETA: 44s
40058880/187925923 [=====>........................] - ETA: 44s
40476672/187925923 [=====>........................] - ETA: 44s
40697856/187925923 [=====>........................] - ETA: 44s
41123840/187925923 [=====>........................] - ETA: 43s
41476096/187925923 [=====>........................] - ETA: 43s
41844736/187925923 [=====>........................] - ETA: 43s
42188800/187925923 [=====>........................] - ETA: 42s
42549248/187925923 [=====>........................] - ETA: 42s
42696704/187925923 [=====>........................] - ETA: 42s
42999808/187925923 [=====>........................] - ETA: 42s
43229184/187925923 [=====>........................] - ETA: 42s
43540480/187925923 [=====>........................] - ETA: 41s
43794432/187925923 [=====>........................] - ETA: 41s
44130304/187925923 [======>.......................] - ETA: 41s
44138496/187925923 [======>.......................] - ETA: 41s
44482560/187925923 [======>.......................] - ETA: 41s
44900352/187925923 [======>.......................] - ETA: 41s
45146112/187925923 [======>.......................] - ETA: 41s
45531136/187925923 [======>.......................] - ETA: 40s
45654016/187925923 [======>.......................] - ETA: 40s
45940736/187925923 [======>.......................] - ETA: 40s
46161920/187925923 [======>.......................] - ETA: 40s
46424064/187925923 [======>.......................] - ETA: 40s
46727168/187925923 [======>.......................] - ETA: 40s
47177728/187925923 [======>.......................] - ETA: 39s
47316992/187925923 [======>.......................] - ETA: 40s
47751168/187925923 [======>.......................] - ETA: 40s
48070656/187925923 [======>.......................] - ETA: 39s
48160768/187925923 [======>.......................] - ETA: 39s
48349184/187925923 [======>.......................] - ETA: 39s
48611328/187925923 [======>.......................] - ETA: 39s
48766976/187925923 [======>.......................] - ETA: 39s
49070080/187925923 [======>.......................] - ETA: 39s
49250304/187925923 [======>.......................] - ETA: 39s
49512448/187925923 [======>.......................] - ETA: 39s
49569792/187925923 [======>.......................] - ETA: 39s
49864704/187925923 [======>.......................] - ETA: 39s
50044928/187925923 [======>.......................] - ETA: 39s
50200576/187925923 [=======>......................] - ETA: 39s
50479104/187925923 [=======>......................] - ETA: 39s
50790400/187925923 [=======>......................] - ETA: 39s
51011584/187925923 [=======>......................] - ETA: 39s
51175424/187925923 [=======>......................] - ETA: 39s
51232768/187925923 [=======>......................] - ETA: 39s
51421184/187925923 [=======>......................] - ETA: 39s
51585024/187925923 [=======>......................] - ETA: 39s
51863552/187925923 [=======>......................] - ETA: 38s
52051968/187925923 [=======>......................] - ETA: 38s
52248576/187925923 [=======>......................] - ETA: 38s
52371456/187925923 [=======>......................] - ETA: 38s
52576256/187925923 [=======>......................] - ETA: 38s
52854784/187925923 [=======>......................] - ETA: 38s
53018624/187925923 [=======>......................] - ETA: 38s
53403648/187925923 [=======>......................] - ETA: 38s
53583872/187925923 [=======>......................] - ETA: 38s
53772288/187925923 [=======>......................] - ETA: 38s
54026240/187925923 [=======>......................] - ETA: 38s
54304768/187925923 [=======>......................] - ETA: 38s
54616064/187925923 [=======>......................] - ETA: 38s
54812672/187925923 [=======>......................] - ETA: 38s
55025664/187925923 [=======>......................] - ETA: 37s
55173120/187925923 [=======>......................] - ETA: 37s
55418880/187925923 [=======>......................] - ETA: 37s
55697408/187925923 [=======>......................] - ETA: 37s
55918592/187925923 [=======>......................] - ETA: 37s
56049664/187925923 [=======>......................] - ETA: 37s
56360960/187925923 [=======>......................] - ETA: 37s
56582144/187925923 [========>.....................] - ETA: 37s
56770560/187925923 [========>.....................] - ETA: 37s
56942592/187925923 [========>.....................] - ETA: 37s
57237504/187925923 [========>.....................] - ETA: 37s
57344000/187925923 [========>.....................] - ETA: 37s
57393152/187925923 [========>.....................] - ETA: 37s
57819136/187925923 [========>.....................] - ETA: 36s
57917440/187925923 [========>.....................] - ETA: 37s
58187776/187925923 [========>.....................] - ETA: 36s
58359808/187925923 [========>.....................] - ETA: 36s
58818560/187925923 [========>.....................] - ETA: 36s
58867712/187925923 [========>.....................] - ETA: 36s
58982400/187925923 [========>.....................] - ETA: 36s
59097088/187925923 [========>.....................] - ETA: 36s
59105280/187925923 [========>.....................] - ETA: 36s
59441152/187925923 [========>.....................] - ETA: 36s
59604992/187925923 [========>.....................] - ETA: 36s
59785216/187925923 [========>.....................] - ETA: 36s
60022784/187925923 [========>.....................] - ETA: 36s
60153856/187925923 [========>.....................] - ETA: 36s
60448768/187925923 [========>.....................] - ETA: 36s
60743680/187925923 [========>.....................] - ETA: 36s
60899328/187925923 [========>.....................] - ETA: 36s
61005824/187925923 [========>.....................] - ETA: 36s
61267968/187925923 [========>.....................] - ETA: 36s
61497344/187925923 [========>.....................] - ETA: 36s
61677568/187925923 [========>.....................] - ETA: 36s
61972480/187925923 [========>.....................] - ETA: 35s
62095360/187925923 [========>.....................] - ETA: 35s
62283776/187925923 [========>.....................] - ETA: 36s
62529536/187925923 [========>.....................] - ETA: 35s
62791680/187925923 [=========>....................] - ETA: 35s
63004672/187925923 [=========>....................] - ETA: 35s
63373312/187925923 [=========>....................] - ETA: 35s
63782912/187925923 [=========>....................] - ETA: 35s
64102400/187925923 [=========>....................] - ETA: 35s
64397312/187925923 [=========>....................] - ETA: 34s
64634880/187925923 [=========>....................] - ETA: 34s
64897024/187925923 [=========>....................] - ETA: 34s
65200128/187925923 [=========>....................] - ETA: 34s
65347584/187925923 [=========>....................] - ETA: 34s
65568768/187925923 [=========>....................] - ETA: 34s
65716224/187925923 [=========>....................] - ETA: 34s
65921024/187925923 [=========>....................] - ETA: 34s
66093056/187925923 [=========>....................] - ETA: 34s
66281472/187925923 [=========>....................] - ETA: 34s
66453504/187925923 [=========>....................] - ETA: 34s
66617344/187925923 [=========>....................] - ETA: 34s
66797568/187925923 [=========>....................] - ETA: 34s
66936832/187925923 [=========>....................] - ETA: 34s
67092480/187925923 [=========>....................] - ETA: 34s
67346432/187925923 [=========>....................] - ETA: 34s
67641344/187925923 [=========>....................] - ETA: 33s
67870720/187925923 [=========>....................] - ETA: 33s
68182016/187925923 [=========>....................] - ETA: 33s
68337664/187925923 [=========>....................] - ETA: 33s
68542464/187925923 [=========>....................] - ETA: 33s
68780032/187925923 [=========>....................] - ETA: 33s
68984832/187925923 [==========>...................] - ETA: 33s
69214208/187925923 [==========>...................] - ETA: 33s
69296128/187925923 [==========>...................] - ETA: 33s
69541888/187925923 [==========>...................] - ETA: 33s
69763072/187925923 [==========>...................] - ETA: 33s
70123520/187925923 [==========>...................] - ETA: 33s
70295552/187925923 [==========>...................] - ETA: 33s
70631424/187925923 [==========>...................] - ETA: 33s
70868992/187925923 [==========>...................] - ETA: 33s
71008256/187925923 [==========>...................] - ETA: 32s
71196672/187925923 [==========>...................] - ETA: 32s
71360512/187925923 [==========>...................] - ETA: 32s
71524352/187925923 [==========>...................] - ETA: 32s
71720960/187925923 [==========>...................] - ETA: 32s
71884800/187925923 [==========>...................] - ETA: 32s
71999488/187925923 [==========>...................] - ETA: 32s
72179712/187925923 [==========>...................] - ETA: 32s
72335360/187925923 [==========>...................] - ETA: 32s
72507392/187925923 [==========>...................] - ETA: 32s
72687616/187925923 [==========>...................] - ETA: 32s
73015296/187925923 [==========>...................] - ETA: 32s
73269248/187925923 [==========>...................] - ETA: 32s
73408512/187925923 [==========>...................] - ETA: 32s
73875456/187925923 [==========>...................] - ETA: 32s
74088448/187925923 [==========>...................] - ETA: 32s
74432512/187925923 [==========>...................] - ETA: 31s
74743808/187925923 [==========>...................] - ETA: 31s
75038720/187925923 [==========>...................] - ETA: 31s
75431936/187925923 [===========>..................] - ETA: 31s
75808768/187925923 [===========>..................] - ETA: 31s
76136448/187925923 [===========>..................] - ETA: 31s
76431360/187925923 [===========>..................] - ETA: 31s
76611584/187925923 [===========>..................] - ETA: 31s
76922880/187925923 [===========>..................] - ETA: 30s
77217792/187925923 [===========>..................] - ETA: 30s
77455360/187925923 [===========>..................] - ETA: 30s
77684736/187925923 [===========>..................] - ETA: 30s
77701120/187925923 [===========>..................] - ETA: 30s
77987840/187925923 [===========>..................] - ETA: 30s
78299136/187925923 [===========>..................] - ETA: 30s
78520320/187925923 [===========>..................] - ETA: 30s
78798848/187925923 [===========>..................] - ETA: 30s
79020032/187925923 [===========>..................] - ETA: 30s
79192064/187925923 [===========>..................] - ETA: 30s
79314944/187925923 [===========>..................] - ETA: 30s
79380480/187925923 [===========>..................] - ETA: 30s
79437824/187925923 [===========>..................] - ETA: 30s
79749120/187925923 [===========>..................] - ETA: 30s
80117760/187925923 [===========>..................] - ETA: 30s
80412672/187925923 [===========>..................] - ETA: 30s
80707584/187925923 [===========>..................] - ETA: 30s
80986112/187925923 [===========>..................] - ETA: 29s
81223680/187925923 [===========>..................] - ETA: 29s
81461248/187925923 [============>.................] - ETA: 29s
81649664/187925923 [============>.................] - ETA: 29s
81838080/187925923 [============>.................] - ETA: 29s
81944576/187925923 [============>.................] - ETA: 29s
82305024/187925923 [============>.................] - ETA: 29s
82542592/187925923 [============>.................] - ETA: 29s
82755584/187925923 [============>.................] - ETA: 29s
82919424/187925923 [============>.................] - ETA: 29s
83410944/187925923 [============>.................] - ETA: 29s
83419136/187925923 [============>.................] - ETA: 29s
83427328/187925923 [============>.................] - ETA: 29s
83795968/187925923 [============>.................] - ETA: 29s
84000768/187925923 [============>.................] - ETA: 29s
84197376/187925923 [============>.................] - ETA: 29s
84385792/187925923 [============>.................] - ETA: 29s
84770816/187925923 [============>.................] - ETA: 29s
84885504/187925923 [============>.................] - ETA: 29s
85114880/187925923 [============>.................] - ETA: 28s
85303296/187925923 [============>.................] - ETA: 28s
85565440/187925923 [============>.................] - ETA: 29s
85811200/187925923 [============>.................] - ETA: 29s
86065152/187925923 [============>.................] - ETA: 29s
86736896/187925923 [============>.................] - ETA: 28s
87007232/187925923 [============>.................] - ETA: 28s
87465984/187925923 [============>.................] - ETA: 28s
87703552/187925923 [=============>................] - ETA: 28s
87982080/187925923 [=============>................] - ETA: 28s
88293376/187925923 [=============>................] - ETA: 28s
88604672/187925923 [=============>................] - ETA: 27s
88915968/187925923 [=============>................] - ETA: 27s
89202688/187925923 [=============>................] - ETA: 27s
89505792/187925923 [=============>................] - ETA: 27s
89587712/187925923 [=============>................] - ETA: 27s
89751552/187925923 [=============>................] - ETA: 27s
89825280/187925923 [=============>................] - ETA: 27s
89874432/187925923 [=============>................] - ETA: 27s
90071040/187925923 [=============>................] - ETA: 27s
90210304/187925923 [=============>................] - ETA: 27s
90333184/187925923 [=============>................] - ETA: 27s
90701824/187925923 [=============>................] - ETA: 27s
90972160/187925923 [=============>................] - ETA: 27s
91168768/187925923 [=============>................] - ETA: 27s
91439104/187925923 [=============>................] - ETA: 27s
91627520/187925923 [=============>................] - ETA: 27s
91865088/187925923 [=============>................] - ETA: 27s
92135424/187925923 [=============>................] - ETA: 26s
92332032/187925923 [=============>................] - ETA: 26s
92651520/187925923 [=============>................] - ETA: 26s
92938240/187925923 [=============>................] - ETA: 26s
93290496/187925923 [=============>................] - ETA: 26s
93552640/187925923 [=============>................] - ETA: 26s
93765632/187925923 [=============>................] - ETA: 26s
94027776/187925923 [==============>...............] - ETA: 26s
94420992/187925923 [==============>...............] - ETA: 26s
94674944/187925923 [==============>...............] - ETA: 26s
95043584/187925923 [==============>...............] - ETA: 26s
95412224/187925923 [==============>...............] - ETA: 25s
95690752/187925923 [==============>...............] - ETA: 25s
96018432/187925923 [==============>...............] - ETA: 25s
96280576/187925923 [==============>...............] - ETA: 25s
96632832/187925923 [==============>...............] - ETA: 25s
96985088/187925923 [==============>...............] - ETA: 25s
97304576/187925923 [==============>...............] - ETA: 25s
97640448/187925923 [==============>...............] - ETA: 25s
97968128/187925923 [==============>...............] - ETA: 24s
98312192/187925923 [==============>...............] - ETA: 24s
98566144/187925923 [==============>...............] - ETA: 24s
98942976/187925923 [==============>...............] - ETA: 24s
99057664/187925923 [==============>...............] - ETA: 24s
99254272/187925923 [==============>...............] - ETA: 24s
99532800/187925923 [==============>...............] - ETA: 24s
99639296/187925923 [==============>...............] - ETA: 24s
99753984/187925923 [==============>...............] - ETA: 24s
99819520/187925923 [==============>...............] - ETA: 24s
99901440/187925923 [==============>...............] - ETA: 24s
100048896/187925923 [==============>...............] - ETA: 24s
100237312/187925923 [===============>..............] - ETA: 24s
100343808/187925923 [===============>..............] - ETA: 24s
100548608/187925923 [===============>..............] - ETA: 24s
100720640/187925923 [===============>..............] - ETA: 24s
100843520/187925923 [===============>..............] - ETA: 24s
101064704/187925923 [===============>..............] - ETA: 24s
101277696/187925923 [===============>..............] - ETA: 24s
101466112/187925923 [===============>..............] - ETA: 24s
101629952/187925923 [===============>..............] - ETA: 24s
101842944/187925923 [===============>..............] - ETA: 24s
101974016/187925923 [===============>..............] - ETA: 24s
102187008/187925923 [===============>..............] - ETA: 23s
102375424/187925923 [===============>..............] - ETA: 23s
102563840/187925923 [===============>..............] - ETA: 23s
102785024/187925923 [===============>..............] - ETA: 23s
102957056/187925923 [===============>..............] - ETA: 23s
103096320/187925923 [===============>..............] - ETA: 23s
103137280/187925923 [===============>..............] - ETA: 23s
103145472/187925923 [===============>..............] - ETA: 23s
103268352/187925923 [===============>..............] - ETA: 23s
103424000/187925923 [===============>..............] - ETA: 23s
103497728/187925923 [===============>..............] - ETA: 23s
103620608/187925923 [===============>..............] - ETA: 23s
103809024/187925923 [===============>..............] - ETA: 23s
104071168/187925923 [===============>..............] - ETA: 23s
104202240/187925923 [===============>..............] - ETA: 23s
104407040/187925923 [===============>..............] - ETA: 23s
104554496/187925923 [===============>..............] - ETA: 23s
104644608/187925923 [===============>..............] - ETA: 23s
104808448/187925923 [===============>..............] - ETA: 23s
105013248/187925923 [===============>..............] - ETA: 23s
105193472/187925923 [===============>..............] - ETA: 23s
105259008/187925923 [===============>..............] - ETA: 23s
105406464/187925923 [===============>..............] - ETA: 23s
105627648/187925923 [===============>..............] - ETA: 23s
105807872/187925923 [===============>..............] - ETA: 23s
105963520/187925923 [===============>..............] - ETA: 23s
106094592/187925923 [===============>..............] - ETA: 23s
106242048/187925923 [===============>..............] - ETA: 23s
106471424/187925923 [===============>..............] - ETA: 23s
106651648/187925923 [================>.............] - ETA: 23s
106856448/187925923 [================>.............] - ETA: 23s
107044864/187925923 [================>.............] - ETA: 23s
107175936/187925923 [================>.............] - ETA: 23s
107470848/187925923 [================>.............] - ETA: 23s
107487232/187925923 [================>.............] - ETA: 23s
107544576/187925923 [================>.............] - ETA: 23s
107626496/187925923 [================>.............] - ETA: 23s
107757568/187925923 [================>.............] - ETA: 23s
108142592/187925923 [================>.............] - ETA: 23s
108445696/187925923 [================>.............] - ETA: 23s
108535808/187925923 [================>.............] - ETA: 23s
108781568/187925923 [================>.............] - ETA: 23s
109125632/187925923 [================>.............] - ETA: 22s
109387776/187925923 [================>.............] - ETA: 22s
109764608/187925923 [================>.............] - ETA: 22s
109969408/187925923 [================>.............] - ETA: 22s
110182400/187925923 [================>.............] - ETA: 22s
110469120/187925923 [================>.............] - ETA: 22s
110772224/187925923 [================>.............] - ETA: 22s
111083520/187925923 [================>.............] - ETA: 22s
111321088/187925923 [================>.............] - ETA: 22s
111624192/187925923 [================>.............] - ETA: 22s
111919104/187925923 [================>.............] - ETA: 22s
112115712/187925923 [================>.............] - ETA: 22s
112402432/187925923 [================>.............] - ETA: 21s
112467968/187925923 [================>.............] - ETA: 21s
112869376/187925923 [=================>............] - ETA: 21s
113139712/187925923 [=================>............] - ETA: 21s
113295360/187925923 [=================>............] - ETA: 21s
113557504/187925923 [=================>............] - ETA: 21s
113786880/187925923 [=================>............] - ETA: 21s
114065408/187925923 [=================>............] - ETA: 21s
114212864/187925923 [=================>............] - ETA: 21s
114475008/187925923 [=================>............] - ETA: 21s
114696192/187925923 [=================>............] - ETA: 21s
114868224/187925923 [=================>............] - ETA: 21s
114974720/187925923 [=================>............] - ETA: 21s
115081216/187925923 [=================>............] - ETA: 21s
115187712/187925923 [=================>............] - ETA: 21s
115195904/187925923 [=================>............] - ETA: 21s
115490816/187925923 [=================>............] - ETA: 21s
115621888/187925923 [=================>............] - ETA: 21s
115736576/187925923 [=================>............] - ETA: 21s
115900416/187925923 [=================>............] - ETA: 21s
116039680/187925923 [=================>............] - ETA: 21s
116178944/187925923 [=================>............] - ETA: 21s
116391936/187925923 [=================>............] - ETA: 20s
116523008/187925923 [=================>............] - ETA: 20s
116670464/187925923 [=================>............] - ETA: 20s
116736000/187925923 [=================>............] - ETA: 20s
116957184/187925923 [=================>............] - ETA: 20s
117145600/187925923 [=================>............] - ETA: 20s
117366784/187925923 [=================>............] - ETA: 20s
117579776/187925923 [=================>............] - ETA: 20s
117833728/187925923 [=================>............] - ETA: 20s
118071296/187925923 [=================>............] - ETA: 20s
118349824/187925923 [=================>............] - ETA: 20s
118661120/187925923 [=================>............] - ETA: 20s
119021568/187925923 [==================>...........] - ETA: 20s
119234560/187925923 [==================>...........] - ETA: 20s
119619584/187925923 [==================>...........] - ETA: 19s
119857152/187925923 [==================>...........] - ETA: 19s
120143872/187925923 [==================>...........] - ETA: 19s
120471552/187925923 [==================>...........] - ETA: 19s
120766464/187925923 [==================>...........] - ETA: 19s
121102336/187925923 [==================>...........] - ETA: 19s
121397248/187925923 [==================>...........] - ETA: 19s
121716736/187925923 [==================>...........] - ETA: 19s
122052608/187925923 [==================>...........] - ETA: 19s
122380288/187925923 [==================>...........] - ETA: 18s
122560512/187925923 [==================>...........] - ETA: 18s
123002880/187925923 [==================>...........] - ETA: 18s
123248640/187925923 [==================>...........] - ETA: 18s
123592704/187925923 [==================>...........] - ETA: 18s
123928576/187925923 [==================>...........] - ETA: 18s
124207104/187925923 [==================>...........] - ETA: 18s
124510208/187925923 [==================>...........] - ETA: 18s
124903424/187925923 [==================>...........] - ETA: 18s
125075456/187925923 [==================>...........] - ETA: 18s
125321216/187925923 [===================>..........] - ETA: 17s
125583360/187925923 [===================>..........] - ETA: 17s
125902848/187925923 [===================>..........] - ETA: 17s
126222336/187925923 [===================>..........] - ETA: 17s
126590976/187925923 [===================>..........] - ETA: 17s
126779392/187925923 [===================>..........] - ETA: 17s
126976000/187925923 [===================>..........] - ETA: 17s
127180800/187925923 [===================>..........] - ETA: 17s
127418368/187925923 [===================>..........] - ETA: 17s
127688704/187925923 [===================>..........] - ETA: 17s
127942656/187925923 [===================>..........] - ETA: 17s
128065536/187925923 [===================>..........] - ETA: 17s
128393216/187925923 [===================>..........] - ETA: 16s
128630784/187925923 [===================>..........] - ETA: 16s
128843776/187925923 [===================>..........] - ETA: 16s
129056768/187925923 [===================>..........] - ETA: 16s
129138688/187925923 [===================>..........] - ETA: 16s
129384448/187925923 [===================>..........] - ETA: 16s
129613824/187925923 [===================>..........] - ETA: 16s
129785856/187925923 [===================>..........] - ETA: 16s
130260992/187925923 [===================>..........] - ETA: 16s
130482176/187925923 [===================>..........] - ETA: 16s
130703360/187925923 [===================>..........] - ETA: 16s
130867200/187925923 [===================>..........] - ETA: 16s
131072000/187925923 [===================>..........] - ETA: 16s
131334144/187925923 [===================>..........] - ETA: 16s
131571712/187925923 [====================>.........] - ETA: 16s
131768320/187925923 [====================>.........] - ETA: 16s
131817472/187925923 [====================>.........] - ETA: 16s
131915776/187925923 [====================>.........] - ETA: 16s
132161536/187925923 [====================>.........] - ETA: 15s
132333568/187925923 [====================>.........] - ETA: 15s
132571136/187925923 [====================>.........] - ETA: 15s
132792320/187925923 [====================>.........] - ETA: 15s
133070848/187925923 [====================>.........] - ETA: 15s
133300224/187925923 [====================>.........] - ETA: 15s
133562368/187925923 [====================>.........] - ETA: 15s
133898240/187925923 [====================>.........] - ETA: 15s
134144000/187925923 [====================>.........] - ETA: 15s
134381568/187925923 [====================>.........] - ETA: 15s
134709248/187925923 [====================>.........] - ETA: 15s
135020544/187925923 [====================>.........] - ETA: 15s
135315456/187925923 [====================>.........] - ETA: 14s
135651328/187925923 [====================>.........] - ETA: 14s
135880704/187925923 [====================>.........] - ETA: 14s
136224768/187925923 [====================>.........] - ETA: 14s
136421376/187925923 [====================>.........] - ETA: 14s
136650752/187925923 [====================>.........] - ETA: 14s
136970240/187925923 [====================>.........] - ETA: 14s
137109504/187925923 [====================>.........] - ETA: 14s
137355264/187925923 [====================>.........] - ETA: 14s
137609216/187925923 [====================>.........] - ETA: 14s
137666560/187925923 [====================>.........] - ETA: 14s
137781248/187925923 [====================>.........] - ETA: 14s
137895936/187925923 [=====================>........] - ETA: 14s
138092544/187925923 [=====================>........] - ETA: 14s
138346496/187925923 [=====================>........] - ETA: 14s
138649600/187925923 [=====================>........] - ETA: 14s
138895360/187925923 [=====================>........] - ETA: 13s
139157504/187925923 [=====================>........] - ETA: 13s
139501568/187925923 [=====================>........] - ETA: 13s
139739136/187925923 [=====================>........] - ETA: 13s
140091392/187925923 [=====================>........] - ETA: 13s
140361728/187925923 [=====================>........] - ETA: 13s
140632064/187925923 [=====================>........] - ETA: 13s
140935168/187925923 [=====================>........] - ETA: 13s
141164544/187925923 [=====================>........] - ETA: 13s
141508608/187925923 [=====================>........] - ETA: 13s
141852672/187925923 [=====================>........] - ETA: 13s
141991936/187925923 [=====================>........] - ETA: 13s
142065664/187925923 [=====================>........] - ETA: 13s
142229504/187925923 [=====================>........] - ETA: 13s
142491648/187925923 [=====================>........] - ETA: 12s
142647296/187925923 [=====================>........] - ETA: 12s
142770176/187925923 [=====================>........] - ETA: 12s
142983168/187925923 [=====================>........] - ETA: 12s
143179776/187925923 [=====================>........] - ETA: 12s
143507456/187925923 [=====================>........] - ETA: 12s
143736832/187925923 [=====================>........] - ETA: 12s
144080896/187925923 [======================>.......] - ETA: 12s
144269312/187925923 [======================>.......] - ETA: 12s
144564224/187925923 [======================>.......] - ETA: 12s
144744448/187925923 [======================>.......] - ETA: 12s
144982016/187925923 [======================>.......] - ETA: 12s
145235968/187925923 [======================>.......] - ETA: 12s
145612800/187925923 [======================>.......] - ETA: 11s
145702912/187925923 [======================>.......] - ETA: 11s
145891328/187925923 [======================>.......] - ETA: 11s
146104320/187925923 [======================>.......] - ETA: 11s
146112512/187925923 [======================>.......] - ETA: 11s
146235392/187925923 [======================>.......] - ETA: 11s
146546688/187925923 [======================>.......] - ETA: 11s
146743296/187925923 [======================>.......] - ETA: 11s
146972672/187925923 [======================>.......] - ETA: 11s
147234816/187925923 [======================>.......] - ETA: 11s
147472384/187925923 [======================>.......] - ETA: 11s
147775488/187925923 [======================>.......] - ETA: 11s
147963904/187925923 [======================>.......] - ETA: 11s
148201472/187925923 [======================>.......] - ETA: 11s
148422656/187925923 [======================>.......] - ETA: 11s
148594688/187925923 [======================>.......] - ETA: 11s
148758528/187925923 [======================>.......] - ETA: 11s
148987904/187925923 [======================>.......] - ETA: 11s
149069824/187925923 [======================>.......] - ETA: 11s
149225472/187925923 [======================>.......] - ETA: 11s
149512192/187925923 [======================>.......] - ETA: 10s
149749760/187925923 [======================>.......] - ETA: 10s
149790720/187925923 [======================>.......] - ETA: 10s
150044672/187925923 [======================>.......] - ETA: 10s
150290432/187925923 [======================>.......] - ETA: 10s
150364160/187925923 [=======================>......] - ETA: 10s
150601728/187925923 [=======================>......] - ETA: 10s
150683648/187925923 [=======================>......] - ETA: 10s
150822912/187925923 [=======================>......] - ETA: 10s
151248896/187925923 [=======================>......] - ETA: 10s
151527424/187925923 [=======================>......] - ETA: 10s
151797760/187925923 [=======================>......] - ETA: 10s
152109056/187925923 [=======================>......] - ETA: 10s
152535040/187925923 [=======================>......] - ETA: 10s
152649728/187925923 [=======================>......] - ETA: 10s
152911872/187925923 [=======================>......] - ETA: 10s
153288704/187925923 [=======================>......] - ETA: 9s
153468928/187925923 [=======================>......] - ETA: 9s
153763840/187925923 [=======================>......] - ETA: 9s
154025984/187925923 [=======================>......] - ETA: 9s
154247168/187925923 [=======================>......] - ETA: 9s
154583040/187925923 [=======================>......] - ETA: 9s
154812416/187925923 [=======================>......] - ETA: 9s
155131904/187925923 [=======================>......] - ETA: 9s
155385856/187925923 [=======================>......] - ETA: 9s
155533312/187925923 [=======================>......] - ETA: 9s
155705344/187925923 [=======================>......] - ETA: 9s
155885568/187925923 [=======================>......] - ETA: 9s
156049408/187925923 [=======================>......] - ETA: 9s
156254208/187925923 [=======================>......] - ETA: 9s
156532736/187925923 [=======================>......] - ETA: 8s
156786688/187925923 [========================>.....] - ETA: 8s
157073408/187925923 [========================>.....] - ETA: 8s
157450240/187925923 [========================>.....] - ETA: 8s
157655040/187925923 [========================>.....] - ETA: 8s
157958144/187925923 [========================>.....] - ETA: 8s
158089216/187925923 [========================>.....] - ETA: 8s
158384128/187925923 [========================>.....] - ETA: 8s
158662656/187925923 [========================>.....] - ETA: 8s
158851072/187925923 [========================>.....] - ETA: 8s
159350784/187925923 [========================>.....] - ETA: 8s
159588352/187925923 [========================>.....] - ETA: 8s
159956992/187925923 [========================>.....] - ETA: 7s
160342016/187925923 [========================>.....] - ETA: 7s
160669696/187925923 [========================>.....] - ETA: 7s
160980992/187925923 [========================>.....] - ETA: 7s
161292288/187925923 [========================>.....] - ETA: 7s
161611776/187925923 [========================>.....] - ETA: 7s
161898496/187925923 [========================>.....] - ETA: 7s
162308096/187925923 [========================>.....] - ETA: 7s
162603008/187925923 [========================>.....] - ETA: 7s
162963456/187925923 [=========================>....] - ETA: 7s
163323904/187925923 [=========================>....] - ETA: 6s
163512320/187925923 [=========================>....] - ETA: 6s
163897344/187925923 [=========================>....] - ETA: 6s
164323328/187925923 [=========================>....] - ETA: 6s
164487168/187925923 [=========================>....] - ETA: 6s
164552704/187925923 [=========================>....] - ETA: 6s
164806656/187925923 [=========================>....] - ETA: 6s
165052416/187925923 [=========================>....] - ETA: 6s
165289984/187925923 [=========================>....] - ETA: 6s
165511168/187925923 [=========================>....] - ETA: 6s
165732352/187925923 [=========================>....] - ETA: 6s
165838848/187925923 [=========================>....] - ETA: 6s
166150144/187925923 [=========================>....] - ETA: 6s
166338560/187925923 [=========================>....] - ETA: 6s
166518784/187925923 [=========================>....] - ETA: 6s
166838272/187925923 [=========================>....] - ETA: 5s
167141376/187925923 [=========================>....] - ETA: 5s
167518208/187925923 [=========================>....] - ETA: 5s
167723008/187925923 [=========================>....] - ETA: 5s
168026112/187925923 [=========================>....] - ETA: 5s
168140800/187925923 [=========================>....] - ETA: 5s
168419328/187925923 [=========================>....] - ETA: 5s
168583168/187925923 [=========================>....] - ETA: 5s
168910848/187925923 [=========================>....] - ETA: 5s
169172992/187925923 [==========================>...] - ETA: 5s
169263104/187925923 [==========================>...] - ETA: 5s
169689088/187925923 [==========================>...] - ETA: 5s
169910272/187925923 [==========================>...] - ETA: 5s
170090496/187925923 [==========================>...] - ETA: 5s
170262528/187925923 [==========================>...] - ETA: 4s
170590208/187925923 [==========================>...] - ETA: 4s
170835968/187925923 [==========================>...] - ETA: 4s
171220992/187925923 [==========================>...] - ETA: 4s
171229184/187925923 [==========================>...] - ETA: 4s
171360256/187925923 [==========================>...] - ETA: 4s
171466752/187925923 [==========================>...] - ETA: 4s
171540480/187925923 [==========================>...] - ETA: 4s
171646976/187925923 [==========================>...] - ETA: 4s
172032000/187925923 [==========================>...] - ETA: 4s
172253184/187925923 [==========================>...] - ETA: 4s
172441600/187925923 [==========================>...] - ETA: 4s
172662784/187925923 [==========================>...] - ETA: 4s
172752896/187925923 [==========================>...] - ETA: 4s
172990464/187925923 [==========================>...] - ETA: 4s
173268992/187925923 [==========================>...] - ETA: 4s
173383680/187925923 [==========================>...] - ETA: 4s
173637632/187925923 [==========================>...] - ETA: 4s
173899776/187925923 [==========================>...] - ETA: 3s
173998080/187925923 [==========================>...] - ETA: 3s
174120960/187925923 [==========================>...] - ETA: 3s
174391296/187925923 [==========================>...] - ETA: 3s
174587904/187925923 [==========================>...] - ETA: 3s
174841856/187925923 [==========================>...] - ETA: 3s
175071232/187925923 [==========================>...] - ETA: 3s
175325184/187925923 [==========================>...] - ETA: 3s
175538176/187925923 [===========================>..] - ETA: 3s
175775744/187925923 [===========================>..] - ETA: 3s
176037888/187925923 [===========================>..] - ETA: 3s
176291840/187925923 [===========================>..] - ETA: 3s
176513024/187925923 [===========================>..] - ETA: 3s
176807936/187925923 [===========================>..] - ETA: 3s
177152000/187925923 [===========================>..] - ETA: 3s
177389568/187925923 [===========================>..] - ETA: 2s
177586176/187925923 [===========================>..] - ETA: 2s
178069504/187925923 [===========================>..] - ETA: 2s
178176000/187925923 [===========================>..] - ETA: 2s
178438144/187925923 [===========================>..] - ETA: 2s
178700288/187925923 [===========================>..] - ETA: 2s
178978816/187925923 [===========================>..] - ETA: 2s
179281920/187925923 [===========================>..] - ETA: 2s
179470336/187925923 [===========================>..] - ETA: 2s
179740672/187925923 [===========================>..] - ETA: 2s
179961856/187925923 [===========================>..] - ETA: 2s
180305920/187925923 [===========================>..] - ETA: 2s
180633600/187925923 [===========================>..] - ETA: 2s
180985856/187925923 [===========================>..] - ETA: 1s
181239808/187925923 [===========================>..] - ETA: 1s
181444608/187925923 [===========================>..] - ETA: 1s
181575680/187925923 [===========================>..] - ETA: 1s
181895168/187925923 [============================>.] - ETA: 1s
182198272/187925923 [============================>.] - ETA: 1s
182403072/187925923 [============================>.] - ETA: 1s
182779904/187925923 [============================>.] - ETA: 1s
182910976/187925923 [============================>.] - ETA: 1s
183230464/187925923 [============================>.] - ETA: 1s
183492608/187925923 [============================>.] - ETA: 1s
183853056/187925923 [============================>.] - ETA: 1s
184205312/187925923 [============================>.] - ETA: 1s
184467456/187925923 [============================>.] - ETA: 0s
184745984/187925923 [============================>.] - ETA: 0s
185065472/187925923 [============================>.] - ETA: 0s
185344000/187925923 [============================>.] - ETA: 0s
185769984/187925923 [============================>.] - ETA: 0s
186040320/187925923 [============================>.] - ETA: 0s
186327040/187925923 [============================>.] - ETA: 0s
186646528/187925923 [============================>.] - ETA: 0s
187088896/187925923 [============================>.] - ETA: 0s
187203584/187925923 [============================>.] - ETA: 0s
187465728/187925923 [============================>.] - ETA: 0s
187867136/187925923 [============================>.] - ETA: 0s
187932672/187925923 [==============================] - 52s 0us/step
Download the labels¶
The coode snippet shown below is used to download the labels file (.pbtxt) which contains a list
of strings used to add the correct label to each detection (e.g. person). Since the pre-trained
model we will use has been trained on the COCO dataset, we will need to download the labels file
corresponding to this dataset, named mscoco_label_map.pbtxt
. A full list of the labels files
included in the TensorFlow Models Garden can be found here.
# Download labels file
def download_labels(filename):
base_url = 'https://raw.githubusercontent.com/tensorflow/models/master/research/object_detection/data/'
label_dir = tf.keras.utils.get_file(fname=filename,
origin=base_url + filename,
untar=False)
label_dir = pathlib.Path(label_dir)
return str(label_dir)
LABEL_FILENAME = 'mscoco_label_map.pbtxt'
PATH_TO_LABELS = download_labels(LABEL_FILENAME)
Out:
Downloading data from https://raw.githubusercontent.com/tensorflow/models/master/research/object_detection/data/mscoco_label_map.pbtxt
8192/5056 [================================================] - 0s 0us/step
Load the model¶
Next we load the downloaded model
import time
from object_detection.utils import label_map_util
from object_detection.utils import visualization_utils as viz_utils
PATH_TO_SAVED_MODEL = PATH_TO_MODEL_DIR + "/saved_model"
print('Loading model...', end='')
start_time = time.time()
# Load saved model and build the detection function
model = tf.saved_model.load(PATH_TO_SAVED_MODEL)
detect_fn = model.signatures['serving_default']
end_time = time.time()
elapsed_time = end_time - start_time
print('Done! Took {} seconds'.format(elapsed_time))
Out:
Loading model...Done! Took 17.68789768218994 seconds
Load label map data (for plotting)¶
Label maps correspond index numbers to category names, so that when our convolution network predicts 5, we know that this corresponds to airplane. Here we use internal utility functions, but anything that returns a dictionary mapping integers to appropriate string labels would be fine.
category_index = label_map_util.create_category_index_from_labelmap(PATH_TO_LABELS,
use_display_name=True)
Putting everything together¶
The code shown below loads an image, runs it through the detection model and visualizes the detection results, including the keypoints.
Note that this will take a long time (several minutes) the first time you run this code due to tf.function’s trace-compilation — on subsequent runs (e.g. on new images), things will be faster.
Here are some simple things to try out if you are curious:
Modify some of the input images and see if detection still works. Some simple things to try out here (just uncomment the relevant portions of code) include flipping the image horizontally, or converting to grayscale (note that we still expect the input image to have 3 channels).
Print out detections[‘detection_boxes’] and try to match the box locations to the boxes in the image. Notice that coordinates are given in normalized form (i.e., in the interval [0, 1]).
Set
min_score_thresh
to other values (between 0 and 1) to allow more detections in or to filter out more detections.
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore') # Suppress Matplotlib warnings
def load_image_into_numpy_array(path):
"""Load an image from file into a numpy array.
Puts image into numpy array to feed into tensorflow graph.
Note that by convention we put it into a numpy array with shape
(height, width, channels), where channels=3 for RGB.
Args:
path: the file path to the image
Returns:
uint8 numpy array with shape (img_height, img_width, 3)
"""
return np.array(Image.open(path))
for image_path in IMAGE_PATHS:
print('Running inference for {}... '.format(image_path), end='')
image_np = load_image_into_numpy_array(image_path)
# Things to try:
# Flip horizontally
# image_np = np.fliplr(image_np).copy()
# Convert image to grayscale
# image_np = np.tile(
# np.mean(image_np, 2, keepdims=True), (1, 1, 3)).astype(np.uint8)
# The input needs to be a tensor, convert it using `tf.convert_to_tensor`.
input_tensor = tf.convert_to_tensor(image_np)
# The model expects a batch of images, so add an axis with `tf.newaxis`.
input_tensor = input_tensor[tf.newaxis, ...]
detections = detect_fn(input_tensor)
# All outputs are batches tensors.
# Convert to numpy arrays, and take index [0] to remove the batch dimension.
# We're only interested in the first num_detections.
num_detections = int(detections.pop('num_detections'))
detections = {key: value[0, :num_detections].numpy()
for key, value in detections.items()}
detections['num_detections'] = num_detections
# detection_classes should be ints.
detections['detection_classes'] = detections['detection_classes'].astype(np.int64)
image_np_with_detections = image_np.copy()
viz_utils.visualize_boxes_and_labels_on_image_array(
image_np_with_detections,
detections['detection_boxes'],
detections['detection_classes'],
detections['detection_scores'],
category_index,
use_normalized_coordinates=True,
max_boxes_to_draw=200,
min_score_thresh=.30,
agnostic_mode=False)
plt.figure()
plt.imshow(image_np_with_detections)
print('Done')
plt.show()
# sphinx_gallery_thumbnail_number = 2
Out:
Running inference for C:\Users\sglvladi\.keras\datasets\image1.jpg... Done
Running inference for C:\Users\sglvladi\.keras\datasets\image2.jpg... Done
Total running time of the script: ( 1 minutes 29.283 seconds)