image classification using cnn
TRANSCRIPT
image classification using cnn[no math version]
@debarko
Practo
whoamiDebarko De
Practo
Talk : twitter/debarko
Code : github/debarko
Practo : [email protected] to expectWhy use CNN and not regular image processing
How to easily build one for your tasks
How you can implement
This is NOT a tutorial for any of the libraries involved
Where to study more?
We will NOT be talking maths… This is strictly applications of CNN talk
AgendaFeatures
Problem statement & Impact
Trainable Feature Extractors
What is a CNN
Transfer Learning
Libraries
Projects
Fanciness
References
Problem Statement & Impact
Hand Crafted Feature Extractor
Simple classifiers
Trainable FeatureExtractor
Trainable Classifiers
CNN
if x input then y output
x * W = y’
W is kernel/filter
y != y’
E = f(Y,Y’)
CNN
Convolution Layer(Dot Product)
1 0 10 1 01 0 1Kernel
Pooling Layer(Max, Mean, Avg)
Gradient Descent
Why now?
2006 DeepNet paper [Link]
Computational power
Libraries
Lot of data → Imagenet
GPU Power
# Create first network with Kerasfrom keras.models import Sequentialfrom keras.layers import Denseimport numpy
# Create first network with Kerasfrom keras.models import Sequentialfrom keras.layers import Denseimport numpy
# fix random seed for reproducibilityseed = 7numpy.random.seed(seed)
# Create first network with Kerasfrom keras.models import Sequentialfrom keras.layers import Denseimport numpy
# fix random seed for reproducibilityseed = 7numpy.random.seed(seed)# load pima indians datasetdataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
# Create first network with Kerasfrom keras.models import Sequentialfrom keras.layers import Denseimport numpy
# fix random seed for reproducibilityseed = 7numpy.random.seed(seed)# load pima indians datasetdataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")# split into input (X) and output (Y) variablesX = dataset[:,0:8]Y = dataset[:,8]
# create modelmodel = Sequential()
# create modelmodel = Sequential()model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))
# create modelmodel = Sequential()model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))model.add(Dense(8, init='uniform', activation='relu'))
# create modelmodel = Sequential()model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))model.add(Dense(8, init='uniform', activation='relu'))model.add(Dense(1, init='uniform', activation='sigmoid'))
# create modelmodel = Sequential()model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))model.add(Dense(8, init='uniform', activation='relu'))model.add(Dense(1, init='uniform', activation='sigmoid'))# Compile modelmodel.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# create modelmodel = Sequential()model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))model.add(Dense(8, init='uniform', activation='relu'))model.add(Dense(1, init='uniform', activation='sigmoid'))# Compile modelmodel.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])# Fit the modelmodel.fit(X, Y, nb_epoch=150, batch_size=10)
# create modelmodel = Sequential()model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))model.add(Dense(8, init='uniform', activation='relu'))model.add(Dense(1, init='uniform', activation='sigmoid'))# Compile modelmodel.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])# Fit the modelmodel.fit(X, Y, nb_epoch=150, batch_size=10)# evaluate the modelscores = model.evaluate(X, Y)
# create modelmodel = Sequential()model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))model.add(Dense(8, init='uniform', activation='relu'))model.add(Dense(1, init='uniform', activation='sigmoid'))# Compile modelmodel.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])# Fit the modelmodel.fit(X, Y, nb_epoch=150, batch_size=10)# evaluate the modelscores = model.evaluate(X, Y)print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
Entire Code
# Create first network with Kerasfrom keras.models import Sequentialfrom keras.layers import Denseimport numpy
# fix random seed for reproducibilityseed = 7numpy.random.seed(seed)# load pima indians datasetdataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")# split into input (X) and output (Y) variablesX = dataset[:,0:8]Y = dataset[:,8]
# create modelmodel = Sequential()model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))model.add(Dense(8, init='uniform', activation='relu'))model.add(Dense(1, init='uniform', activation='sigmoid'))# Compile modelmodel.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])# Fit the modelmodel.fit(X, Y, nb_epoch=150, batch_size=10)# evaluate the modelscores = model.evaluate(X, Y)print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
VGGNet
Layer 1
Layer 2
Layer 3
Layer 4
Layer 5
Visual Geometry Group ImageNet
Few projects that you guys can easily work on
Review sentiment analysis on Practo / Zomato / Flipkart
Customer Conversion Analysis based on behavioural data
Inventory Stocking based on Search queries w.r.t location
Auto analysis and tagging of Support calls
Transcribe audio based on audio in phone calls and create tickets automatically
Any data understanding which can be spread out in a visual format or any time series data
References
Basic Upto Speed Slideshow
Basic Lingo Catchup video for CNN
CS231n → Defacto & Best Online Course Work for CNNs
CS231n Assignments → http://cs231n.github.io/
Follow
@karpathy @drfeifei
Book
Fundamentals of Deep Learning: Designing Next-Generation Machine Intelligence Algorithms 1st Edition by Nikhil Buduma
धन्यवाद
twitter.com/debarko