NOTE: This Use Case is not purposed for resource constrained devices.
Object Detection can be defined as the task of object classification and localization.Object Detection plays an important role in many Deep Learning projects and IoT Applications such as we need object detection for Autonomous Vehicles, we need it for security camera surveillance, and even for applications used by us for generating PDFs nowadays uses Object Detection for detecting documents.In short, Object Detection has a wide range of appliactions.
Importing necessary libraries¶
In [1]:
import cv2
import numpy as np
import time
import matplotlib.pyplot as plt
from tensorflow import keras
Importing the Yolov3 pretrained model and some other necessary files to our workspace¶
In [2]:
!wget -N "https://cainvas-static.s3.amazonaws.com/media/user_data/cainvas-admin/Yolo_data.zip"
!unzip -o Yolo_data.zip
!rm Yolo_data.zip
--2020-12-15 04:27:02-- https://cainvas-static.s3.amazonaws.com/media/user_data/cainvas-admin/Yolo_data.zip Resolving cainvas-static.s3.amazonaws.com (cainvas-static.s3.amazonaws.com)... 52.219.64.24 Connecting to cainvas-static.s3.amazonaws.com (cainvas-static.s3.amazonaws.com)|52.219.64.24|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 462457774 (441M) [application/zip] Saving to: ‘Yolo_data.zip’ Yolo_data.zip 100%[===================>] 441.03M 77.0MB/s in 5.7s 2020-12-15 04:27:08 (77.1 MB/s) - ‘Yolo_data.zip’ saved [462457774/462457774] Archive: Yolo_data.zip inflating: yolov3.weights inflating: images3.jpg inflating: images1.jpg creating: cfg/ inflating: cfg/yolov3.cfg inflating: coco.names inflating: model.h5 inflating: test.jpg
In [3]:
model = keras.models.load_model('model.h5')
model.summary()
WARNING:tensorflow:No training configuration found in the save file, so the model was *not* compiled. Compile it manually. Model: "functional_1" __________________________________________________________________________________________________ Layer (type) Output Shape Param # Connected to ================================================================================================== input_1 (InputLayer) [(None, None, None, 0 __________________________________________________________________________________________________ conv_0 (Conv2D) (None, None, None, 3 864 input_1[0][0] __________________________________________________________________________________________________ bnorm_0 (BatchNormalization) (None, None, None, 3 128 conv_0[0][0] __________________________________________________________________________________________________ leaky_0 (LeakyReLU) (None, None, None, 3 0 bnorm_0[0][0] __________________________________________________________________________________________________ zero_padding2d (ZeroPadding2D) (None, None, None, 3 0 leaky_0[0][0] __________________________________________________________________________________________________ conv_1 (Conv2D) (None, None, None, 6 18432 zero_padding2d[0][0] __________________________________________________________________________________________________ bnorm_1 (BatchNormalization) (None, None, None, 6 256 conv_1[0][0] __________________________________________________________________________________________________ leaky_1 (LeakyReLU) (None, None, None, 6 0 bnorm_1[0][0] __________________________________________________________________________________________________ conv_2 (Conv2D) (None, None, None, 3 2048 leaky_1[0][0] __________________________________________________________________________________________________ bnorm_2 (BatchNormalization) (None, None, None, 3 128 conv_2[0][0] __________________________________________________________________________________________________ leaky_2 (LeakyReLU) (None, None, None, 3 0 bnorm_2[0][0] __________________________________________________________________________________________________ conv_3 (Conv2D) (None, None, None, 6 18432 leaky_2[0][0] __________________________________________________________________________________________________ bnorm_3 (BatchNormalization) (None, None, None, 6 256 conv_3[0][0] __________________________________________________________________________________________________ leaky_3 (LeakyReLU) (None, None, None, 6 0 bnorm_3[0][0] __________________________________________________________________________________________________ add (Add) (None, None, None, 6 0 leaky_1[0][0] leaky_3[0][0] __________________________________________________________________________________________________ zero_padding2d_1 (ZeroPadding2D (None, None, None, 6 0 add[0][0] __________________________________________________________________________________________________ conv_5 (Conv2D) (None, None, None, 1 73728 zero_padding2d_1[0][0] __________________________________________________________________________________________________ bnorm_5 (BatchNormalization) (None, None, None, 1 512 conv_5[0][0] __________________________________________________________________________________________________ leaky_5 (LeakyReLU) (None, None, None, 1 0 bnorm_5[0][0] __________________________________________________________________________________________________ conv_6 (Conv2D) (None, None, None, 6 8192 leaky_5[0][0] __________________________________________________________________________________________________ bnorm_6 (BatchNormalization) (None, None, None, 6 256 conv_6[0][0] __________________________________________________________________________________________________ leaky_6 (LeakyReLU) (None, None, None, 6 0 bnorm_6[0][0] __________________________________________________________________________________________________ conv_7 (Conv2D) (None, None, None, 1 73728 leaky_6[0][0] __________________________________________________________________________________________________ bnorm_7 (BatchNormalization) (None, None, None, 1 512 conv_7[0][0] __________________________________________________________________________________________________ leaky_7 (LeakyReLU) (None, None, None, 1 0 bnorm_7[0][0] __________________________________________________________________________________________________ add_1 (Add) (None, None, None, 1 0 leaky_5[0][0] leaky_7[0][0] __________________________________________________________________________________________________ conv_9 (Conv2D) (None, None, None, 6 8192 add_1[0][0] __________________________________________________________________________________________________ bnorm_9 (BatchNormalization) (None, None, None, 6 256 conv_9[0][0] __________________________________________________________________________________________________ leaky_9 (LeakyReLU) (None, None, None, 6 0 bnorm_9[0][0] __________________________________________________________________________________________________ conv_10 (Conv2D) (None, None, None, 1 73728 leaky_9[0][0] __________________________________________________________________________________________________ bnorm_10 (BatchNormalization) (None, None, None, 1 512 conv_10[0][0] __________________________________________________________________________________________________ leaky_10 (LeakyReLU) (None, None, None, 1 0 bnorm_10[0][0] __________________________________________________________________________________________________ add_2 (Add) (None, None, None, 1 0 add_1[0][0] leaky_10[0][0] __________________________________________________________________________________________________ zero_padding2d_2 (ZeroPadding2D (None, None, None, 1 0 add_2[0][0] __________________________________________________________________________________________________ conv_12 (Conv2D) (None, None, None, 2 294912 zero_padding2d_2[0][0] __________________________________________________________________________________________________ bnorm_12 (BatchNormalization) (None, None, None, 2 1024 conv_12[0][0] __________________________________________________________________________________________________ leaky_12 (LeakyReLU) (None, None, None, 2 0 bnorm_12[0][0] __________________________________________________________________________________________________ conv_13 (Conv2D) (None, None, None, 1 32768 leaky_12[0][0] __________________________________________________________________________________________________ bnorm_13 (BatchNormalization) (None, None, None, 1 512 conv_13[0][0] __________________________________________________________________________________________________ leaky_13 (LeakyReLU) (None, None, None, 1 0 bnorm_13[0][0] __________________________________________________________________________________________________ conv_14 (Conv2D) (None, None, None, 2 294912 leaky_13[0][0] __________________________________________________________________________________________________ bnorm_14 (BatchNormalization) (None, None, None, 2 1024 conv_14[0][0] __________________________________________________________________________________________________ leaky_14 (LeakyReLU) (None, None, None, 2 0 bnorm_14[0][0] __________________________________________________________________________________________________ add_3 (Add) (None, None, None, 2 0 leaky_12[0][0] leaky_14[0][0] __________________________________________________________________________________________________ conv_16 (Conv2D) (None, None, None, 1 32768 add_3[0][0] __________________________________________________________________________________________________ bnorm_16 (BatchNormalization) (None, None, None, 1 512 conv_16[0][0] __________________________________________________________________________________________________ leaky_16 (LeakyReLU) (None, None, None, 1 0 bnorm_16[0][0] __________________________________________________________________________________________________ conv_17 (Conv2D) (None, None, None, 2 294912 leaky_16[0][0] __________________________________________________________________________________________________ bnorm_17 (BatchNormalization) (None, None, None, 2 1024 conv_17[0][0] __________________________________________________________________________________________________ leaky_17 (LeakyReLU) (None, None, None, 2 0 bnorm_17[0][0] __________________________________________________________________________________________________ add_4 (Add) (None, None, None, 2 0 add_3[0][0] leaky_17[0][0] __________________________________________________________________________________________________ conv_19 (Conv2D) (None, None, None, 1 32768 add_4[0][0] __________________________________________________________________________________________________ bnorm_19 (BatchNormalization) (None, None, None, 1 512 conv_19[0][0] __________________________________________________________________________________________________ leaky_19 (LeakyReLU) (None, None, None, 1 0 bnorm_19[0][0] __________________________________________________________________________________________________ conv_20 (Conv2D) (None, None, None, 2 294912 leaky_19[0][0] __________________________________________________________________________________________________ bnorm_20 (BatchNormalization) (None, None, None, 2 1024 conv_20[0][0] __________________________________________________________________________________________________ leaky_20 (LeakyReLU) (None, None, None, 2 0 bnorm_20[0][0] __________________________________________________________________________________________________ add_5 (Add) (None, None, None, 2 0 add_4[0][0] leaky_20[0][0] __________________________________________________________________________________________________ conv_22 (Conv2D) (None, None, None, 1 32768 add_5[0][0] __________________________________________________________________________________________________ bnorm_22 (BatchNormalization) (None, None, None, 1 512 conv_22[0][0] __________________________________________________________________________________________________ leaky_22 (LeakyReLU) (None, None, None, 1 0 bnorm_22[0][0] __________________________________________________________________________________________________ conv_23 (Conv2D) (None, None, None, 2 294912 leaky_22[0][0] __________________________________________________________________________________________________ bnorm_23 (BatchNormalization) (None, None, None, 2 1024 conv_23[0][0] __________________________________________________________________________________________________ leaky_23 (LeakyReLU) (None, None, None, 2 0 bnorm_23[0][0] __________________________________________________________________________________________________ add_6 (Add) (None, None, None, 2 0 add_5[0][0] leaky_23[0][0] __________________________________________________________________________________________________ conv_25 (Conv2D) (None, None, None, 1 32768 add_6[0][0] __________________________________________________________________________________________________ bnorm_25 (BatchNormalization) (None, None, None, 1 512 conv_25[0][0] __________________________________________________________________________________________________ leaky_25 (LeakyReLU) (None, None, None, 1 0 bnorm_25[0][0] __________________________________________________________________________________________________ conv_26 (Conv2D) (None, None, None, 2 294912 leaky_25[0][0] __________________________________________________________________________________________________ bnorm_26 (BatchNormalization) (None, None, None, 2 1024 conv_26[0][0] __________________________________________________________________________________________________ leaky_26 (LeakyReLU) (None, None, None, 2 0 bnorm_26[0][0] __________________________________________________________________________________________________ add_7 (Add) (None, None, None, 2 0 add_6[0][0] leaky_26[0][0] __________________________________________________________________________________________________ conv_28 (Conv2D) (None, None, None, 1 32768 add_7[0][0] __________________________________________________________________________________________________ bnorm_28 (BatchNormalization) (None, None, None, 1 512 conv_28[0][0] __________________________________________________________________________________________________ leaky_28 (LeakyReLU) (None, None, None, 1 0 bnorm_28[0][0] __________________________________________________________________________________________________ conv_29 (Conv2D) (None, None, None, 2 294912 leaky_28[0][0] __________________________________________________________________________________________________ bnorm_29 (BatchNormalization) (None, None, None, 2 1024 conv_29[0][0] __________________________________________________________________________________________________ leaky_29 (LeakyReLU) (None, None, None, 2 0 bnorm_29[0][0] __________________________________________________________________________________________________ add_8 (Add) (None, None, None, 2 0 add_7[0][0] leaky_29[0][0] __________________________________________________________________________________________________ conv_31 (Conv2D) (None, None, None, 1 32768 add_8[0][0] __________________________________________________________________________________________________ bnorm_31 (BatchNormalization) (None, None, None, 1 512 conv_31[0][0] __________________________________________________________________________________________________ leaky_31 (LeakyReLU) (None, None, None, 1 0 bnorm_31[0][0] __________________________________________________________________________________________________ conv_32 (Conv2D) (None, None, None, 2 294912 leaky_31[0][0] __________________________________________________________________________________________________ bnorm_32 (BatchNormalization) (None, None, None, 2 1024 conv_32[0][0] __________________________________________________________________________________________________ leaky_32 (LeakyReLU) (None, None, None, 2 0 bnorm_32[0][0] __________________________________________________________________________________________________ add_9 (Add) (None, None, None, 2 0 add_8[0][0] leaky_32[0][0] __________________________________________________________________________________________________ conv_34 (Conv2D) (None, None, None, 1 32768 add_9[0][0] __________________________________________________________________________________________________ bnorm_34 (BatchNormalization) (None, None, None, 1 512 conv_34[0][0] __________________________________________________________________________________________________ leaky_34 (LeakyReLU) (None, None, None, 1 0 bnorm_34[0][0] __________________________________________________________________________________________________ conv_35 (Conv2D) (None, None, None, 2 294912 leaky_34[0][0] __________________________________________________________________________________________________ bnorm_35 (BatchNormalization) (None, None, None, 2 1024 conv_35[0][0] __________________________________________________________________________________________________ leaky_35 (LeakyReLU) (None, None, None, 2 0 bnorm_35[0][0] __________________________________________________________________________________________________ add_10 (Add) (None, None, None, 2 0 add_9[0][0] leaky_35[0][0] __________________________________________________________________________________________________ zero_padding2d_3 (ZeroPadding2D (None, None, None, 2 0 add_10[0][0] __________________________________________________________________________________________________ conv_37 (Conv2D) (None, None, None, 5 1179648 zero_padding2d_3[0][0] __________________________________________________________________________________________________ bnorm_37 (BatchNormalization) (None, None, None, 5 2048 conv_37[0][0] __________________________________________________________________________________________________ leaky_37 (LeakyReLU) (None, None, None, 5 0 bnorm_37[0][0] __________________________________________________________________________________________________ conv_38 (Conv2D) (None, None, None, 2 131072 leaky_37[0][0] __________________________________________________________________________________________________ bnorm_38 (BatchNormalization) (None, None, None, 2 1024 conv_38[0][0] __________________________________________________________________________________________________ leaky_38 (LeakyReLU) (None, None, None, 2 0 bnorm_38[0][0] __________________________________________________________________________________________________ conv_39 (Conv2D) (None, None, None, 5 1179648 leaky_38[0][0] __________________________________________________________________________________________________ bnorm_39 (BatchNormalization) (None, None, None, 5 2048 conv_39[0][0] __________________________________________________________________________________________________ leaky_39 (LeakyReLU) (None, None, None, 5 0 bnorm_39[0][0] __________________________________________________________________________________________________ add_11 (Add) (None, None, None, 5 0 leaky_37[0][0] leaky_39[0][0] __________________________________________________________________________________________________ conv_41 (Conv2D) (None, None, None, 2 131072 add_11[0][0] __________________________________________________________________________________________________ bnorm_41 (BatchNormalization) (None, None, None, 2 1024 conv_41[0][0] __________________________________________________________________________________________________ leaky_41 (LeakyReLU) (None, None, None, 2 0 bnorm_41[0][0] __________________________________________________________________________________________________ conv_42 (Conv2D) (None, None, None, 5 1179648 leaky_41[0][0] __________________________________________________________________________________________________ bnorm_42 (BatchNormalization) (None, None, None, 5 2048 conv_42[0][0] __________________________________________________________________________________________________ leaky_42 (LeakyReLU) (None, None, None, 5 0 bnorm_42[0][0] __________________________________________________________________________________________________ add_12 (Add) (None, None, None, 5 0 add_11[0][0] leaky_42[0][0] __________________________________________________________________________________________________ conv_44 (Conv2D) (None, None, None, 2 131072 add_12[0][0] __________________________________________________________________________________________________ bnorm_44 (BatchNormalization) (None, None, None, 2 1024 conv_44[0][0] __________________________________________________________________________________________________ leaky_44 (LeakyReLU) (None, None, None, 2 0 bnorm_44[0][0] __________________________________________________________________________________________________ conv_45 (Conv2D) (None, None, None, 5 1179648 leaky_44[0][0] __________________________________________________________________________________________________ bnorm_45 (BatchNormalization) (None, None, None, 5 2048 conv_45[0][0] __________________________________________________________________________________________________ leaky_45 (LeakyReLU) (None, None, None, 5 0 bnorm_45[0][0] __________________________________________________________________________________________________ add_13 (Add) (None, None, None, 5 0 add_12[0][0] leaky_45[0][0] __________________________________________________________________________________________________ conv_47 (Conv2D) (None, None, None, 2 131072 add_13[0][0] __________________________________________________________________________________________________ bnorm_47 (BatchNormalization) (None, None, None, 2 1024 conv_47[0][0] __________________________________________________________________________________________________ leaky_47 (LeakyReLU) (None, None, None, 2 0 bnorm_47[0][0] __________________________________________________________________________________________________ conv_48 (Conv2D) (None, None, None, 5 1179648 leaky_47[0][0] __________________________________________________________________________________________________ bnorm_48 (BatchNormalization) (None, None, None, 5 2048 conv_48[0][0] __________________________________________________________________________________________________ leaky_48 (LeakyReLU) (None, None, None, 5 0 bnorm_48[0][0] __________________________________________________________________________________________________ add_14 (Add) (None, None, None, 5 0 add_13[0][0] leaky_48[0][0] __________________________________________________________________________________________________ conv_50 (Conv2D) (None, None, None, 2 131072 add_14[0][0] __________________________________________________________________________________________________ bnorm_50 (BatchNormalization) (None, None, None, 2 1024 conv_50[0][0] __________________________________________________________________________________________________ leaky_50 (LeakyReLU) (None, None, None, 2 0 bnorm_50[0][0] __________________________________________________________________________________________________ conv_51 (Conv2D) (None, None, None, 5 1179648 leaky_50[0][0] __________________________________________________________________________________________________ bnorm_51 (BatchNormalization) (None, None, None, 5 2048 conv_51[0][0] __________________________________________________________________________________________________ leaky_51 (LeakyReLU) (None, None, None, 5 0 bnorm_51[0][0] __________________________________________________________________________________________________ add_15 (Add) (None, None, None, 5 0 add_14[0][0] leaky_51[0][0] __________________________________________________________________________________________________ conv_53 (Conv2D) (None, None, None, 2 131072 add_15[0][0] __________________________________________________________________________________________________ bnorm_53 (BatchNormalization) (None, None, None, 2 1024 conv_53[0][0] __________________________________________________________________________________________________ leaky_53 (LeakyReLU) (None, None, None, 2 0 bnorm_53[0][0] __________________________________________________________________________________________________ conv_54 (Conv2D) (None, None, None, 5 1179648 leaky_53[0][0] __________________________________________________________________________________________________ bnorm_54 (BatchNormalization) (None, None, None, 5 2048 conv_54[0][0] __________________________________________________________________________________________________ leaky_54 (LeakyReLU) (None, None, None, 5 0 bnorm_54[0][0] __________________________________________________________________________________________________ add_16 (Add) (None, None, None, 5 0 add_15[0][0] leaky_54[0][0] __________________________________________________________________________________________________ conv_56 (Conv2D) (None, None, None, 2 131072 add_16[0][0] __________________________________________________________________________________________________ bnorm_56 (BatchNormalization) (None, None, None, 2 1024 conv_56[0][0] __________________________________________________________________________________________________ leaky_56 (LeakyReLU) (None, None, None, 2 0 bnorm_56[0][0] __________________________________________________________________________________________________ conv_57 (Conv2D) (None, None, None, 5 1179648 leaky_56[0][0] __________________________________________________________________________________________________ bnorm_57 (BatchNormalization) (None, None, None, 5 2048 conv_57[0][0] __________________________________________________________________________________________________ leaky_57 (LeakyReLU) (None, None, None, 5 0 bnorm_57[0][0] __________________________________________________________________________________________________ add_17 (Add) (None, None, None, 5 0 add_16[0][0] leaky_57[0][0] __________________________________________________________________________________________________ conv_59 (Conv2D) (None, None, None, 2 131072 add_17[0][0] __________________________________________________________________________________________________ bnorm_59 (BatchNormalization) (None, None, None, 2 1024 conv_59[0][0] __________________________________________________________________________________________________ leaky_59 (LeakyReLU) (None, None, None, 2 0 bnorm_59[0][0] __________________________________________________________________________________________________ conv_60 (Conv2D) (None, None, None, 5 1179648 leaky_59[0][0] __________________________________________________________________________________________________ bnorm_60 (BatchNormalization) (None, None, None, 5 2048 conv_60[0][0] __________________________________________________________________________________________________ leaky_60 (LeakyReLU) (None, None, None, 5 0 bnorm_60[0][0] __________________________________________________________________________________________________ add_18 (Add) (None, None, None, 5 0 add_17[0][0] leaky_60[0][0] __________________________________________________________________________________________________ zero_padding2d_4 (ZeroPadding2D (None, None, None, 5 0 add_18[0][0] __________________________________________________________________________________________________ conv_62 (Conv2D) (None, None, None, 1 4718592 zero_padding2d_4[0][0] __________________________________________________________________________________________________ bnorm_62 (BatchNormalization) (None, None, None, 1 4096 conv_62[0][0] __________________________________________________________________________________________________ leaky_62 (LeakyReLU) (None, None, None, 1 0 bnorm_62[0][0] __________________________________________________________________________________________________ conv_63 (Conv2D) (None, None, None, 5 524288 leaky_62[0][0] __________________________________________________________________________________________________ bnorm_63 (BatchNormalization) (None, None, None, 5 2048 conv_63[0][0] __________________________________________________________________________________________________ leaky_63 (LeakyReLU) (None, None, None, 5 0 bnorm_63[0][0] __________________________________________________________________________________________________ conv_64 (Conv2D) (None, None, None, 1 4718592 leaky_63[0][0] __________________________________________________________________________________________________ bnorm_64 (BatchNormalization) (None, None, None, 1 4096 conv_64[0][0] __________________________________________________________________________________________________ leaky_64 (LeakyReLU) (None, None, None, 1 0 bnorm_64[0][0] __________________________________________________________________________________________________ add_19 (Add) (None, None, None, 1 0 leaky_62[0][0] leaky_64[0][0] __________________________________________________________________________________________________ conv_66 (Conv2D) (None, None, None, 5 524288 add_19[0][0] __________________________________________________________________________________________________ bnorm_66 (BatchNormalization) (None, None, None, 5 2048 conv_66[0][0] __________________________________________________________________________________________________ leaky_66 (LeakyReLU) (None, None, None, 5 0 bnorm_66[0][0] __________________________________________________________________________________________________ conv_67 (Conv2D) (None, None, None, 1 4718592 leaky_66[0][0] __________________________________________________________________________________________________ bnorm_67 (BatchNormalization) (None, None, None, 1 4096 conv_67[0][0] __________________________________________________________________________________________________ leaky_67 (LeakyReLU) (None, None, None, 1 0 bnorm_67[0][0] __________________________________________________________________________________________________ add_20 (Add) (None, None, None, 1 0 add_19[0][0] leaky_67[0][0] __________________________________________________________________________________________________ conv_69 (Conv2D) (None, None, None, 5 524288 add_20[0][0] __________________________________________________________________________________________________ bnorm_69 (BatchNormalization) (None, None, None, 5 2048 conv_69[0][0] __________________________________________________________________________________________________ leaky_69 (LeakyReLU) (None, None, None, 5 0 bnorm_69[0][0] __________________________________________________________________________________________________ conv_70 (Conv2D) (None, None, None, 1 4718592 leaky_69[0][0] __________________________________________________________________________________________________ bnorm_70 (BatchNormalization) (None, None, None, 1 4096 conv_70[0][0] __________________________________________________________________________________________________ leaky_70 (LeakyReLU) (None, None, None, 1 0 bnorm_70[0][0] __________________________________________________________________________________________________ add_21 (Add) (None, None, None, 1 0 add_20[0][0] leaky_70[0][0] __________________________________________________________________________________________________ conv_72 (Conv2D) (None, None, None, 5 524288 add_21[0][0] __________________________________________________________________________________________________ bnorm_72 (BatchNormalization) (None, None, None, 5 2048 conv_72[0][0] __________________________________________________________________________________________________ leaky_72 (LeakyReLU) (None, None, None, 5 0 bnorm_72[0][0] __________________________________________________________________________________________________ conv_73 (Conv2D) (None, None, None, 1 4718592 leaky_72[0][0] __________________________________________________________________________________________________ bnorm_73 (BatchNormalization) (None, None, None, 1 4096 conv_73[0][0] __________________________________________________________________________________________________ leaky_73 (LeakyReLU) (None, None, None, 1 0 bnorm_73[0][0] __________________________________________________________________________________________________ add_22 (Add) (None, None, None, 1 0 add_21[0][0] leaky_73[0][0] __________________________________________________________________________________________________ conv_75 (Conv2D) (None, None, None, 5 524288 add_22[0][0] __________________________________________________________________________________________________ bnorm_75 (BatchNormalization) (None, None, None, 5 2048 conv_75[0][0] __________________________________________________________________________________________________ leaky_75 (LeakyReLU) (None, None, None, 5 0 bnorm_75[0][0] __________________________________________________________________________________________________ conv_76 (Conv2D) (None, None, None, 1 4718592 leaky_75[0][0] __________________________________________________________________________________________________ bnorm_76 (BatchNormalization) (None, None, None, 1 4096 conv_76[0][0] __________________________________________________________________________________________________ leaky_76 (LeakyReLU) (None, None, None, 1 0 bnorm_76[0][0] __________________________________________________________________________________________________ conv_77 (Conv2D) (None, None, None, 5 524288 leaky_76[0][0] __________________________________________________________________________________________________ bnorm_77 (BatchNormalization) (None, None, None, 5 2048 conv_77[0][0] __________________________________________________________________________________________________ leaky_77 (LeakyReLU) (None, None, None, 5 0 bnorm_77[0][0] __________________________________________________________________________________________________ conv_78 (Conv2D) (None, None, None, 1 4718592 leaky_77[0][0] __________________________________________________________________________________________________ bnorm_78 (BatchNormalization) (None, None, None, 1 4096 conv_78[0][0] __________________________________________________________________________________________________ leaky_78 (LeakyReLU) (None, None, None, 1 0 bnorm_78[0][0] __________________________________________________________________________________________________ conv_79 (Conv2D) (None, None, None, 5 524288 leaky_78[0][0] __________________________________________________________________________________________________ bnorm_79 (BatchNormalization) (None, None, None, 5 2048 conv_79[0][0] __________________________________________________________________________________________________ leaky_79 (LeakyReLU) (None, None, None, 5 0 bnorm_79[0][0] __________________________________________________________________________________________________ conv_84 (Conv2D) (None, None, None, 2 131072 leaky_79[0][0] __________________________________________________________________________________________________ bnorm_84 (BatchNormalization) (None, None, None, 2 1024 conv_84[0][0] __________________________________________________________________________________________________ leaky_84 (LeakyReLU) (None, None, None, 2 0 bnorm_84[0][0] __________________________________________________________________________________________________ up_sampling2d (UpSampling2D) (None, None, None, 2 0 leaky_84[0][0] __________________________________________________________________________________________________ concatenate (Concatenate) (None, None, None, 7 0 up_sampling2d[0][0] add_18[0][0] __________________________________________________________________________________________________ conv_87 (Conv2D) (None, None, None, 2 196608 concatenate[0][0] __________________________________________________________________________________________________ bnorm_87 (BatchNormalization) (None, None, None, 2 1024 conv_87[0][0] __________________________________________________________________________________________________ leaky_87 (LeakyReLU) (None, None, None, 2 0 bnorm_87[0][0] __________________________________________________________________________________________________ conv_88 (Conv2D) (None, None, None, 5 1179648 leaky_87[0][0] __________________________________________________________________________________________________ bnorm_88 (BatchNormalization) (None, None, None, 5 2048 conv_88[0][0] __________________________________________________________________________________________________ leaky_88 (LeakyReLU) (None, None, None, 5 0 bnorm_88[0][0] __________________________________________________________________________________________________ conv_89 (Conv2D) (None, None, None, 2 131072 leaky_88[0][0] __________________________________________________________________________________________________ bnorm_89 (BatchNormalization) (None, None, None, 2 1024 conv_89[0][0] __________________________________________________________________________________________________ leaky_89 (LeakyReLU) (None, None, None, 2 0 bnorm_89[0][0] __________________________________________________________________________________________________ conv_90 (Conv2D) (None, None, None, 5 1179648 leaky_89[0][0] __________________________________________________________________________________________________ bnorm_90 (BatchNormalization) (None, None, None, 5 2048 conv_90[0][0] __________________________________________________________________________________________________ leaky_90 (LeakyReLU) (None, None, None, 5 0 bnorm_90[0][0] __________________________________________________________________________________________________ conv_91 (Conv2D) (None, None, None, 2 131072 leaky_90[0][0] __________________________________________________________________________________________________ bnorm_91 (BatchNormalization) (None, None, None, 2 1024 conv_91[0][0] __________________________________________________________________________________________________ leaky_91 (LeakyReLU) (None, None, None, 2 0 bnorm_91[0][0] __________________________________________________________________________________________________ conv_96 (Conv2D) (None, None, None, 1 32768 leaky_91[0][0] __________________________________________________________________________________________________ bnorm_96 (BatchNormalization) (None, None, None, 1 512 conv_96[0][0] __________________________________________________________________________________________________ leaky_96 (LeakyReLU) (None, None, None, 1 0 bnorm_96[0][0] __________________________________________________________________________________________________ up_sampling2d_1 (UpSampling2D) (None, None, None, 1 0 leaky_96[0][0] __________________________________________________________________________________________________ concatenate_1 (Concatenate) (None, None, None, 3 0 up_sampling2d_1[0][0] add_10[0][0] __________________________________________________________________________________________________ conv_99 (Conv2D) (None, None, None, 1 49152 concatenate_1[0][0] __________________________________________________________________________________________________ bnorm_99 (BatchNormalization) (None, None, None, 1 512 conv_99[0][0] __________________________________________________________________________________________________ leaky_99 (LeakyReLU) (None, None, None, 1 0 bnorm_99[0][0] __________________________________________________________________________________________________ conv_100 (Conv2D) (None, None, None, 2 294912 leaky_99[0][0] __________________________________________________________________________________________________ bnorm_100 (BatchNormalization) (None, None, None, 2 1024 conv_100[0][0] __________________________________________________________________________________________________ leaky_100 (LeakyReLU) (None, None, None, 2 0 bnorm_100[0][0] __________________________________________________________________________________________________ conv_101 (Conv2D) (None, None, None, 1 32768 leaky_100[0][0] __________________________________________________________________________________________________ bnorm_101 (BatchNormalization) (None, None, None, 1 512 conv_101[0][0] __________________________________________________________________________________________________ leaky_101 (LeakyReLU) (None, None, None, 1 0 bnorm_101[0][0] __________________________________________________________________________________________________ conv_102 (Conv2D) (None, None, None, 2 294912 leaky_101[0][0] __________________________________________________________________________________________________ bnorm_102 (BatchNormalization) (None, None, None, 2 1024 conv_102[0][0] __________________________________________________________________________________________________ leaky_102 (LeakyReLU) (None, None, None, 2 0 bnorm_102[0][0] __________________________________________________________________________________________________ conv_103 (Conv2D) (None, None, None, 1 32768 leaky_102[0][0] __________________________________________________________________________________________________ bnorm_103 (BatchNormalization) (None, None, None, 1 512 conv_103[0][0] __________________________________________________________________________________________________ leaky_103 (LeakyReLU) (None, None, None, 1 0 bnorm_103[0][0] __________________________________________________________________________________________________ conv_80 (Conv2D) (None, None, None, 1 4718592 leaky_79[0][0] __________________________________________________________________________________________________ conv_92 (Conv2D) (None, None, None, 5 1179648 leaky_91[0][0] __________________________________________________________________________________________________ conv_104 (Conv2D) (None, None, None, 2 294912 leaky_103[0][0] __________________________________________________________________________________________________ bnorm_80 (BatchNormalization) (None, None, None, 1 4096 conv_80[0][0] __________________________________________________________________________________________________ bnorm_92 (BatchNormalization) (None, None, None, 5 2048 conv_92[0][0] __________________________________________________________________________________________________ bnorm_104 (BatchNormalization) (None, None, None, 2 1024 conv_104[0][0] __________________________________________________________________________________________________ leaky_80 (LeakyReLU) (None, None, None, 1 0 bnorm_80[0][0] __________________________________________________________________________________________________ leaky_92 (LeakyReLU) (None, None, None, 5 0 bnorm_92[0][0] __________________________________________________________________________________________________ leaky_104 (LeakyReLU) (None, None, None, 2 0 bnorm_104[0][0] __________________________________________________________________________________________________ conv_81 (Conv2D) (None, None, None, 2 261375 leaky_80[0][0] __________________________________________________________________________________________________ conv_93 (Conv2D) (None, None, None, 2 130815 leaky_92[0][0] __________________________________________________________________________________________________ conv_105 (Conv2D) (None, None, None, 2 65535 leaky_104[0][0] ================================================================================================== Total params: 62,001,757 Trainable params: 61,949,149 Non-trainable params: 52,608 __________________________________________________________________________________________________
Loading the model and its configuration for our object detection.¶
In [5]:
# Loading Yolov3
net = cv2.dnn.readNet("yolov3.weights", "cfg/yolov3.cfg")
classes = []
# Reading the class names which we are focussed on predicting
with open("coco.names", "r") as f:
classes = [line.strip() for line in f.readlines()]
layer_names = net.getLayerNames()
output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()]
# Defining font and bounding box colour
colors = np.random.uniform(0, 255, size=(len(classes), 3))
font = cv2.FONT_HERSHEY_PLAIN
Visualizing the results¶
In [6]:
# Loading image
img = cv2.imread("test.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
frame = cv2.resize(img, None, fx=0.4, fy=0.4)
height, width, channels = frame.shape
# Detecting objects
blob = cv2.dnn.blobFromImage(frame, 0.00392, (416, 416), (0, 0, 0), True, crop=False)
net.setInput(blob)
outs = net.forward(output_layers)
# Showing boxes on the images whose confidence of predicting an object is higher than a particular threshold
class_ids = []
confidences = []
boxes = []
for out in outs:
for detection in out:
scores = detection[5:]
class_id = np.argmax(scores)
confidence = scores[class_id]
if confidence > 0.2:
# Object detected
center_x = int(detection[0] * width)
center_y = int(detection[1] * height)
w = int(detection[2] * width)
h = int(detection[3] * height)
# Rectangle coordinates
x = int(center_x - w / 2)
y = int(center_y - h / 2)
boxes.append([x, y, w, h])
confidences.append(float(confidence))
class_ids.append(class_id)
indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.8, 0.3)
# Building the boxes on top of the image
for i in range(len(boxes)):
if i in indexes:
x, y, w, h = boxes[i]
label = str(classes[class_ids[i]])
confidence = confidences[i]
color = colors[class_ids[i]]
cv2.rectangle(frame, (x, y), (x + w, y + h), color, 2)
print("Detected object in Image")
plt.imshow(frame)
Detected object in Image
Out[6]:
<matplotlib.image.AxesImage at 0x7f069b2a64e0>
In [7]:
# Loading image
img = cv2.imread("test.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
frame = cv2.resize(img, None, fx=0.4, fy=0.4)
height, width, channels = frame.shape
# Detecting objects
blob = cv2.dnn.blobFromImage(frame, 0.00392, (416, 416), (0, 0, 0), True, crop=False)
net.setInput(blob)
outs = net.forward(output_layers)
# Showing boxes on the images whose confidence of predicting an object is higher than a particular threshold
class_ids = []
confidences = []
boxes = []
for out in outs:
for detection in out:
scores = detection[5:]
class_id = np.argmax(scores)
confidence = scores[class_id]
if confidence > 0.2:
# Object detected
center_x = int(detection[0] * width)
center_y = int(detection[1] * height)
w = int(detection[2] * width)
h = int(detection[3] * height)
# Rectangle coordinates
x = int(center_x - w / 2)
y = int(center_y - h / 2)
boxes.append([x, y, w, h])
confidences.append(float(confidence))
class_ids.append(class_id)
indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.8, 0.3)
# Building the boxes on top of the image
for i in range(len(boxes)):
if i in indexes:
x, y, w, h = boxes[i]
label = str(classes[class_ids[i]])
confidence = confidences[i]
color = colors[class_ids[i]]
cv2.rectangle(frame, (x, y), (x + w, y + h), color, 2)
print("Detected object in Image")
plt.imshow(frame)
Detected object in Image
Out[7]:
<matplotlib.image.AxesImage at 0x7f062c0b0240>
In [8]:
# Loading image
img = cv2.imread("test.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
frame = cv2.resize(img, None, fx=0.4, fy=0.4)
height, width, channels = frame.shape
# Detecting objects
blob = cv2.dnn.blobFromImage(frame, 0.00392, (416, 416), (0, 0, 0), True, crop=False)
net.setInput(blob)
outs = net.forward(output_layers)
# Showing boxes on the images whose confidence of predicting an object is higher than a particular threshold
class_ids = []
confidences = []
boxes = []
for out in outs:
for detection in out:
scores = detection[5:]
class_id = np.argmax(scores)
confidence = scores[class_id]
if confidence > 0.2:
# Object detected
center_x = int(detection[0] * width)
center_y = int(detection[1] * height)
w = int(detection[2] * width)
h = int(detection[3] * height)
# Rectangle coordinates
x = int(center_x - w / 2)
y = int(center_y - h / 2)
boxes.append([x, y, w, h])
confidences.append(float(confidence))
class_ids.append(class_id)
indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.8, 0.3)
# Building the boxes on top of the image
for i in range(len(boxes)):
if i in indexes:
x, y, w, h = boxes[i]
label = str(classes[class_ids[i]])
confidence = confidences[i]
color = colors[class_ids[i]]
cv2.rectangle(frame, (x, y), (x + w, y + h), color, 2)
print("Detected object in Image")
plt.imshow(frame)
Detected object in Image
Out[8]:
<matplotlib.image.AxesImage at 0x7f06085e0208>
Compiling the model using DeepC Compiler¶
In [ ]:
!deepCC model.h5
[INFO] Reading [keras model] 'model.h5' [SUCCESS] Saved 'model.onnx' [INFO] Reading [onnx model] 'model.onnx' [INFO] Model info: ir_vesion : 5 doc : [WARNING] [ONNX]: graph-node conv_1's attribute auto_pad has no meaningful data. [WARNING] [ONNX]: graph-node conv_5's attribute auto_pad has no meaningful data. [WARNING] [ONNX]: graph-node conv_12's attribute auto_pad has no meaningful data. [WARNING] [ONNX]: graph-node conv_37's attribute auto_pad has no meaningful data. [WARNING] [ONNX]: graph-node conv_62's attribute auto_pad has no meaningful data. [WARNING] [ONNX]: terminal (input/output) input_1's shape is less than 1. Changing it to 1. [WARNING] [ONNX]: terminal (input/output) input_1's shape is less than 1. Changing it to 1. [WARNING] [ONNX]: terminal (input/output) input_1's shape is less than 1. Changing it to 1. [WARNING] [ONNX]: terminal (input/output) conv_81's shape is less than 1. Changing it to 1. [WARNING] [ONNX]: terminal (input/output) conv_81's shape is less than 1. Changing it to 1. [WARNING] [ONNX]: terminal (input/output) conv_81's shape is less than 1. Changing it to 1. WARN (GRAPH): found operator node with the same name (conv_81) as io node. [WARNING] [ONNX]: terminal (input/output) conv_93's shape is less than 1. Changing it to 1. [WARNING] [ONNX]: terminal (input/output) conv_93's shape is less than 1. Changing it to 1. [WARNING] [ONNX]: terminal (input/output) conv_93's shape is less than 1. Changing it to 1. WARN (GRAPH): found operator node with the same name (conv_93) as io node. [WARNING] [ONNX]: terminal (input/output) conv_105's shape is less than 1. Changing it to 1. [WARNING] [ONNX]: terminal (input/output) conv_105's shape is less than 1. Changing it to 1. [WARNING] [ONNX]: terminal (input/output) conv_105's shape is less than 1. Changing it to 1. WARN (GRAPH): found operator node with the same name (conv_105) as io node. [INFO] Running DNNC graph sanity check ... [SUCCESS] Passed sanity check. [INFO] Writing C++ file 'model_deepC/model.cpp' [INFO] deepSea model files are ready in 'model_deepC/' [RUNNING COMMAND] g++ -std=c++11 -O3 -fno-rtti -fno-exceptions -I. -I/opt/tljh/user/lib/python3.7/site-packages/deepC-0.13-py3.7-linux-x86_64.egg/deepC/include -isystem /opt/tljh/user/lib/python3.7/site-packages/deepC-0.13-py3.7-linux-x86_64.egg/deepC/packages/eigen-eigen-323c052e1731 model_deepC/model.cpp -o model_deepC/model.exe