Aprenderás los conceptos basico de deep learning y como crear tu aplicación de Android que puede detectar y etiquetar imágenes utilizando un modelo de Tensorflow Lite
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
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...
Kaggle
● https://www.kaggle.com/c/dogs-vs-cats/
● https://forums.fast.ai/t/tips-for-building-large-image-datasets/26688
19
22. TASK FOR OUR EXAMPLE
22
Identify if it is a
Cat or a Dog
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:
Type Probability
Cat 0.01
Dog 0.99
27
Based on the output, we can see that
the classification model has predicted
that the image has a high probability
of representing a Dog
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
cat (score=0.99956)
dog (score=0.00043)
python3 -m scripts.label_image
--graph=tf_files/retrained_graph.pb
--image=tf_files/cat_dogs_photos/cat/"1.cat.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. 5.- learning algorithm
The Learning Algorithms also known as
Optimization algorithms helps us to minimize
Error
32
33. 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
33
37. 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
37
39. USING THE RETRAINED MODEL
3939
Evaluation time (1-image): 0.250s
cat (score=0.99956)
dog (score=0.00043)
python3 -m scripts.label_image
--graph=tf_files/retrained_graph.pb
--image=tf_files/cat_dogs_photos/cat/"1.cat.jpg"
40. TENSORFLOW LITE
40
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
41. Command line: tflite_convert
Starting from TensorFlow
1.9, the command-line tool
tflite_convert is installed as
part of the Python package.
41
pip install --upgrade "tensorflow==1.9.*"
45. repositories {
maven {
url 'https://google.bintray.com/tensorflow'
}
}
dependencies {
// ...
compile 'org.tensorflow:tensorflow-lite:+'
}
TensorFlow Lite interpreter
45
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
46. Load model and create interpreter
protected Classifier… {
tfliteOptions.setNumThreads(numThreads);
tflite = new Interpreter(tfliteModel, tfliteOptions);
labels = loadLabelList(activity);
...
}
46
// 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";
Dog: 1.00
47. cAMERA, Read the labels…..
47
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()));
48. Show the results
48
// 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()
cat (score=0.00000)
dog (score=1.00000)
Dog: 1.00