diff --git a/CoreMLConverter_ReadMe.md b/CoreMLConverter_ReadMe.md
new file mode 100644
index 00000000..a8868a8c
--- /dev/null
+++ b/CoreMLConverter_ReadMe.md
@@ -0,0 +1,12 @@
+# Steps to run this
+
+1) Create a virtual enviornment
+2) Activate the enviorment
+3) pip install -r requirements.txt
+4) run save_model.py, After running it under checkpoints folder **ppe_yolov4-tiny-608-24thAug** should be generated.
+ This is the keras checkpoint which we'll use in out jupyter notebook
+5) After running the save model launch **PortExistingModelToCoreML.ipynb** . After running the final cell of jupyter
+ Predictions should be visible
+ 
+
+
\ No newline at end of file
diff --git a/PortExistingModelToCoreML.ipynb b/PortExistingModelToCoreML.ipynb
new file mode 100644
index 00000000..cbce78e9
--- /dev/null
+++ b/PortExistingModelToCoreML.ipynb
@@ -0,0 +1,918 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "ece314a9",
+ "metadata": {},
+ "source": [
+ "# imports"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "eb767bd9",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "TensorFlow version is: 2.3.1\n",
+ "Eager execution is: True\n",
+ "Keras version is: 2.4.0\n"
+ ]
+ }
+ ],
+ "source": [
+ "import tensorflow as tf\n",
+ "from tensorflow.keras.models import load_model, Model\n",
+ "import numpy as np\n",
+ "\n",
+ "from tensorflow.keras.layers import Lambda\n",
+ "from tensorflow import slice\n",
+ "\n",
+ "print(\"TensorFlow version is: {}\".format(tf.__version__))\n",
+ "print(\"Eager execution is: {}\".format(tf.executing_eagerly()))\n",
+ "print(\"Keras version is: {}\".format(tf.keras.__version__))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "26cf5203",
+ "metadata": {},
+ "source": [
+ "# load model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "71edebdd",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "2022-08-24 19:12:00.027384: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN)to use the following CPU instructions in performance-critical operations: AVX2 FMA\n",
+ "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
+ "2022-08-24 19:12:00.043642: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x7fa8f5b424d0 initialized for platform Host (this does not guarantee that XLA will be used). Devices:\n",
+ "2022-08-24 19:12:00.043657: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "WARNING:tensorflow:No training configuration found in save file, so the model was *not* compiled. Compile it manually.\n"
+ ]
+ }
+ ],
+ "source": [
+ "yolo_tiny_model = load_model('checkpoints/ppe_yolov4-tiny-608-24thAug')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "2455137b",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Model: \"functional_1\"\n",
+ "__________________________________________________________________________________________________\n",
+ "Layer (type) Output Shape Param # Connected to \n",
+ "==================================================================================================\n",
+ "input_1 (InputLayer) [(None, 608, 608, 3) 0 \n",
+ "__________________________________________________________________________________________________\n",
+ "zero_padding2d (ZeroPadding2D) (None, 609, 609, 3) 0 input_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d (Conv2D) (None, 304, 304, 32) 864 zero_padding2d[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization (BatchNorma (None, 304, 304, 32) 128 conv2d[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu (TensorFl (None, 304, 304, 32) 0 batch_normalization[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "zero_padding2d_1 (ZeroPadding2D (None, 305, 305, 32) 0 tf_op_layer_LeakyRelu[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_1 (Conv2D) (None, 152, 152, 64) 18432 zero_padding2d_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_1 (BatchNor (None, 152, 152, 64) 256 conv2d_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_1 (Tensor (None, 152, 152, 64) 0 batch_normalization_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_2 (Conv2D) (None, 152, 152, 64) 36864 tf_op_layer_LeakyRelu_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_2 (BatchNor (None, 152, 152, 64) 256 conv2d_2[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_2 (Tensor (None, 152, 152, 64) 0 batch_normalization_2[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_split (TensorFlowOp [(None, 152, 152, 32 0 tf_op_layer_LeakyRelu_2[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_3 (Conv2D) (None, 152, 152, 32) 9216 tf_op_layer_split[0][1] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_3 (BatchNor (None, 152, 152, 32) 128 conv2d_3[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_3 (Tensor (None, 152, 152, 32) 0 batch_normalization_3[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_4 (Conv2D) (None, 152, 152, 32) 9216 tf_op_layer_LeakyRelu_3[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_4 (BatchNor (None, 152, 152, 32) 128 conv2d_4[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_4 (Tensor (None, 152, 152, 32) 0 batch_normalization_4[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat (TensorFlowO (None, 152, 152, 64) 0 tf_op_layer_LeakyRelu_4[0][0] \n",
+ " tf_op_layer_LeakyRelu_3[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_5 (Conv2D) (None, 152, 152, 64) 4096 tf_op_layer_concat[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_5 (BatchNor (None, 152, 152, 64) 256 conv2d_5[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_5 (Tensor (None, 152, 152, 64) 0 batch_normalization_5[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat_1 (TensorFlo (None, 152, 152, 128 0 tf_op_layer_LeakyRelu_2[0][0] \n",
+ " tf_op_layer_LeakyRelu_5[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "max_pooling2d (MaxPooling2D) (None, 76, 76, 128) 0 tf_op_layer_concat_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_6 (Conv2D) (None, 76, 76, 128) 147456 max_pooling2d[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_6 (BatchNor (None, 76, 76, 128) 512 conv2d_6[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_6 (Tensor (None, 76, 76, 128) 0 batch_normalization_6[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_split_1 (TensorFlow [(None, 76, 76, 64), 0 tf_op_layer_LeakyRelu_6[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_7 (Conv2D) (None, 76, 76, 64) 36864 tf_op_layer_split_1[0][1] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_7 (BatchNor (None, 76, 76, 64) 256 conv2d_7[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_7 (Tensor (None, 76, 76, 64) 0 batch_normalization_7[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_8 (Conv2D) (None, 76, 76, 64) 36864 tf_op_layer_LeakyRelu_7[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_8 (BatchNor (None, 76, 76, 64) 256 conv2d_8[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_8 (Tensor (None, 76, 76, 64) 0 batch_normalization_8[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat_2 (TensorFlo (None, 76, 76, 128) 0 tf_op_layer_LeakyRelu_8[0][0] \n",
+ " tf_op_layer_LeakyRelu_7[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_9 (Conv2D) (None, 76, 76, 128) 16384 tf_op_layer_concat_2[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_9 (BatchNor (None, 76, 76, 128) 512 conv2d_9[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_9 (Tensor (None, 76, 76, 128) 0 batch_normalization_9[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat_3 (TensorFlo (None, 76, 76, 256) 0 tf_op_layer_LeakyRelu_6[0][0] \n",
+ " tf_op_layer_LeakyRelu_9[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "max_pooling2d_1 (MaxPooling2D) (None, 38, 38, 256) 0 tf_op_layer_concat_3[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_10 (Conv2D) (None, 38, 38, 256) 589824 max_pooling2d_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_10 (BatchNo (None, 38, 38, 256) 1024 conv2d_10[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_10 (Tenso (None, 38, 38, 256) 0 batch_normalization_10[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_split_2 (TensorFlow [(None, 38, 38, 128) 0 tf_op_layer_LeakyRelu_10[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_11 (Conv2D) (None, 38, 38, 128) 147456 tf_op_layer_split_2[0][1] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_11 (BatchNo (None, 38, 38, 128) 512 conv2d_11[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_11 (Tenso (None, 38, 38, 128) 0 batch_normalization_11[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_12 (Conv2D) (None, 38, 38, 128) 147456 tf_op_layer_LeakyRelu_11[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_12 (BatchNo (None, 38, 38, 128) 512 conv2d_12[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_12 (Tenso (None, 38, 38, 128) 0 batch_normalization_12[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat_4 (TensorFlo (None, 38, 38, 256) 0 tf_op_layer_LeakyRelu_12[0][0] \n",
+ " tf_op_layer_LeakyRelu_11[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_13 (Conv2D) (None, 38, 38, 256) 65536 tf_op_layer_concat_4[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_13 (BatchNo (None, 38, 38, 256) 1024 conv2d_13[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_13 (Tenso (None, 38, 38, 256) 0 batch_normalization_13[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat_5 (TensorFlo (None, 38, 38, 512) 0 tf_op_layer_LeakyRelu_10[0][0] \n",
+ " tf_op_layer_LeakyRelu_13[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "max_pooling2d_2 (MaxPooling2D) (None, 19, 19, 512) 0 tf_op_layer_concat_5[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_14 (Conv2D) (None, 19, 19, 512) 2359296 max_pooling2d_2[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_14 (BatchNo (None, 19, 19, 512) 2048 conv2d_14[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_14 (Tenso (None, 19, 19, 512) 0 batch_normalization_14[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_15 (Conv2D) (None, 19, 19, 256) 131072 tf_op_layer_LeakyRelu_14[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_15 (BatchNo (None, 19, 19, 256) 1024 conv2d_15[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_15 (Tenso (None, 19, 19, 256) 0 batch_normalization_15[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_18 (Conv2D) (None, 19, 19, 128) 32768 tf_op_layer_LeakyRelu_15[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_17 (BatchNo (None, 19, 19, 128) 512 conv2d_18[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_17 (Tenso (None, 19, 19, 128) 0 batch_normalization_17[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_ResizeBilinear (Ten (None, 38, 38, 128) 0 tf_op_layer_LeakyRelu_17[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat_6 (TensorFlo (None, 38, 38, 384) 0 tf_op_layer_ResizeBilinear[0][0] \n",
+ " tf_op_layer_LeakyRelu_13[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_19 (Conv2D) (None, 38, 38, 256) 884736 tf_op_layer_concat_6[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_16 (Conv2D) (None, 19, 19, 512) 1179648 tf_op_layer_LeakyRelu_15[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_18 (BatchNo (None, 38, 38, 256) 1024 conv2d_19[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "batch_normalization_16 (BatchNo (None, 19, 19, 512) 2048 conv2d_16[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_18 (Tenso (None, 38, 38, 256) 0 batch_normalization_18[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_LeakyRelu_16 (Tenso (None, 19, 19, 512) 0 batch_normalization_16[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_20 (Conv2D) (None, 38, 38, 24) 6168 tf_op_layer_LeakyRelu_18[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "conv2d_17 (Conv2D) (None, 19, 19, 24) 12312 tf_op_layer_LeakyRelu_16[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Shape (TensorFlowOp (4,) 0 conv2d_20[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Shape_1 (TensorFlow (4,) 0 conv2d_17[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_strided_slice (Tens () 0 tf_op_layer_Shape[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_strided_slice_1 (Te () 0 tf_op_layer_Shape_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape/shape (Tens (5,) 0 tf_op_layer_strided_slice[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_3/shape (Te (5,) 0 tf_op_layer_strided_slice_1[0][0]\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape (TensorFlow (None, 38, 38, 3, 8) 0 conv2d_20[0][0] \n",
+ " tf_op_layer_Reshape/shape[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_3 (TensorFl (None, 19, 19, 3, 8) 0 conv2d_17[0][0] \n",
+ " tf_op_layer_Reshape_3/shape[0][0]\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_split_3 (TensorFlow [(None, 38, 38, 3, 2 0 tf_op_layer_Reshape[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_split_4 (TensorFlow [(None, 19, 19, 3, 2 0 tf_op_layer_Reshape_3[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Sigmoid (TensorFlow (None, 38, 38, 3, 2) 0 tf_op_layer_split_3[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Tile/multiples (Ten (5,) 0 tf_op_layer_strided_slice[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Sigmoid_3 (TensorFl (None, 19, 19, 3, 2) 0 tf_op_layer_split_4[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Tile_1/multiples (T (5,) 0 tf_op_layer_strided_slice_1[0][0]\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Mul (TensorFlowOpLa (None, 38, 38, 3, 2) 0 tf_op_layer_Sigmoid[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Tile (TensorFlowOpL (None, 38, 38, 3, 2) 0 tf_op_layer_Tile/multiples[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Mul_4 (TensorFlowOp (None, 19, 19, 3, 2) 0 tf_op_layer_Sigmoid_3[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Tile_1 (TensorFlowO (None, 19, 19, 3, 2) 0 tf_op_layer_Tile_1/multiples[0][0\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Sub (TensorFlowOpLa (None, 38, 38, 3, 2) 0 tf_op_layer_Mul[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Cast (TensorFlowOpL (None, 38, 38, 3, 2) 0 tf_op_layer_Tile[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Sub_1 (TensorFlowOp (None, 19, 19, 3, 2) 0 tf_op_layer_Mul_4[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Cast_1 (TensorFlowO (None, 19, 19, 3, 2) 0 tf_op_layer_Tile_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_AddV2 (TensorFlowOp (None, 38, 38, 3, 2) 0 tf_op_layer_Sub[0][0] \n",
+ " tf_op_layer_Cast[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Exp (TensorFlowOpLa (None, 38, 38, 3, 2) 0 tf_op_layer_split_3[0][1] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_AddV2_1 (TensorFlow (None, 19, 19, 3, 2) 0 tf_op_layer_Sub_1[0][0] \n",
+ " tf_op_layer_Cast_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Exp_1 (TensorFlowOp (None, 19, 19, 3, 2) 0 tf_op_layer_split_4[0][1] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Mul_1 (TensorFlowOp (None, 38, 38, 3, 2) 0 tf_op_layer_AddV2[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Mul_2 (TensorFlowOp (None, 38, 38, 3, 2) 0 tf_op_layer_Exp[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Mul_5 (TensorFlowOp (None, 19, 19, 3, 2) 0 tf_op_layer_AddV2_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Mul_6 (TensorFlowOp (None, 19, 19, 3, 2) 0 tf_op_layer_Exp_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat_7 (TensorFlo (None, 38, 38, 3, 4) 0 tf_op_layer_Mul_1[0][0] \n",
+ " tf_op_layer_Mul_2[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_2/shape (Te (3,) 0 tf_op_layer_strided_slice[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat_8 (TensorFlo (None, 19, 19, 3, 4) 0 tf_op_layer_Mul_5[0][0] \n",
+ " tf_op_layer_Mul_6[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_5/shape (Te (3,) 0 tf_op_layer_strided_slice_1[0][0]\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Sigmoid_1 (TensorFl (None, 38, 38, 3, 1) 0 tf_op_layer_split_3[0][2] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Sigmoid_2 (TensorFl (None, 38, 38, 3, 3) 0 tf_op_layer_split_3[0][3] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Sigmoid_4 (TensorFl (None, 19, 19, 3, 1) 0 tf_op_layer_split_4[0][2] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Sigmoid_5 (TensorFl (None, 19, 19, 3, 3) 0 tf_op_layer_split_4[0][3] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_2 (TensorFl (None, None, 4) 0 tf_op_layer_concat_7[0][0] \n",
+ " tf_op_layer_Reshape_2/shape[0][0]\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_5 (TensorFl (None, None, 4) 0 tf_op_layer_concat_8[0][0] \n",
+ " tf_op_layer_Reshape_5/shape[0][0]\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Mul_3 (TensorFlowOp (None, 38, 38, 3, 3) 0 tf_op_layer_Sigmoid_1[0][0] \n",
+ " tf_op_layer_Sigmoid_2[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_1/shape (Te (3,) 0 tf_op_layer_strided_slice[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Mul_7 (TensorFlowOp (None, 19, 19, 3, 3) 0 tf_op_layer_Sigmoid_4[0][0] \n",
+ " tf_op_layer_Sigmoid_5[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_4/shape (Te (3,) 0 tf_op_layer_strided_slice_1[0][0]\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat_9 (TensorFlo (None, None, 4) 0 tf_op_layer_Reshape_2[0][0] \n",
+ " tf_op_layer_Reshape_5[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_1 (TensorFl (None, None, 3) 0 tf_op_layer_Mul_3[0][0] \n",
+ " tf_op_layer_Reshape_1/shape[0][0]\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_4 (TensorFl (None, None, 3) 0 tf_op_layer_Mul_7[0][0] \n",
+ " tf_op_layer_Reshape_4/shape[0][0]\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Shape_2 (TensorFlow (3,) 0 tf_op_layer_concat_9[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat_10 (TensorFl (None, None, 3) 0 tf_op_layer_Reshape_1[0][0] \n",
+ " tf_op_layer_Reshape_4[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_strided_slice_2 (Te (2,) 0 tf_op_layer_Shape_2[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Max (TensorFlowOpLa (None, None) 0 tf_op_layer_concat_10[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Shape_5 (TensorFlow (3,) 0 tf_op_layer_concat_10[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Shape_3 (TensorFlow (3,) 0 tf_op_layer_concat_9[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Prod (TensorFlowOpL () 0 tf_op_layer_strided_slice_2[0][0]\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Shape_4 (TensorFlow (3,) 0 tf_op_layer_concat_9[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_GreaterEqual (Tenso (None, None) 0 tf_op_layer_Max[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_strided_slice_5 (Te (2,) 0 tf_op_layer_Shape_5[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_strided_slice_3 (Te (0,) 0 tf_op_layer_Shape_3[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat_11/values_1 (1,) 0 tf_op_layer_Prod[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_strided_slice_4 (Te (1,) 0 tf_op_layer_Shape_4[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_7 (TensorFl (None,) 0 tf_op_layer_GreaterEqual[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Shape_6 (TensorFlow (3,) 0 tf_op_layer_concat_10[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Prod_1 (TensorFlowO () 0 tf_op_layer_strided_slice_5[0][0]\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Shape_7 (TensorFlow (3,) 0 tf_op_layer_concat_10[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat_11 (TensorFl (2,) 0 tf_op_layer_strided_slice_3[0][0]\n",
+ " tf_op_layer_concat_11/values_1[0]\n",
+ " tf_op_layer_strided_slice_4[0][0]\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Where (TensorFlowOp (None, 1) 0 tf_op_layer_Reshape_7[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_strided_slice_6 (Te (0,) 0 tf_op_layer_Shape_6[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat_12/values_1 (1,) 0 tf_op_layer_Prod_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_strided_slice_7 (Te (1,) 0 tf_op_layer_Shape_7[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_9 (TensorFl (None,) 0 tf_op_layer_GreaterEqual[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_6 (TensorFl (None, 4) 0 tf_op_layer_concat_9[0][0] \n",
+ " tf_op_layer_concat_11[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Squeeze (TensorFlow (None,) 0 tf_op_layer_Where[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat_12 (TensorFl (2,) 0 tf_op_layer_strided_slice_6[0][0]\n",
+ " tf_op_layer_concat_12/values_1[0]\n",
+ " tf_op_layer_strided_slice_7[0][0]\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Where_1 (TensorFlow (None, 1) 0 tf_op_layer_Reshape_9[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_GatherV2 (TensorFlo (None, 4) 0 tf_op_layer_Reshape_6[0][0] \n",
+ " tf_op_layer_Squeeze[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_8 (TensorFl (None, 3) 0 tf_op_layer_concat_10[0][0] \n",
+ " tf_op_layer_concat_12[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Squeeze_1 (TensorFl (None,) 0 tf_op_layer_Where_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Shape_8 (TensorFlow (3,) 0 tf_op_layer_concat_10[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Shape_9 (TensorFlow (2,) 0 tf_op_layer_GatherV2[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_GatherV2_1 (TensorF (None, 3) 0 tf_op_layer_Reshape_8[0][0] \n",
+ " tf_op_layer_Squeeze_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_strided_slice_8 (Te () 0 tf_op_layer_Shape_8[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_strided_slice_9 (Te () 0 tf_op_layer_Shape_9[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Shape_10 (TensorFlo (3,) 0 tf_op_layer_concat_10[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Shape_11 (TensorFlo (2,) 0 tf_op_layer_GatherV2_1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_10/shape (T (3,) 0 tf_op_layer_strided_slice_8[0][0]\n",
+ " tf_op_layer_strided_slice_9[0][0]\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_strided_slice_10 (T () 0 tf_op_layer_Shape_10[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_strided_slice_11 (T () 0 tf_op_layer_Shape_11[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_10 (TensorF (None, None, None) 0 tf_op_layer_GatherV2[0][0] \n",
+ " tf_op_layer_Reshape_10/shape[0][0\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_11/shape (T (3,) 0 tf_op_layer_strided_slice_10[0][0\n",
+ " tf_op_layer_strided_slice_11[0][0\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_RealDiv (TensorFlow (None, None, None) 0 tf_op_layer_Reshape_10[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_Reshape_11 (TensorF (None, None, None) 0 tf_op_layer_GatherV2_1[0][0] \n",
+ " tf_op_layer_Reshape_11/shape[0][0\n",
+ "__________________________________________________________________________________________________\n",
+ "tf_op_layer_concat_14 (TensorFl (None, None, None) 0 tf_op_layer_RealDiv[0][0] \n",
+ " tf_op_layer_Reshape_11[0][0] \n",
+ "==================================================================================================\n",
+ "Total params: 5,884,944\n",
+ "Trainable params: 5,878,736\n",
+ "Non-trainable params: 6,208\n",
+ "__________________________________________________________________________________________________\n"
+ ]
+ }
+ ],
+ "source": [
+ "yolo_tiny_model.summary()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "c5bbaf48",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "yolo_tiny_model.inputs"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "26564464",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[]"
+ ]
+ },
+ "execution_count": 5,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "yolo_tiny_model.outputs"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "53d99a56",
+ "metadata": {},
+ "source": [
+ "# read labels"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "ce781052",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def read_labels(labels_path):\n",
+ " with open(labels_path) as f:\n",
+ " labels = f.readlines()\n",
+ " labels = [c.strip() for c in labels]\n",
+ " return labels"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "f4d7366b",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "['Person', 'Hat', 'Vest']"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "labels = read_labels('data/classes/ppe_classes.names.txt')\n",
+ "labels"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "1456c0b9",
+ "metadata": {},
+ "source": [
+ "# decoder model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "3b00ce1c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "num_classes = len(labels)\n",
+ "total_len = 4 + num_classes"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "2ead3a26",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "\n",
+ "inputs = tf.keras.layers.Input(shape=(None, total_len), name='model_input')\n",
+ "slice_x0 = tf.keras.layers.Lambda( lambda x: x[..., 0], name = 'all_x0')(inputs)\n",
+ "slice_y0 = tf.keras.layers.Lambda(lambda x: x[..., 1], name = 'all_y0')(inputs)\n",
+ "\n",
+ "\n",
+ "slice_width = tf.keras.layers.Lambda(lambda x: x[..., 2], name = 'all_widths')(inputs)\n",
+ "\n",
+ "\n",
+ "slice_height = tf.keras.layers.Lambda( lambda x: x[..., 3], name = 'all_heights')(inputs)\n",
+ "\n",
+ "# slice_height = tf.keras.layers.Subtract()([slice_y1, slice_y0])\n",
+ "# slice_width = tf.keras.layers.Subtract()([slice_x1, slice_x0])\n",
+ "\n",
+ "# concatenate_x0_y0 = tf.keras.layers.Concatenate(axis = 0, name='concatenate_x0_y0')([slice_x0, slice_y0, slice_x1, slice_y1])\n",
+ "# transpose_dims = tf.keras.layers.Lambda(lambda x: tf.transpose(x), name ='all_boxes')(concatenate_x0_y0)\n",
+ "\n",
+ "concatenate_x0_y0_x1_y1 = tf.keras.layers.Concatenate(axis = 0, name='concatenate_x0_y0_x1_y1')([slice_x0, slice_y0, slice_width, slice_height])\n",
+ "x_y_w_h = tf.keras.layers.Lambda(lambda x: tf.transpose(x), name ='x_y_w_h')(concatenate_x0_y0_x1_y1)\n",
+ "# normalized_x_y_w_h = tf.keras.layers.Lambda(lambda x: x/608.0, name ='normalized_x_y_w_h')(x_y_w_h)\n",
+ "\n",
+ "slice_confidences = tf.keras.layers.Lambda(lambda x: x[..., 4:], name = 'slice_confidences')(inputs)\n",
+ "scores = tf.keras.layers.Lambda(lambda x: tf.squeeze(x, axis=0), name = 'all_scores')(slice_confidences)\n",
+ "\n",
+ "\n",
+ "decoder_model = tf.keras.Model(inputs = [inputs], outputs = [x_y_w_h, scores ], name = 'yolo_decoder')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "d05f9402",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Model: \"yolo_decoder\"\n",
+ "__________________________________________________________________________________________________\n",
+ "Layer (type) Output Shape Param # Connected to \n",
+ "==================================================================================================\n",
+ "model_input (InputLayer) [(None, None, 7)] 0 \n",
+ "__________________________________________________________________________________________________\n",
+ "all_x0 (Lambda) (None, None) 0 model_input[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "all_y0 (Lambda) (None, None) 0 model_input[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "all_widths (Lambda) (None, None) 0 model_input[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "all_heights (Lambda) (None, None) 0 model_input[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "concatenate_x0_y0_x1_y1 (Concat (None, None) 0 all_x0[0][0] \n",
+ " all_y0[0][0] \n",
+ " all_widths[0][0] \n",
+ " all_heights[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "slice_confidences (Lambda) (None, None, 3) 0 model_input[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "x_y_w_h (Lambda) (None, None) 0 concatenate_x0_y0_x1_y1[0][0] \n",
+ "__________________________________________________________________________________________________\n",
+ "all_scores (Lambda) (None, 3) 0 slice_confidences[0][0] \n",
+ "==================================================================================================\n",
+ "Total params: 0\n",
+ "Trainable params: 0\n",
+ "Non-trainable params: 0\n",
+ "__________________________________________________________________________________________________\n"
+ ]
+ }
+ ],
+ "source": [
+ "decoder_model.summary()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ebed1561",
+ "metadata": {},
+ "source": [
+ "# merege yolo and decoder"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "f39d69ca",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Model: \"functional_1\"\n",
+ "_________________________________________________________________\n",
+ "Layer (type) Output Shape Param # \n",
+ "=================================================================\n",
+ "input_1 (InputLayer) [(None, 608, 608, 3)] 0 \n",
+ "_________________________________________________________________\n",
+ "functional_1 (Functional) (None, None, None) 5884944 \n",
+ "_________________________________________________________________\n",
+ "yolo_decoder (Functional) [(None, None), (None, 3)] 0 \n",
+ "=================================================================\n",
+ "Total params: 5,884,944\n",
+ "Trainable params: 5,878,736\n",
+ "Non-trainable params: 6,208\n",
+ "_________________________________________________________________\n"
+ ]
+ }
+ ],
+ "source": [
+ "x = yolo_tiny_model.outputs[0]\n",
+ "x.shape\n",
+ "decoder_model.input.shape\n",
+ "\n",
+ "inputs = tf.keras.layers.Input(shape=(608, 608, 3))\n",
+ "x = yolo_tiny_model(inputs)\n",
+ "predictions = decoder_model(x)\n",
+ "combined_model = tf.keras.Model(inputs=inputs, outputs=predictions)\n",
+ "combined_model.summary()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "9fbafdff",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#save combined model\n",
+ "combined_model.save('yolo_decoded.h5')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "fc197e32",
+ "metadata": {},
+ "source": [
+ "# check predictions¶"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "f95140b4",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import colorsys\n",
+ "import random\n",
+ "\n",
+ "def generate_colors(class_names):\n",
+ " hsv_tuples = [(x / len(class_names), 1., 1.) for x in range(len(class_names))]\n",
+ " colors = list(map(lambda x: colorsys.hsv_to_rgb(*x), hsv_tuples))\n",
+ " colors = list(map(lambda x: (int(x[0] ), int(x[1] ), int(x[2] )), colors))\n",
+ " random.seed(10101) # Fixed seed for consistent colors across runs.\n",
+ " random.shuffle(colors) # Shuffle colors to decorrelate adjacent classes.\n",
+ " random.seed(None) # Reset seed to default.\n",
+ " return colors\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "c6c3a4d8",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from numpy import expand_dims\n",
+ "from tensorflow.keras.preprocessing.image import load_img\n",
+ "from tensorflow.keras.preprocessing.image import img_to_array\n",
+ "\n",
+ "# load and prepare an image\n",
+ "def load_image_pixels(filename, shape):\n",
+ " # load the image to get its shape\n",
+ " image = load_img(filename)\n",
+ " width, height = image.size\n",
+ " # load the image with the required size\n",
+ " image = load_img(filename, interpolation = 'bilinear', target_size=shape)\n",
+ " # convert to numpy array\n",
+ " image = img_to_array(image)\n",
+ " # scale pixel values to [0, 1]\n",
+ " image = image.astype('float32')\n",
+ " image /= 255.0\n",
+ "\n",
+ " # add a dimension so that we have one sample\n",
+ " image = expand_dims(image, 0)\n",
+ " \n",
+ " return image, width, height"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "6ef44649",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from matplotlib import pyplot\n",
+ "from matplotlib.patches import Rectangle\n",
+ "\n",
+ "def draw_preds_bbs(file_name, preds_pipeline, is_coreml = False):\n",
+ " print(preds_pipeline[0].shape)\n",
+ " print(preds_pipeline[1].shape)\n",
+ " boxes = preds_pipeline[0]\n",
+ " scores = preds_pipeline[1]\n",
+ "# boxes = preds_pipeline[2]\n",
+ "\n",
+ " print('start drawing boxes')\n",
+ " data = pyplot.imread(file_name)\n",
+ " ax = pyplot.gca()\n",
+ " colors = generate_colors(labels)\n",
+ " for i in range(len(boxes)):\n",
+ " index = i\n",
+ " box = boxes[index]\n",
+ " class_id = np.argmax(scores[i])\n",
+ " score = scores[i][class_id]\n",
+ " if is_coreml == False :\n",
+ " x1, y1, height, width = box[0], box[1], box[2], box[3]\n",
+ " else:\n",
+ " x1, y1, width, height = box[0], box[1], box[2], box[3]\n",
+ " \n",
+ " x1, y1, width, height = box[0], box[1], box[2], box[3]\n",
+ " \n",
+ " x1 = x1- width/2.0\n",
+ " y1 = y1- height/2.0\n",
+ " \n",
+ " rect = Rectangle(\n",
+ " (x1 * image_w, y1 * image_h),\n",
+ " width * image_w,\n",
+ " height * image_h,\n",
+ " fill=False,\n",
+ " color=colors[class_id]\n",
+ " )\n",
+ " ax.add_patch(rect)\n",
+ " label = \"%s (%.3f)\" % (labels[class_id], score*100)\n",
+ " pyplot.text(\n",
+ " x1* image_w,\n",
+ " y1* image_h,\n",
+ " label, \n",
+ " color= 'white'\n",
+ " )\n",
+ " pyplot.imshow(data)\n",
+ " pyplot.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "59e0c487",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "image initial size: 1280 720\n",
+ "input image (1, 608, 608, 3)\n"
+ ]
+ }
+ ],
+ "source": [
+ "# Pre-process the image\n",
+ "input_w, input_h = 608, 608\n",
+ "photo_filename = 'sample_test_images/0.jpg'\n",
+ "# photo_filename = 'empty_image.jpg'\n",
+ "image, image_w, image_h = load_image_pixels(photo_filename, (input_w, input_h))\n",
+ "print(\"image initial size: \", image_w, image_h)\n",
+ "print(\"input image\",image.shape)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "4f222aa7",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "(21, 4)\n",
+ "(21, 3)\n",
+ "start drawing boxes\n"
+ ]
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "ytinyhat = combined_model.predict(image)\n",
+ "# print(f\"ytinyhat shape : {ytinyhat.shape}\")\n",
+ "draw_preds_bbs(photo_filename, ytinyhat)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "bfb8b1f9",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3 (ipykernel)",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.8.13"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/README.md b/README.md
index 8b6da877..e6ee5e1d 100644
--- a/README.md
+++ b/README.md
@@ -3,62 +3,142 @@
YOLOv4, YOLOv4-tiny Implemented in Tensorflow 2.0.
Convert YOLO v4, YOLOv3, YOLO tiny .weights to .pb, .tflite and trt format for tensorflow, tensorflow lite, tensorRT.
+
-Download yolov4.weights file: https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT
+## Getting Started
+### Conda (Recommended)
+```bash
+# Tensorflow CPU
+conda env create -f conda-cpu.yml
+conda activate yolov4-cpu
+
+# Tensorflow GPU
+conda env create -f conda-gpu.yml
+conda activate yolov4-gpu
+```
-### Prerequisites
-* Tensorflow 2.3.0rc0
+### Pip
+```bash
+# TensorFlow CPU
+pip install -r requirements.txt
+
+# TensorFlow GPU
+pip install -r requirements-gpu.txt
+```
+### Nvidia Driver (For GPU, if you are not using Conda Environment and haven't set up CUDA yet)
+Make sure to use CUDA Toolkit version 10.1 as it is the proper version for the TensorFlow version used in this repository.
+https://developer.nvidia.com/cuda-10.1-download-archive-update2
### Performance
-
+Check out how YOLOv4 compares to other object detection systems.
+
+
+
+## Downloading Official Pre-trained Weights
+YOLOv4 comes pre-trained and able to detect 80 classes. For easy demo purposes we will use the pre-trained weights.
+Download pre-trained yolov4.weights file: https://drive.google.com/open?id=1cewMfusmPjYWbrnuJRuKhPMwRe_b9PaT
+
+Copy and paste yolov4.weights from your downloads folder into the 'data' folder of this repository.
+
+If you want to use yolov4-tiny.weights, a smaller model that is faster at running detections but less accurate, download file here: https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v4_pre/yolov4-tiny.weights
+
+## Using Custom Trained YOLOv4 Weights
+Learn How To Train Custom YOLOv4 Weights here: https://www.youtube.com/watch?v=mmj3nxGT2YQ
+
+USE MY LICENSE PLATE TRAINED CUSTOM WEIGHTS: https://drive.google.com/file/d/1EUPtbtdF0bjRtNjGv436vDY28EN5DXDH/view?usp=sharing
+
+Copy and paste your custom .weights file into the 'data' folder and copy and paste your custom .names into the 'data/classes/' folder.
+
+The only change within the code you need to make in order for your custom model to work is on line 14 of 'core/config.py' file.
+Update the code to point at your custom .names file as seen below. (my custom .names file is called custom.names but yours might be named differently)
+
-### Demo
+Note: If you are using the pre-trained yolov4 then make sure that line 14 remains coco.names .
+## YOLOv4 Using Tensorflow (tf, .pb model)
+To implement YOLOv4 using TensorFlow, first we convert the .weights into the corresponding TensorFlow model files and then run the model.
```bash
# Convert darknet weights to tensorflow
## yolov4
python save_model.py --weights ./data/yolov4.weights --output ./checkpoints/yolov4-416 --input_size 416 --model yolov4
-## yolov4-tiny
+# yolov4-tiny
python save_model.py --weights ./data/yolov4-tiny.weights --output ./checkpoints/yolov4-tiny-416 --input_size 416 --model yolov4 --tiny
-# Run demo tensorflow
-python detect.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --image ./data/kite.jpg
+# custom yolov4
+python save_model.py --weights ./data/custom.weights --output ./checkpoints/custom-416 --input_size 416 --model yolov4
-python detect.py --weights ./checkpoints/yolov4-tiny-416 --size 416 --model yolov4 --image ./data/kite.jpg --tiny
+# Run yolov4 tensorflow model
+python detect.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --images ./data/images/kite.jpg
+# Run yolov4-tiny tensorflow model
+python detect.py --weights ./checkpoints/yolov4-tiny-416 --size 416 --model yolov4 --images ./data/images/kite.jpg --tiny
+
+# Run custom yolov4 tensorflow model
+python detect.py --weights ./checkpoints/custom-416 --size 416 --model yolov4 --images ./data/images/car.jpg
+
+# Run yolov4 on video
+python detect_video.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --video ./data/video/video.mp4 --output ./detections/results.avi
+
+# Run custom yolov4 model on video
+python detect_video.py --weights ./checkpoints/custom-416 --size 416 --model yolov4 --video ./data/video/cars.mp4 --output ./detections/results.avi
+
+# Run yolov4 on webcam
+python detect_video.py --weights ./checkpoints/yolov4-416 --size 416 --model yolov4 --video 0 --output ./detections/results.avi
```
-If you want to run yolov3 or yolov3-tiny change ``--model yolov3`` in command
+If you want to run yolov3 or yolov3-tiny change ``--model yolov3`` and .weights file in above commands.
-#### Output
+Note: You can also run the detector on multiple images at once by changing the --images flag like such ``--images "./data/images/kite.jpg, ./data/images/dog.jpg"``
-##### Yolov4 original weight
-
+### Result Image(s) (Regular TensorFlow)
+You can find the outputted image(s) showing the detections saved within the 'detections' folder.
+#### Pre-trained YOLOv4 Model Example
+
-##### Yolov4 tflite int8
-
+#### Custom YOLOv4 Model Example (see video link above to train this model)
+
-### Convert to tflite
+### Result Video
+Video saves wherever you point --output flag to. If you don't set the flag then your video will not be saved with detections on it.
+
+## YOLOv4 Using TensorFlow Lite (.tflite model)
+Can also implement YOLOv4 using TensorFlow Lite. TensorFlow Lite is a much smaller model and perfect for mobile or edge devices (raspberry pi, etc).
```bash
# Save tf model for tflite converting
python save_model.py --weights ./data/yolov4.weights --output ./checkpoints/yolov4-416 --input_size 416 --model yolov4 --framework tflite
+# Save custom yolov4 tf model for tflite converting
+python save_model.py --weights ./data/custom.weights --output ./checkpoints/custom-416 --input_size 416 --model yolov4 --framework tflite
+
# yolov4
python convert_tflite.py --weights ./checkpoints/yolov4-416 --output ./checkpoints/yolov4-416.tflite
+# convert custom yolov4 tflite model
+python convert_tflite.py --weights ./checkpoints/custom-416 --output ./checkpoints/custom-416.tflite
+
# yolov4 quantize float16
python convert_tflite.py --weights ./checkpoints/yolov4-416 --output ./checkpoints/yolov4-416-fp16.tflite --quantize_mode float16
# yolov4 quantize int8
python convert_tflite.py --weights ./checkpoints/yolov4-416 --output ./checkpoints/yolov4-416-int8.tflite --quantize_mode int8 --dataset ./coco_dataset/coco/val207.txt
-# Run demo tflite model
-python detect.py --weights ./checkpoints/yolov4-416.tflite --size 416 --model yolov4 --image ./data/kite.jpg --framework tflite
+# Run tflite model
+python detect.py --weights ./checkpoints/yolov4-416.tflite --size 416 --model yolov4 --images ./data/images/kite.jpg --framework tflite
+
+# Run custom tflite model
+python detect.py --weights ./checkpoints/custom-416.tflite --size 416 --model yolov4 --images ./data/images/car.jpg --framework tflite
```
+### Result Image (TensorFlow Lite)
+You can find the outputted image(s) showing the detections saved within the 'detections' folder.
+#### TensorFlow Lite int8 Example
+
+
Yolov4 and Yolov4-tiny int8 quantization have some issues. I will try to fix that. You can try Yolov3 and Yolov3-tiny int8 quantization
-### Convert to TensorRT
+
+## YOLOv4 Using TensorRT
+Can also implement YOLOv4 using TensorFlow's TensorRT. TensorRT is a high-performance inference optimizer and runtime that can be used to perform inference in lower precision (FP16 and INT8) on GPUs. TensorRT can allow up to 8x higher performance than regular TensorFlow.
```bash# yolov3
python save_model.py --weights ./data/yolov3.weights --output ./checkpoints/yolov3.tf --input_size 416 --model yolov3
python convert_trt.py --weights ./checkpoints/yolov3.tf --quantize_mode float16 --output ./checkpoints/yolov3-trt-fp16-416
@@ -70,9 +150,70 @@ python convert_trt.py --weights ./checkpoints/yolov3-tiny.tf --quantize_mode flo
# yolov4
python save_model.py --weights ./data/yolov4.weights --output ./checkpoints/yolov4.tf --input_size 416 --model yolov4
python convert_trt.py --weights ./checkpoints/yolov4.tf --quantize_mode float16 --output ./checkpoints/yolov4-trt-fp16-416
+python detect.py --weights ./checkpoints/yolov4-trt-fp16-416 --model yolov4 --images ./data/images/kite.jpg --framework trt
```
-### Evaluate on COCO 2017 Dataset
+## Command Line Args Reference
+
+```bash
+save_model.py:
+ --weights: path to weights file
+ (default: './data/yolov4.weights')
+ --output: path to output
+ (default: './checkpoints/yolov4-416')
+ --[no]tiny: yolov4 or yolov4-tiny
+ (default: 'False')
+ --input_size: define input size of export model
+ (default: 416)
+ --framework: what framework to use (tf, trt, tflite)
+ (default: tf)
+ --model: yolov3 or yolov4
+ (default: yolov4)
+
+detect.py:
+ --images: path to input images as a string with images separated by ","
+ (default: './data/images/kite.jpg')
+ --output: path to output folder
+ (default: './detections/')
+ --[no]tiny: yolov4 or yolov4-tiny
+ (default: 'False')
+ --weights: path to weights file
+ (default: './checkpoints/yolov4-416')
+ --framework: what framework to use (tf, trt, tflite)
+ (default: tf)
+ --model: yolov3 or yolov4
+ (default: yolov4)
+ --size: resize images to
+ (default: 416)
+ --iou: iou threshold
+ (default: 0.45)
+ --score: confidence threshold
+ (default: 0.25)
+
+detect_video.py:
+ --video: path to input video (use 0 for webcam)
+ (default: './data/video/video.mp4')
+ --output: path to output video (remember to set right codec for given format. e.g. XVID for .avi)
+ (default: None)
+ --output_format: codec used in VideoWriter when saving video to file
+ (default: 'XVID)
+ --[no]tiny: yolov4 or yolov4-tiny
+ (default: 'false')
+ --weights: path to weights file
+ (default: './checkpoints/yolov4-416')
+ --framework: what framework to use (tf, trt, tflite)
+ (default: tf)
+ --model: yolov3 or yolov4
+ (default: yolov4)
+ --size: resize images to
+ (default: 416)
+ --iou: iou threshold
+ (default: 0.45)
+ --score: confidence threshold
+ (default: 0.25)
+```
+
+## Evaluate on COCO 2017 Dataset
```bash
# run script in /script/get_coco_dataset_2017.sh to download COCO 2017 Dataset
# preprocess coco dataset
@@ -98,7 +239,7 @@ python main.py --output results_yolov4_tf
| YoloV3 | 55.43 | 52.32 | |
| YoloV4 | 61.96 | 57.33 | |
-### Benchmark
+## Benchmark
```bash
python benchmarks.py --size 416 --model yolov4 --weights ./data/yolov4.weights
```
@@ -144,7 +285,7 @@ python benchmarks.py --size 416 --model yolov4 --weights ./data/yolov4.weights
| YoloV3 FPS | | | |
| YoloV4 FPS | | | |
-### Traning your own model
+## Traning your own model in TensorFlow
```bash
# Prepare your dataset
# If you want to train from scratch:
@@ -157,7 +298,7 @@ python train.py --weights ./data/yolov4.weights
```
The training performance is not fully reproduced yet, so I recommended to use Alex's [Darknet](https://github.com/AlexeyAB/darknet) to train your own data, then convert the .weights to tensorflow or tflite.
-
+Use this video to train your own model easily in Google Colab: https://www.youtube.com/watch?v=mmj3nxGT2YQ
### TODO
* [x] Convert YOLOv4 to TensorRT
diff --git a/benchmarks.py b/benchmarks.py
index c8b2d736..a8405924 100644
--- a/benchmarks.py
+++ b/benchmarks.py
@@ -15,7 +15,7 @@
flags.DEFINE_string('framework', 'tf', '(tf, tflite, trt')
flags.DEFINE_string('model', 'yolov4', 'yolov3 or yolov4')
flags.DEFINE_string('weights', './data/yolov4.weights', 'path to weights file')
-flags.DEFINE_string('image', './data/kite.jpg', 'path to input image')
+flags.DEFINE_string('images', './data/images/kite.jpg', 'path to input image')
flags.DEFINE_integer('size', 416, 'resize images to')
diff --git a/conda-cpu.yml b/conda-cpu.yml
new file mode 100644
index 00000000..396e0820
--- /dev/null
+++ b/conda-cpu.yml
@@ -0,0 +1,15 @@
+name: yolov4-cpu
+
+dependencies:
+ - python==3.7
+ - pip
+ - matplotlib
+ - opencv
+ - pip:
+ - opencv-python==4.1.1.26
+ - lxml
+ - tqdm
+ - tensorflow==2.3.0rc0
+ - absl-py
+ - easydict
+ - pillow
\ No newline at end of file
diff --git a/conda-gpu.yml b/conda-gpu.yml
new file mode 100644
index 00000000..77ce7113
--- /dev/null
+++ b/conda-gpu.yml
@@ -0,0 +1,17 @@
+name: yolov4-gpu
+
+dependencies:
+ - python==3.7
+ - pip
+ - matplotlib
+ - opencv
+ - cudnn
+ - cudatoolkit==10.1.243
+ - pip:
+ - tensorflow-gpu==2.3.0rc0
+ - opencv-python==4.1.1.26
+ - lxml
+ - tqdm
+ - absl-py
+ - easydict
+ - pillow
diff --git a/core/__pycache__/backbone.cpython-37.pyc b/core/__pycache__/backbone.cpython-37.pyc
new file mode 100644
index 00000000..839dd1f1
Binary files /dev/null and b/core/__pycache__/backbone.cpython-37.pyc differ
diff --git a/core/__pycache__/backbone.cpython-38.pyc b/core/__pycache__/backbone.cpython-38.pyc
new file mode 100644
index 00000000..d8aa4f2d
Binary files /dev/null and b/core/__pycache__/backbone.cpython-38.pyc differ
diff --git a/core/__pycache__/common.cpython-37.pyc b/core/__pycache__/common.cpython-37.pyc
new file mode 100644
index 00000000..b28006d8
Binary files /dev/null and b/core/__pycache__/common.cpython-37.pyc differ
diff --git a/core/__pycache__/common.cpython-38.pyc b/core/__pycache__/common.cpython-38.pyc
new file mode 100644
index 00000000..0b60fe2c
Binary files /dev/null and b/core/__pycache__/common.cpython-38.pyc differ
diff --git a/core/__pycache__/config.cpython-37.pyc b/core/__pycache__/config.cpython-37.pyc
new file mode 100644
index 00000000..1cff50dc
Binary files /dev/null and b/core/__pycache__/config.cpython-37.pyc differ
diff --git a/core/__pycache__/utils.cpython-36.pyc b/core/__pycache__/utils.cpython-36.pyc
new file mode 100644
index 00000000..28ed8af8
Binary files /dev/null and b/core/__pycache__/utils.cpython-36.pyc differ
diff --git a/core/__pycache__/utils.cpython-37.pyc b/core/__pycache__/utils.cpython-37.pyc
new file mode 100644
index 00000000..c9ed088b
Binary files /dev/null and b/core/__pycache__/utils.cpython-37.pyc differ
diff --git a/core/__pycache__/utils.cpython-38.pyc b/core/__pycache__/utils.cpython-38.pyc
new file mode 100644
index 00000000..a424aa42
Binary files /dev/null and b/core/__pycache__/utils.cpython-38.pyc differ
diff --git a/core/__pycache__/yolov4.cpython-36.pyc b/core/__pycache__/yolov4.cpython-36.pyc
new file mode 100644
index 00000000..bf13aa58
Binary files /dev/null and b/core/__pycache__/yolov4.cpython-36.pyc differ
diff --git a/core/__pycache__/yolov4.cpython-37.pyc b/core/__pycache__/yolov4.cpython-37.pyc
new file mode 100644
index 00000000..0a0efaa0
Binary files /dev/null and b/core/__pycache__/yolov4.cpython-37.pyc differ
diff --git a/core/__pycache__/yolov4.cpython-38.pyc b/core/__pycache__/yolov4.cpython-38.pyc
new file mode 100644
index 00000000..e6fca0d2
Binary files /dev/null and b/core/__pycache__/yolov4.cpython-38.pyc differ
diff --git a/core/config.py b/core/config.py
index 7ea25ff6..704fbef0 100644
--- a/core/config.py
+++ b/core/config.py
@@ -11,7 +11,7 @@
# YOLO options
__C.YOLO = edict()
-__C.YOLO.CLASSES = "./data/classes/coco.names"
+__C.YOLO.CLASSES = "./data/classes/ppe_classes.names.txt"
__C.YOLO.ANCHORS = [12,16, 19,36, 40,28, 36,75, 76,55, 72,146, 142,110, 192,243, 459,401]
__C.YOLO.ANCHORS_V3 = [10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326]
__C.YOLO.ANCHORS_TINY = [23,27, 37,58, 81,82, 81,82, 135,169, 344,319]
diff --git a/core/utils.py b/core/utils.py
index 87f7d158..641e798b 100644
--- a/core/utils.py
+++ b/core/utils.py
@@ -124,7 +124,7 @@ def image_preprocess(image, target_size, gt_boxes=None):
gt_boxes[:, [1, 3]] = gt_boxes[:, [1, 3]] * scale + dh
return image_paded, gt_boxes
-def draw_bbox(image, bboxes, classes=read_class_names(cfg.YOLO.CLASSES), show_label=True):
+def draw_bbox(image, bboxes, classes=read_class_names(cfg.YOLO.CLASSES), allowed_classes=list(read_class_names(cfg.YOLO.CLASSES).values()), show_label=True):
num_classes = len(classes)
image_h, image_w, _ = image.shape
hsv_tuples = [(1.0 * x / num_classes, 1., 1.) for x in range(num_classes)]
@@ -147,19 +147,25 @@ def draw_bbox(image, bboxes, classes=read_class_names(cfg.YOLO.CLASSES), show_la
fontScale = 0.5
score = out_scores[0][i]
class_ind = int(out_classes[0][i])
- bbox_color = colors[class_ind]
- bbox_thick = int(0.6 * (image_h + image_w) / 600)
- c1, c2 = (coor[1], coor[0]), (coor[3], coor[2])
- cv2.rectangle(image, c1, c2, bbox_color, bbox_thick)
-
- if show_label:
- bbox_mess = '%s: %.2f' % (classes[class_ind], score)
- t_size = cv2.getTextSize(bbox_mess, 0, fontScale, thickness=bbox_thick // 2)[0]
- c3 = (c1[0] + t_size[0], c1[1] - t_size[1] - 3)
- cv2.rectangle(image, c1, (np.float32(c3[0]), np.float32(c3[1])), bbox_color, -1) #filled
-
- cv2.putText(image, bbox_mess, (c1[0], np.float32(c1[1] - 2)), cv2.FONT_HERSHEY_SIMPLEX,
- fontScale, (0, 0, 0), bbox_thick // 2, lineType=cv2.LINE_AA)
+ class_name = classes[class_ind]
+
+ # check if class is in allowed classes
+ if class_name not in allowed_classes:
+ continue
+ else:
+ bbox_color = colors[class_ind]
+ bbox_thick = int(0.6 * (image_h + image_w) / 600)
+ c1, c2 = (coor[1], coor[0]), (coor[3], coor[2])
+ cv2.rectangle(image, c1, c2, bbox_color, bbox_thick)
+
+ if show_label:
+ bbox_mess = '%s: %.2f' % (classes[class_ind], score)
+ t_size = cv2.getTextSize(bbox_mess, 0, fontScale, thickness=bbox_thick // 2)[0]
+ c3 = (c1[0] + t_size[0], c1[1] - t_size[1] - 3)
+ cv2.rectangle(image, c1, (np.float32(c3[0]), np.float32(c3[1])), bbox_color, -1) #filled
+
+ cv2.putText(image, bbox_mess, (c1[0], np.float32(c1[1] - 2)), cv2.FONT_HERSHEY_SIMPLEX,
+ fontScale, (0, 0, 0), bbox_thick // 2, lineType=cv2.LINE_AA)
return image
def bbox_iou(bboxes1, bboxes2):
diff --git a/core/yolov4.py b/core/yolov4.py
index 1edd656d..ac2a1cb5 100644
--- a/core/yolov4.py
+++ b/core/yolov4.py
@@ -296,6 +296,7 @@ def filter_boxes(box_xywh, scores, score_threshold=0.4, input_shape = tf.constan
class_boxes = tf.boolean_mask(box_xywh, mask)
pred_conf = tf.boolean_mask(scores, mask)
class_boxes = tf.reshape(class_boxes, [tf.shape(scores)[0], -1, tf.shape(class_boxes)[-1]])
+ class_boxes = class_boxes/float(input_shape[0])
pred_conf = tf.reshape(pred_conf, [tf.shape(scores)[0], -1, tf.shape(pred_conf)[-1]])
box_xy, box_wh = tf.split(class_boxes, (2, 2), axis=-1)
@@ -305,16 +306,30 @@ def filter_boxes(box_xywh, scores, score_threshold=0.4, input_shape = tf.constan
box_yx = box_xy[..., ::-1]
box_hw = box_wh[..., ::-1]
- box_mins = (box_yx - (box_hw / 2.)) / input_shape
- box_maxes = (box_yx + (box_hw / 2.)) / input_shape
+ # box_mins = (box_yx - (box_hw / 2.)) / input_shape
+ # box_maxes = (box_yx + (box_hw / 2.)) / input_shape
+
+ box_mins = (box_yx) / input_shape
+ box_maxes = (box_hw) / input_shape
+
+
+ # boxes = tf.concat([
+ # box_mins[..., 0:1], # y_min
+ # box_mins[..., 1:2], # x_min
+ # box_maxes[..., 0:1], # y_max
+ # box_maxes[..., 1:2] # x_max
+ # ], axis=-1)
+
boxes = tf.concat([
- box_mins[..., 0:1], # y_min
box_mins[..., 1:2], # x_min
- box_maxes[..., 0:1], # y_max
- box_maxes[..., 1:2] # x_max
+ box_mins[..., 0:1], # y_min
+ box_maxes[..., 1:2], # width
+ box_maxes[..., 0:1], # height
+
], axis=-1)
+
# return tf.concat([boxes, pred_conf], axis=-1)
- return (boxes, pred_conf)
+ return (class_boxes, pred_conf)
def compute_loss(pred, conv, label, bboxes, STRIDES, NUM_CLASS, IOU_LOSS_THRESH, i=0):
diff --git a/data/classes/ppe_classes.names.txt b/data/classes/ppe_classes.names.txt
new file mode 100644
index 00000000..f0e5eae0
--- /dev/null
+++ b/data/classes/ppe_classes.names.txt
@@ -0,0 +1,3 @@
+Person
+Hat
+Vest
diff --git a/data/girl.png b/data/girl.png
deleted file mode 100644
index 0a5fce32..00000000
Binary files a/data/girl.png and /dev/null differ
diff --git a/data/helpers/custom_config.png b/data/helpers/custom_config.png
new file mode 100644
index 00000000..12397c08
Binary files /dev/null and b/data/helpers/custom_config.png differ
diff --git a/data/helpers/custom_result.png b/data/helpers/custom_result.png
new file mode 100644
index 00000000..c0f95c34
Binary files /dev/null and b/data/helpers/custom_result.png differ
diff --git a/data/helpers/demo.gif b/data/helpers/demo.gif
new file mode 100644
index 00000000..078bd02d
Binary files /dev/null and b/data/helpers/demo.gif differ
diff --git a/data/performance.png b/data/helpers/performance.png
similarity index 100%
rename from data/performance.png
rename to data/helpers/performance.png
diff --git a/data/helpers/result-int8.png b/data/helpers/result-int8.png
new file mode 100644
index 00000000..13be85cf
Binary files /dev/null and b/data/helpers/result-int8.png differ
diff --git a/data/helpers/result.png b/data/helpers/result.png
new file mode 100644
index 00000000..3f3bec1b
Binary files /dev/null and b/data/helpers/result.png differ
diff --git a/data/kite.jpg b/data/kite.jpg
deleted file mode 100644
index 9eb325ac..00000000
Binary files a/data/kite.jpg and /dev/null differ
diff --git a/data/road.mp4 b/data/road.mp4
deleted file mode 100755
index f65149db..00000000
Binary files a/data/road.mp4 and /dev/null differ
diff --git a/detect.py b/detect.py
index 5b94027c..db237e0f 100644
--- a/detect.py
+++ b/detect.py
@@ -1,92 +1,109 @@
-import tensorflow as tf
-physical_devices = tf.config.experimental.list_physical_devices('GPU')
-if len(physical_devices) > 0:
- tf.config.experimental.set_memory_growth(physical_devices[0], True)
-from absl import app, flags, logging
-from absl.flags import FLAGS
-import core.utils as utils
-from core.yolov4 import filter_boxes
-from tensorflow.python.saved_model import tag_constants
-from PIL import Image
-import cv2
-import numpy as np
-from tensorflow.compat.v1 import ConfigProto
-from tensorflow.compat.v1 import InteractiveSession
-
-flags.DEFINE_string('framework', 'tf', '(tf, tflite, trt')
-flags.DEFINE_string('weights', './checkpoints/yolov4-416',
- 'path to weights file')
-flags.DEFINE_integer('size', 416, 'resize images to')
-flags.DEFINE_boolean('tiny', False, 'yolo or yolo-tiny')
-flags.DEFINE_string('model', 'yolov4', 'yolov3 or yolov4')
-flags.DEFINE_string('image', './data/kite.jpg', 'path to input image')
-flags.DEFINE_string('output', 'result.png', 'path to output image')
-flags.DEFINE_float('iou', 0.45, 'iou threshold')
-flags.DEFINE_float('score', 0.25, 'score threshold')
-
-def main(_argv):
- config = ConfigProto()
- config.gpu_options.allow_growth = True
- session = InteractiveSession(config=config)
- STRIDES, ANCHORS, NUM_CLASS, XYSCALE = utils.load_config(FLAGS)
- input_size = FLAGS.size
- image_path = FLAGS.image
-
- original_image = cv2.imread(image_path)
- original_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB)
-
- # image_data = utils.image_preprocess(np.copy(original_image), [input_size, input_size])
- image_data = cv2.resize(original_image, (input_size, input_size))
- image_data = image_data / 255.
- # image_data = image_data[np.newaxis, ...].astype(np.float32)
-
- images_data = []
- for i in range(1):
- images_data.append(image_data)
- images_data = np.asarray(images_data).astype(np.float32)
-
- if FLAGS.framework == 'tflite':
- interpreter = tf.lite.Interpreter(model_path=FLAGS.weights)
- interpreter.allocate_tensors()
- input_details = interpreter.get_input_details()
- output_details = interpreter.get_output_details()
- print(input_details)
- print(output_details)
- interpreter.set_tensor(input_details[0]['index'], images_data)
- interpreter.invoke()
- pred = [interpreter.get_tensor(output_details[i]['index']) for i in range(len(output_details))]
- if FLAGS.model == 'yolov3' and FLAGS.tiny == True:
- boxes, pred_conf = filter_boxes(pred[1], pred[0], score_threshold=0.25, input_shape=tf.constant([input_size, input_size]))
- else:
- boxes, pred_conf = filter_boxes(pred[0], pred[1], score_threshold=0.25, input_shape=tf.constant([input_size, input_size]))
- else:
- saved_model_loaded = tf.saved_model.load(FLAGS.weights, tags=[tag_constants.SERVING])
- infer = saved_model_loaded.signatures['serving_default']
- batch_data = tf.constant(images_data)
- pred_bbox = infer(batch_data)
- for key, value in pred_bbox.items():
- boxes = value[:, :, 0:4]
- pred_conf = value[:, :, 4:]
-
- boxes, scores, classes, valid_detections = tf.image.combined_non_max_suppression(
- boxes=tf.reshape(boxes, (tf.shape(boxes)[0], -1, 1, 4)),
- scores=tf.reshape(
- pred_conf, (tf.shape(pred_conf)[0], -1, tf.shape(pred_conf)[-1])),
- max_output_size_per_class=50,
- max_total_size=50,
- iou_threshold=FLAGS.iou,
- score_threshold=FLAGS.score
- )
- pred_bbox = [boxes.numpy(), scores.numpy(), classes.numpy(), valid_detections.numpy()]
- image = utils.draw_bbox(original_image, pred_bbox)
- # image = utils.draw_bbox(image_data*255, pred_bbox)
- image = Image.fromarray(image.astype(np.uint8))
- image.show()
- image = cv2.cvtColor(np.array(image), cv2.COLOR_BGR2RGB)
- cv2.imwrite(FLAGS.output, image)
-
-if __name__ == '__main__':
- try:
- app.run(main)
- except SystemExit:
- pass
+import tensorflow as tf
+physical_devices = tf.config.experimental.list_physical_devices('GPU')
+if len(physical_devices) > 0:
+ tf.config.experimental.set_memory_growth(physical_devices[0], True)
+from absl import app, flags, logging
+from absl.flags import FLAGS
+import core.utils as utils
+from core.config import cfg
+from core.yolov4 import filter_boxes
+from tensorflow.python.saved_model import tag_constants
+from PIL import Image
+import cv2
+import numpy as np
+from tensorflow.compat.v1 import ConfigProto
+from tensorflow.compat.v1 import InteractiveSession
+
+flags.DEFINE_string('framework', 'tf', '(tf, tflite, trt')
+flags.DEFINE_string('weights', './checkpoints/yolov4-416',
+ 'path to weights file')
+flags.DEFINE_integer('size', 416, 'resize images to')
+flags.DEFINE_boolean('tiny', False, 'yolo or yolo-tiny')
+flags.DEFINE_string('model', 'yolov4', 'yolov3 or yolov4')
+flags.DEFINE_list('images', './data/images/kite.jpg', 'path to input image')
+flags.DEFINE_string('output', './detections/', 'path to output folder')
+flags.DEFINE_float('iou', 0.45, 'iou threshold')
+flags.DEFINE_float('score', 0.25, 'score threshold')
+flags.DEFINE_boolean('dont_show', False, 'dont show image output')
+
+def main(_argv):
+ config = ConfigProto()
+ config.gpu_options.allow_growth = True
+ session = InteractiveSession(config=config)
+ STRIDES, ANCHORS, NUM_CLASS, XYSCALE = utils.load_config(FLAGS)
+ input_size = FLAGS.size
+ images = FLAGS.images
+
+ # load model
+ if FLAGS.framework == 'tflite':
+ interpreter = tf.lite.Interpreter(model_path=FLAGS.weights)
+ else:
+ saved_model_loaded = tf.saved_model.load(FLAGS.weights, tags=[tag_constants.SERVING])
+
+ # loop through images in list and run Yolov4 model on each
+ for count, image_path in enumerate(images, 1):
+ original_image = cv2.imread(image_path)
+ original_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2RGB)
+
+ image_data = cv2.resize(original_image, (input_size, input_size))
+ image_data = image_data / 255.
+
+ images_data = []
+ for i in range(1):
+ images_data.append(image_data)
+ images_data = np.asarray(images_data).astype(np.float32)
+
+ if FLAGS.framework == 'tflite':
+ interpreter.allocate_tensors()
+ input_details = interpreter.get_input_details()
+ output_details = interpreter.get_output_details()
+ print(input_details)
+ print(output_details)
+ interpreter.set_tensor(input_details[0]['index'], images_data)
+ interpreter.invoke()
+ pred = [interpreter.get_tensor(output_details[i]['index']) for i in range(len(output_details))]
+ if FLAGS.model == 'yolov3' and FLAGS.tiny == True:
+ boxes, pred_conf = filter_boxes(pred[1], pred[0], score_threshold=0.25, input_shape=tf.constant([input_size, input_size]))
+ else:
+ boxes, pred_conf = filter_boxes(pred[0], pred[1], score_threshold=0.25, input_shape=tf.constant([input_size, input_size]))
+ else:
+ infer = saved_model_loaded.signatures['serving_default']
+ batch_data = tf.constant(images_data)
+ pred_bbox = infer(batch_data)
+ for key, value in pred_bbox.items():
+ boxes = value[:, :, 0:4]
+ pred_conf = value[:, :, 4:]
+
+ boxes, scores, classes, valid_detections = tf.image.combined_non_max_suppression(
+ boxes=tf.reshape(boxes, (tf.shape(boxes)[0], -1, 1, 4)),
+ scores=tf.reshape(
+ pred_conf, (tf.shape(pred_conf)[0], -1, tf.shape(pred_conf)[-1])),
+ max_output_size_per_class=50,
+ max_total_size=50,
+ iou_threshold=FLAGS.iou,
+ score_threshold=FLAGS.score
+ )
+ pred_bbox = [boxes.numpy(), scores.numpy(), classes.numpy(), valid_detections.numpy()]
+
+ # read in all class names from config
+ class_names = utils.read_class_names(cfg.YOLO.CLASSES)
+
+ # by default allow all classes in .names file
+ allowed_classes = list(class_names.values())
+
+ # custom allowed classes (uncomment line below to allow detections for only people)
+ #allowed_classes = ['person']
+
+ image = utils.draw_bbox(original_image, pred_bbox, allowed_classes = allowed_classes)
+
+ image = Image.fromarray(image.astype(np.uint8))
+ if not FLAGS.dont_show:
+ image.show()
+ image = cv2.cvtColor(np.array(image), cv2.COLOR_BGR2RGB)
+ cv2.imwrite(FLAGS.output + 'detection' + str(count) + '.png', image)
+
+if __name__ == '__main__':
+ try:
+ app.run(main)
+ except SystemExit:
+ pass
diff --git a/detect_video.py b/detect_video.py
new file mode 100644
index 00000000..601284b7
--- /dev/null
+++ b/detect_video.py
@@ -0,0 +1,126 @@
+import time
+import tensorflow as tf
+physical_devices = tf.config.experimental.list_physical_devices('GPU')
+if len(physical_devices) > 0:
+ tf.config.experimental.set_memory_growth(physical_devices[0], True)
+from absl import app, flags, logging
+from absl.flags import FLAGS
+import core.utils as utils
+from core.yolov4 import filter_boxes
+from tensorflow.python.saved_model import tag_constants
+from PIL import Image
+import cv2
+import numpy as np
+from tensorflow.compat.v1 import ConfigProto
+from tensorflow.compat.v1 import InteractiveSession
+
+flags.DEFINE_string('framework', 'tf', '(tf, tflite, trt')
+flags.DEFINE_string('weights', './checkpoints/yolov4-416',
+ 'path to weights file')
+flags.DEFINE_integer('size', 416, 'resize images to')
+flags.DEFINE_boolean('tiny', False, 'yolo or yolo-tiny')
+flags.DEFINE_string('model', 'yolov4', 'yolov3 or yolov4')
+flags.DEFINE_string('video', './data/video/video.mp4', 'path to input video or set to 0 for webcam')
+flags.DEFINE_string('output', None, 'path to output video')
+flags.DEFINE_string('output_format', 'XVID', 'codec used in VideoWriter when saving video to file')
+flags.DEFINE_float('iou', 0.45, 'iou threshold')
+flags.DEFINE_float('score', 0.25, 'score threshold')
+flags.DEFINE_boolean('dont_show', False, 'dont show video output')
+
+def main(_argv):
+ config = ConfigProto()
+ config.gpu_options.allow_growth = True
+ session = InteractiveSession(config=config)
+ STRIDES, ANCHORS, NUM_CLASS, XYSCALE = utils.load_config(FLAGS)
+ input_size = FLAGS.size
+ video_path = FLAGS.video
+
+ if FLAGS.framework == 'tflite':
+ interpreter = tf.lite.Interpreter(model_path=FLAGS.weights)
+ interpreter.allocate_tensors()
+ input_details = interpreter.get_input_details()
+ output_details = interpreter.get_output_details()
+ print(input_details)
+ print(output_details)
+ else:
+ saved_model_loaded = tf.saved_model.load(FLAGS.weights, tags=[tag_constants.SERVING])
+ infer = saved_model_loaded.signatures['serving_default']
+
+ # begin video capture
+ try:
+ vid = cv2.VideoCapture(int(video_path))
+ except:
+ vid = cv2.VideoCapture(video_path)
+
+ out = None
+
+ if FLAGS.output:
+ # by default VideoCapture returns float instead of int
+ width = int(vid.get(cv2.CAP_PROP_FRAME_WIDTH))
+ height = int(vid.get(cv2.CAP_PROP_FRAME_HEIGHT))
+ fps = int(vid.get(cv2.CAP_PROP_FPS))
+ codec = cv2.VideoWriter_fourcc(*FLAGS.output_format)
+ out = cv2.VideoWriter(FLAGS.output, codec, fps, (width, height))
+
+ while True:
+ return_value, frame = vid.read()
+ if return_value:
+ frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
+ image = Image.fromarray(frame)
+ else:
+ print('Video has ended or failed, try a different video format!')
+ break
+
+ frame_size = frame.shape[:2]
+ image_data = cv2.resize(frame, (input_size, input_size))
+ image_data = image_data / 255.
+ image_data = image_data[np.newaxis, ...].astype(np.float32)
+ start_time = time.time()
+
+ if FLAGS.framework == 'tflite':
+ interpreter.set_tensor(input_details[0]['index'], image_data)
+ interpreter.invoke()
+ pred = [interpreter.get_tensor(output_details[i]['index']) for i in range(len(output_details))]
+ if FLAGS.model == 'yolov3' and FLAGS.tiny == True:
+ boxes, pred_conf = filter_boxes(pred[1], pred[0], score_threshold=0.25,
+ input_shape=tf.constant([input_size, input_size]))
+ else:
+ boxes, pred_conf = filter_boxes(pred[0], pred[1], score_threshold=0.25,
+ input_shape=tf.constant([input_size, input_size]))
+ else:
+ batch_data = tf.constant(image_data)
+ pred_bbox = infer(batch_data)
+ for key, value in pred_bbox.items():
+ boxes = value[:, :, 0:4]
+ pred_conf = value[:, :, 4:]
+
+ boxes, scores, classes, valid_detections = tf.image.combined_non_max_suppression(
+ boxes=tf.reshape(boxes, (tf.shape(boxes)[0], -1, 1, 4)),
+ scores=tf.reshape(
+ pred_conf, (tf.shape(pred_conf)[0], -1, tf.shape(pred_conf)[-1])),
+ max_output_size_per_class=50,
+ max_total_size=50,
+ iou_threshold=FLAGS.iou,
+ score_threshold=FLAGS.score
+ )
+ pred_bbox = [boxes.numpy(), scores.numpy(), classes.numpy(), valid_detections.numpy()]
+ image = utils.draw_bbox(frame, pred_bbox)
+ fps = 1.0 / (time.time() - start_time)
+ print("FPS: %.2f" % fps)
+ result = np.asarray(image)
+ cv2.namedWindow("result", cv2.WINDOW_AUTOSIZE)
+ result = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
+
+ if not FLAGS.dont_show:
+ cv2.imshow("result", result)
+
+ if FLAGS.output:
+ out.write(result)
+ if cv2.waitKey(1) & 0xFF == ord('q'): break
+ cv2.destroyAllWindows()
+
+if __name__ == '__main__':
+ try:
+ app.run(main)
+ except SystemExit:
+ pass
diff --git a/detections/detection1.png b/detections/detection1.png
new file mode 100644
index 00000000..22042207
Binary files /dev/null and b/detections/detection1.png differ
diff --git a/requirements.txt b/requirements.txt
index 5c68a547..b3bd0114 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,8 +1,56 @@
-opencv-python==4.1.1.26
-lxml
-tqdm
-tensorflow==2.3.0rc0
-absl-py
-easydict
-matplotlib
-pillow
+absl-py==0.15.0
+astunparse==1.6.3
+cached-property==1.5.2
+cachetools==5.0.0
+charset-normalizer==2.0.12
+coremltools==5.1.0
+cycler==0.11.0
+easydict==1.9
+fake-bpy-module-2.83==20210701
+flatbuffers==1.12
+fonttools==4.37.0
+gast==0.3.3
+google-auth==2.6.0
+google-auth-oauthlib==0.4.6
+google-pasta==0.2.0
+grpcio==1.34.1
+h5py==2.10.0
+idna==3.3
+importlib-metadata==4.11.3
+Keras==2.2.4
+Keras-Applications==1.0.8
+keras-nightly==2.5.0.dev2021032900
+Keras-Preprocessing==1.1.2
+kiwisolver==1.4.4
+lxml==4.9.1
+Markdown==3.3.6
+matplotlib==3.5.3
+mpmath==1.2.1
+numpy==1.18.5
+oauthlib==3.2.0
+opencv-python==4.1.2.30
+opt-einsum==3.3.0
+Pillow==9.2.0
+protobuf==3.19.4
+pyasn1==0.4.8
+pyasn1-modules==0.2.8
+pydot==1.4.2
+pyparsing==3.0.7
+PyYAML==6.0
+requests==2.27.1
+requests-oauthlib==1.3.1
+rsa==4.8
+scipy==1.7.3
+sympy==1.10
+tensorboard==2.8.0
+tensorboard-data-server==0.6.1
+tensorboard-plugin-wit==1.8.1
+tensorflow==2.3.1
+tensorflow-estimator==2.3.0
+termcolor==1.1.0
+tqdm==4.63.0
+urllib3==1.26.8
+webencodings==0.5.1
+Werkzeug==2.0.3
+wrapt==1.12.1
+yolov4==3.2.0
diff --git a/sample_test_images/0.jpg b/sample_test_images/0.jpg
new file mode 100644
index 00000000..ade46488
Binary files /dev/null and b/sample_test_images/0.jpg differ
diff --git a/save_model.py b/save_model.py
index 5946c554..cbdf699c 100644
--- a/save_model.py
+++ b/save_model.py
@@ -5,14 +5,27 @@
import core.utils as utils
from core.config import cfg
-flags.DEFINE_string('weights', './data/yolov4.weights', 'path to weights file')
-flags.DEFINE_string('output', './checkpoints/yolov4-416', 'path to output')
-flags.DEFINE_boolean('tiny', False, 'is yolo-tiny or not')
-flags.DEFINE_integer('input_size', 416, 'define input size of export model')
-flags.DEFINE_float('score_thres', 0.2, 'define score threshold')
+# # full
+# # --weights ./data/yolov4-tiny.weights --output ./checkpoints/yolov4-tiny-23rdMay-608 --input_size 608 --model yolov4 --tiny
+# flags.DEFINE_string('weights', './data/yolov4.weights', 'path to weights file')
+# flags.DEFINE_string('output', './checkpoints/yolov4-608_1stJun', 'path to output')
+# flags.DEFINE_boolean('tiny', False, 'is yolo-tiny or not')
+# flags.DEFINE_integer('input_size', 608, 'define input size of export model')
+# flags.DEFINE_float('score_thres', 0.2, 'define score threshold')
+# flags.DEFINE_string('framework', 'tf', 'define what framework do you want to convert (tf, trt, tflite)')
+# flags.DEFINE_string('model', 'yolov4', 'yolov3 or yolov4')
+
+# tiny
+
+flags.DEFINE_string('weights', './data/ppe_yolov4-tiny_best.weights', 'path to weights file')
+flags.DEFINE_string('output', './checkpoints/ppe_yolov4-tiny-608-24thAug', 'path to output')
+flags.DEFINE_boolean('tiny', True, 'is yolo-tiny or not')
+flags.DEFINE_integer('input_size', 608, 'define input size of export model')
+flags.DEFINE_float('score_thres', 0.5, 'define score threshold')
flags.DEFINE_string('framework', 'tf', 'define what framework do you want to convert (tf, trt, tflite)')
flags.DEFINE_string('model', 'yolov4', 'yolov3 or yolov4')
+
def save_tf():
STRIDES, ANCHORS, NUM_CLASS, XYSCALE = utils.load_config(FLAGS)
@@ -45,10 +58,13 @@ def save_tf():
else:
boxes, pred_conf = filter_boxes(pred_bbox, pred_prob, score_threshold=FLAGS.score_thres, input_shape=tf.constant([FLAGS.input_size, FLAGS.input_size]))
pred = tf.concat([boxes, pred_conf], axis=-1)
+
+
model = tf.keras.Model(input_layer, pred)
utils.load_weights(model, FLAGS.weights, FLAGS.model, FLAGS.tiny)
model.summary()
model.save(FLAGS.output)
+ model.save('yolo_tiny_1stJune.h5')
def main(_argv):
save_tf()
diff --git a/screenshots/Screenshot 2022-08-24 at 7.23.04 PM.png b/screenshots/Screenshot 2022-08-24 at 7.23.04 PM.png
new file mode 100644
index 00000000..332e543c
Binary files /dev/null and b/screenshots/Screenshot 2022-08-24 at 7.23.04 PM.png differ