image classification using cnn

52
image classification using cnn [no math version] @debarko Pract o

Upload: debarko-de

Post on 08-Feb-2017

83 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Image classification using cnn

image classification using cnn[no math version]

@debarko

Practo

Page 2: Image classification using cnn

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

Page 3: Image classification using cnn

AgendaFeatures

Problem statement & Impact

Trainable Feature Extractors

What is a CNN

Transfer Learning

Libraries

Projects

Fanciness

References

Page 4: Image classification using cnn
Page 5: Image classification using cnn
Page 6: Image classification using cnn
Page 7: Image classification using cnn
Page 8: Image classification using cnn
Page 9: Image classification using cnn
Page 10: Image classification using cnn
Page 11: Image classification using cnn

Problem Statement & Impact

Page 12: Image classification using cnn

Hand Crafted Feature Extractor

Simple classifiers

Trainable FeatureExtractor

Trainable Classifiers

Page 13: Image classification using cnn

CNN

Page 14: Image classification using cnn

if x input then y output

Page 15: Image classification using cnn

x * W = y’

Page 16: Image classification using cnn

W is kernel/filter

Page 17: Image classification using cnn

y != y’

Page 18: Image classification using cnn

E = f(Y,Y’)

Page 19: Image classification using cnn

CNN

Page 20: Image classification using cnn

Convolution Layer(Dot Product)

1 0 10 1 01 0 1Kernel

Page 21: Image classification using cnn

Pooling Layer(Max, Mean, Avg)

Page 22: Image classification using cnn

Gradient Descent

Page 23: Image classification using cnn

Why now?

2006 DeepNet paper [Link]

Computational power

Libraries

Lot of data → Imagenet

GPU Power

Page 24: Image classification using cnn
Page 25: Image classification using cnn
Page 26: Image classification using cnn
Page 27: Image classification using cnn

# Create first network with Kerasfrom keras.models import Sequentialfrom keras.layers import Denseimport numpy

Page 28: Image classification using cnn

# Create first network with Kerasfrom keras.models import Sequentialfrom keras.layers import Denseimport numpy

# fix random seed for reproducibilityseed = 7numpy.random.seed(seed)

Page 29: Image classification using cnn

# 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=",")

Page 30: Image classification using cnn

# 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]

Page 31: Image classification using cnn

# create modelmodel = Sequential()

Page 32: Image classification using cnn

# create modelmodel = Sequential()model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))

Page 33: Image classification using cnn

# create modelmodel = Sequential()model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))model.add(Dense(8, init='uniform', activation='relu'))

Page 34: Image classification using cnn

# 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'))

Page 35: Image classification using cnn

# 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'])

Page 36: Image classification using cnn

# 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)

Page 37: Image classification using cnn

# 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)

Page 38: Image classification using cnn

# 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))

Page 39: Image classification using cnn

Entire Code

Page 40: Image classification using cnn

# 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))

Page 41: Image classification using cnn

VGGNet

Page 42: Image classification using cnn

Layer 1

Layer 2

Layer 3

Layer 4

Layer 5

Visual Geometry Group ImageNet

Page 43: Image classification using cnn
Page 44: Image classification using cnn

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

Page 45: Image classification using cnn
Page 46: Image classification using cnn
Page 47: Image classification using cnn
Page 48: Image classification using cnn
Page 51: Image classification using cnn

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

Page 52: Image classification using cnn

धन्यवाद

twitter.com/debarko