Major Concepts

 

Sign-Up/Login to access Several ML Models and also Deploy & Monetize your own ML solutions for free

Models Home » Generic Models » Computer Vision » Emergency Vs Non emergency Vehicle Classification

Emergency Vs Non emergency Vehicle Classification

Models Status

Model Overview

Emergency Vs Non emergency Vehicle Classification : 

 

Due to traffic delay, emergency vehicle such as ambulance has huge problem while passing through traffic. So differentiating a vehicle into an emergency and non emergency category can be an important component in traffic monitoring as well as self drive car systems as reaching on time to their destination is critical for these services.


In order to find a solution to this problem we would try building a Image classification model that would classify vehicle images as either belonging to the emergency vehicle or non-emergency vehicle category.

Data Description:

The data contain images of emergncy vehicles and non emergency vehicles.

You can use following link to download the dataset:

https://drive.google.com/drive/folders/1RMlFP7jM1sHKqH_1E_avuWoBFhMeJuRU?usp=sharing



Understanding the code:

The following are the required libraries:



## Import necessary Libraries.
import pandas as pd
import numpy as np
import os
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
from keras.preprocessing import image
from tqdm import tqdm
from sklearn.model_selection import train_test_split
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.layers import Flatten
from keras.layers import Conv2D
from keras.layers import MaxPool2D
from tensorflow.keras.optimizers import RMSprop
from keras.preprocessing.image import ImageDataGenerator
from keras.callbacks import ReduceLROnPlateau
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.layers import BatchNormalization ​


Before going to main part lets look at some sample images:

 

   
Loading of images and splitting has been done followed by image augmentation


datagen = ImageDataGenerator(featurewise_center=False,            
samplewise_center=False,
featurewise_std_normalization=False,
samplewise_std_normalization=False,
zca_whitening=False,
rotation_range=10,
zoom_range = 0.1,
width_shift_range=0.1,
height_shift_range=0.1,
horizontal_flip=False,
vertical_flip=False)


datagen.fit(X_train)​



Coming to building a model, Here custom model has been build with Hyperparameter tuning


# Define the model structure.


model = Sequential()

model.add(Conv2D(16,
kernel_size=(3, 3),
padding = 'Same',
activation='relu',
input_shape=(28,28,3)))
model.add(MaxPool2D(pool_size=(2, 2)))

model.add(Conv2D(16,
kernel_size=(3, 3),
padding = 'Same',
activation='relu'))
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(Conv2D(32,
kernel_size=(3, 3),
padding = 'Same',
activation='relu'))
model.add(MaxPool2D(pool_size=(2, 2)))
model.add(Conv2D(64,
kernel_size=(3, 3),
padding = 'Same',
activation='relu'))


model.add(MaxPool2D(pool_size=(2, 2)))


model.add(Dropout(0.4))



model.add(Flatten())


model.add(Dense(128, activation='relu'))




model.add(Dense(2, activation='softmax'))​


The loss and optimizer is as follows:


# Compile the model.
model.compile(loss='categorical_crossentropy',
optimizer='RMSprop',
metrics=['accuracy']) ​


Finally lets check loss and accuracy of our model:


plt.plot(model_history.history['loss'])
plt.plot(model_history.history['val_loss'])
plt.title('model_loss')
plt.ylabel('loss')
plt.xlabel('epochs')
plt.legend(['train','validation'],loc='upper left')
plt.show()


 

plt.plot(model_history.history['accuracy'])
plt.plot(model_history.history['val_accuracy'])
plt.title('model_accuracy')
plt.ylabel('accuracy')
plt.xlabel('epochs')
plt.legend(['train','validation'],loc='upper left')
plt.show()



Thank You.



0 comments