image classification using cnn
[no math version]
@debarko
Practo
whoami
Debarko De
Practo
Talk : twitter/debarko
Code : github/debarko
Practo : dd@practo.comwhat to expect
Why 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?
Agenda
Features
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 Feature
Extractor
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 1
0 1 0
1 0 1
Kernel
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 Keras
from keras.models import Sequential
from keras.layers import Dense
import numpy
# Create first network with Keras
from keras.models import Sequential
from keras.layers import Dense
import numpy
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# Create first network with Keras
from keras.models import Sequential
from keras.layers import Dense
import numpy
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load pima indians dataset
dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
# Create first network with Keras
from keras.models import Sequential
from keras.layers import Dense
import numpy
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load pima indians dataset
dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]
# create model
model = Sequential()
# create model
model = Sequential()
model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))
# create model
model = Sequential()
model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))
model.add(Dense(8, init='uniform', activation='relu'))
# create model
model = 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 model
model = 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 model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# create model
model = 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 model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X, Y, nb_epoch=150, batch_size=10)
# create model
model = 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 model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X, Y, nb_epoch=150, batch_size=10)
# evaluate the model
scores = model.evaluate(X, Y)
# create model
model = 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 model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X, Y, nb_epoch=150, batch_size=10)
# evaluate the model
scores = model.evaluate(X, Y)
print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
Entire Code
# Create first network with Keras
from keras.models import Sequential
from keras.layers import Dense
import numpy
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load pima indians dataset
dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]
# create model
model = 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 model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X, Y, nb_epoch=150, batch_size=10)
# evaluate the model
scores = 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

Image classification using cnn

  • 1.
    image classification usingcnn [no math version] @debarko Practo
  • 2.
    whoami Debarko De Practo Talk :twitter/debarko Code : github/debarko Practo : dd@practo.comwhat to expect Why 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?
  • 3.
    Agenda Features Problem statement &Impact Trainable Feature Extractors What is a CNN Transfer Learning Libraries Projects Fanciness References
  • 11.
  • 12.
    Hand Crafted Feature Extractor Simpleclassifiers Trainable Feature Extractor Trainable Classifiers
  • 13.
  • 14.
  • 15.
    x * W= y’
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
    Convolution Layer (Dot Product) 10 1 0 1 0 1 0 1 Kernel
  • 21.
  • 22.
  • 23.
    Why now? 2006 DeepNetpaper [Link] Computational power Libraries Lot of data → Imagenet GPU Power
  • 27.
    # Create firstnetwork with Keras from keras.models import Sequential from keras.layers import Dense import numpy
  • 28.
    # Create firstnetwork with Keras from keras.models import Sequential from keras.layers import Dense import numpy # fix random seed for reproducibility seed = 7 numpy.random.seed(seed)
  • 29.
    # Create firstnetwork with Keras from keras.models import Sequential from keras.layers import Dense import numpy # fix random seed for reproducibility seed = 7 numpy.random.seed(seed) # load pima indians dataset dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
  • 30.
    # Create firstnetwork with Keras from keras.models import Sequential from keras.layers import Dense import numpy # fix random seed for reproducibility seed = 7 numpy.random.seed(seed) # load pima indians dataset dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",") # split into input (X) and output (Y) variables X = dataset[:,0:8] Y = dataset[:,8]
  • 31.
    # create model model= Sequential()
  • 32.
    # create model model= Sequential() model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))
  • 33.
    # create model model= Sequential() model.add(Dense(12, input_dim=8, init='uniform', activation='relu')) model.add(Dense(8, init='uniform', activation='relu'))
  • 34.
    # create model model= 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'))
  • 35.
    # create model model= 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 model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
  • 36.
    # create model model= 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 model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Fit the model model.fit(X, Y, nb_epoch=150, batch_size=10)
  • 37.
    # create model model= 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 model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Fit the model model.fit(X, Y, nb_epoch=150, batch_size=10) # evaluate the model scores = model.evaluate(X, Y)
  • 38.
    # create model model= 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 model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Fit the model model.fit(X, Y, nb_epoch=150, batch_size=10) # evaluate the model scores = model.evaluate(X, Y) print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
  • 39.
  • 40.
    # Create firstnetwork with Keras from keras.models import Sequential from keras.layers import Dense import numpy # fix random seed for reproducibility seed = 7 numpy.random.seed(seed) # load pima indians dataset dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",") # split into input (X) and output (Y) variables X = dataset[:,0:8] Y = dataset[:,8] # create model model = 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 model model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # Fit the model model.fit(X, Y, nb_epoch=150, batch_size=10) # evaluate the model scores = model.evaluate(X, Y) print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
  • 41.
  • 42.
    Layer 1 Layer 2 Layer3 Layer 4 Layer 5 Visual Geometry Group ImageNet
  • 44.
    Few projects thatyou 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
  • 51.
    References Basic Upto SpeedSlideshow 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
  • 52.

Editor's Notes

  • #27 Keras + tensorflow
  • #28 http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/
  • #29 http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/
  • #30 http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/
  • #31 http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/
  • #32 http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/
  • #33 http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/
  • #34 http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/
  • #35 http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/
  • #36 http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/
  • #37 http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/
  • #38 http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/
  • #39 http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/
  • #40 http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/
  • #41 http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/
  • #42 http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/