8. 8
🤯 After the class…..
The key outcome of this lesson is that we'll have trained an
image classifier which can recognize pet breeds at state of
the art accuracy. The key to this success is the use of
transfer learning, which will be a key platform for much of
this course.
We also discuss how to set the most important
hyper-parameter when training neural networks:
the learning rate, using Leslie Smith's fantastic learning rate
finder method. Finally, we'll look at the important but rarely
discussed topic of labeling, and learn about some of the
features that fastai provides for allowing you to easily add
labels to your images. https://course.fast.ai/videos/?lesson=1
9. challenges….
‐ Many courses, even basic, assume that
you already know the subject.
‐ Reaching the final result without
learning the basics is not good.
9
10. “When you are starting to learn about
Deep Learning it seems that there
are thousands of concepts,
mathematical functions and
scientific articles that you have to
read.
10
myths
13. Let’s take a look of the
implementation
We are going to build an app to
classify the artisanal beers of
Cervecería Colima
Place your screenshot here
13
14. 1.- dATA
Data is distinct pieces of information which
acts as a fuel
14
17. How? Where do we get data from?
Data curation is the organization and integration
of data collected from various sources.
17
Techniques
You can use techniques like Questionnaires and surveys,
conducting interviews, using data scraping and data
crawling techniques.
18. Public datasets
● Google AI
● UCI ML Repository
● Data.gov.in
● Kaggle
Where do we get data from?
Crowdsourcing
Marketplaces
● Amazon Mechanical
Turk
● Dataturks
● Figure-eight
18
19. BACK TO OUR EXAMPLE...
● Google Images
● https://github.com/hardikvasa/google-images-download
● https://forums.fast.ai/t/tips-for-building-large-image-datasets/26688
19
22. TASK FOR OUR EXAMPLE
22
Classify Images of
Artisanal Beers
23. Image classification
A common use of machine learning is to identify
what an image represents.
The task of predicting what an image
represents is called image classification.
23
25. models
25
There are many models that are created over
the years.
Each model has its own advantages and
disadvantages based on the type of data on
which we are creating a model.
26. IMAGE CLASSIFICATION MODEL
An image classification model is trained to recognize various
classes of images.
26
When we subsequently
provide a new image as input
to the model, it will output the
probabilities of the image
representing each of the
types it was trained on.
27. An example output might be as follows:
Beer type Probability
Cayaco 0.02
Colimita 0.96
Piedra Lisa 0.01
Ticus 0.00
Paramo 0.01
27
Based on the output, we
can see that the
classification model has
predicted that the image
has a high probability of
representing a Colimita
Beer.
28. In this example, we will retrain a
MobileNet. MobileNet is a a small efficient
convolutional neural network.
https://ai.googleblog.com/2017/06/mobilenets-open-source-models-for.html
Model for our example
28
29. Retraining the mobileNet model
29
We use MobileNet model and retrain it.
python3 -m scripts.retrain
--bottleneck_dir=tf_files/bottlenecks
--model_dir=tf_files/models/"${ARCHITECTURE}"
--summaries_dir=tf_files/training_summaries/"${ARCHITECTURE}"
--output_graph=tf_files/retrained_graph.pb
--output_labels=tf_files/retrained_labels.txt
--architecture="${ARCHITECTURE}"
--image_dir=tf_files/beer_photos
IMAGE_SIZE=224
ARCHITECTURE="mobilenet_0.50_${IMAGE_SIZE}"
tHE RESULT...
30. USING THE RETRAINED MODEL
3030
Evaluation time (1-image): 0.250s
ticus (score=0.99956)
paramo (score=0.00043)
cayaco (score=0.00000)
piedra lisa (score=0.00000)
colimita (score=0.00000)
python3 -m scripts.label_image
--graph=tf_files/retrained_graph.pb
--image=tf_files/beer_photos/ticus/"3. ticus.jpg"
31. 4.- loss function
How do we know which model is better?
Loss function (also known as the error)
answers this question.
31
32. Models and loss function
How good a
prediction model
does in terms of
being able to predict
the expected
outcome.
32
33. Classification losses:
● Mean Square Error/L2 Loss
● Mean Absolute Error/L1 Loss
Regression losses:
● Hinge Loss/Multi-class SVM Loss
● Cross Entropy
● Loss/Negative Log Likelihood
LOSS FUNCTIONS
To know which model
is good for our data,
we compute the loss
function by
comparing the
predicted outputs to
actual output.
33
34. 5.- learning algorithm
The Learning Algorithms also known as
Optimization algorithms helps us to minimize
Error
34
35. First Order Optimization
Algorithms
● Gradient Descent
Types of learning algorithms
Second Order Optimization
Algorithms
● Hessian
https://towardsdatascience.com/types-of-optimization-algorithms-used-in-neural-networks-and-
ways-to-optimize-gradient-95ae5d39529f
35
36. Is something you do everyday...
You are optimizing
variables and basing your
personal decisions all day
long, most of the time
without even recognizing
the process consciously
https://mitsloan.mit.edu/ideas-made-to-matter/how-to-use
-algorithms-to-solve-everyday-problems
36
42. MACHINE LEARNING IN YOUR APPS
● ML Kit For Firebase
● Core ML (Apple)
● TensorFlow Lite
● Cloud-based web services
● Your own service
Place your screenshot here
42
44. USING THE RETRAINED MODEL
4444
Evaluation time (1-image): 0.250s
ticus (score=0.99956)
paramo (score=0.00043)
cayaco (score=0.00000)
piedra lisa (score=0.00000)
colimita (score=0.00000)
python3 -m scripts.label_image
--graph=tf_files/retrained_graph.pb
--image=tf_files/beer_photos/ticus/"3. ticus.jpg"
45. TENSORFLOW LITE
45
TensorFlow Lite is a set of tools to
help developers run TensorFlow
models on mobile, embedded, and
IoT devices.
● TensorFlow Lite converter
● TensorFlow Lite interpreter
TensorFlow Lite converter
Converts TensorFlow models into
an efficient form for use by the
interpreter
46. Command line: tflite_convert
Starting from TensorFlow
1.9, the command-line tool
tflite_convert is installed as
part of the Python package.
46
pip install --upgrade "tensorflow==1.9.*"
50. repositories {
maven {
url 'https://google.bintray.com/tensorflow'
}
}
dependencies {
// ...
compile 'org.tensorflow:tensorflow-lite:+'
}
TensorFlow Lite interpreter
50
android {
aaptOptions {
noCompress "tflite"
noCompress "lite"
}
}
The TensorFlow Lite
interpreter is designed to be
lean and fast. The interpreter
uses a static graph ordering
and a custom (less-dynamic)
memory allocator to ensure
minimal load, initialization, and
execution latency.
dependencies
settings
51. Load model and create interpreter
protected Classifier… {
tfliteOptions.setNumThreads(numThreads);
tflite = new Interpreter(tfliteModel, tfliteOptions);
labels = loadLabelList(activity);
...
}
51
// Name of the model file stored in Assets.
private static final String MODEL_PATH = "graph.lite";
// Name of the label file stored in Assets.
private static final String LABEL_PATH = "labels.txt";
52. cAMERA, Read the labels…..
52
https://developer.android.com/training/camerax
// Convert the image to bytes
convertBitmapToByteBuffer(bitmap);
// An array to hold inference results, to be feed
into Tensorflow Lite as outputs.
PriorityQueue<Map.Entry<String, Float>> sortedLabels =
new PriorityQueue<>(
RESULTS_TO_SHOW,
(element1, element2) ->
(element1.getValue()).compareTo(element2.getValue()));
53. Show the results
53
// Get the results
textToShow = String.format("n%s: %4.2f", label.getKey(),
label.getValue())
// Label (In this case PARAMO)
label.getKey()
// Value (In this case 1.0)
label.getValue()
ticus (score=0.00000)
paramo (score=1.00000)
cayaco (score=0.00000)
piedra lisa (score=0.00000)
colimita (score=0.00000)