Distributed Deep Learning and Transfer Learning with Spark, Keras and DLS
Favio Vázquez
Data Scientist
@faviovaz
Webinars
Eric Feuilleaubois
Phd in Artificial Neural Networks
@Deep_In_Depth
Introduction to Transfer Learning with Convolutional Neural Networks
Webinars
Deep Learner / Machine Learner
Curator of Deep_In_Depth - news feed on Deep Learning, Machine Learning and Data Science
Writer for Medium - Towards data science
Eric Feuilleaubois
Phd in Artificial Neural Networks
@Deep_In_Depth
Principle of Transfer Learning
Aim: Predict classes (labels) that have not been seen by the source (pre-trained) model
ImageNet Dataset
n07714571 - head cabbage
n07714990 - broccoli
n07715103 - cauliflower
n07716358 - zucchini, courgette
n07718472 - cucumber, cuke
n07718747 - artichoke, globe artichoke
n07720875 - bell pepper
n07730033 - cardoon
n07734744 - mushroom
n07742313 - Granny Smith
n07745940 - strawberry
n07747607 - orange
n07749582 - lemon
n07753113 - fig
n07753275 - pineapple, ananas
n07753592 - banana
n07768694 - pomegranate
- 1,000 image categories
- Training - 1,2 Million images
- Validation & test - 150,000 images
Veg Dataset - 4124 records
Pumpkin
Tomato
Watermelon
Motivations for CNN TL
- Availability of Open CNN Models with Top class performance
CNN Transfer Learning
Proof by Features
- CNNs detect visual features (patterns) in images
- First layers learn "basic" features
- Last layers learn "advanced" features
- Top layers classify
Basic features are very similar from one CNN model to another --> No need to
re-learn them, best to re-use them
DL model with pre-trained VGG16
Training results
Dataset | Train Acc. (%) |
Validation Acc. (%) |
---|---|---|
300 - 7% | 95 | 88 |
600 - 14% | 96 | 89 |
900 - 21% | 97 | 90 |
3917 - 95% | 97 | 91 |
300 - with Data Aug. | 98 | 88 |
600- with Data Aug. | 98 | 90 |
900- with Data Aug. | 98 | 90 |
Wrong results
300 - 600 - 900
WaterMelon
Pumpkin
300 - 600 - 900
WaterMelon
300 - 600
Training Dataset
Result for "difficult" images
Pumpkin
WaterMelon
Tomato
300 - 600 - 900
300 - 600 - 900
300 - 600 - 900
Fine-tuning TL models
Two approaches:
1) Fine tune the convolutional part of the CNN
- Retrained the last convolutional layer (Deep Learning Studio provide easy way to do it)
- Freezing and training specific layers
2) Fine tune the classification part of the CNN
- Classification architecture optimisation
- number of neuron in the classification layers
- Hyper-parameter optimization
Simpler DL model with pre-trained VGG16
Training results
Dataset | Train Acc. (%) |
Validation Acc. (%) |
---|---|---|
300 - Simpler | 99 | 88 |
300 - 512 - 64 | 99 | 86 |
300 - MSimpler-no BN | 98 | 84 |
300 - Simpler VGG 10% trainable |
99 | 89 |
3917 - 95% - Simpler | 98 | 93.5 |
95% - MSimpler-no BN | 40 | 35 |
95% - MSimpler- BN | 97 | 92 |
Benefits of CNN
Transfer Learning
- Dataset does not need to be huge
- Save time and effort
- no CNN architecture search
- training phase faster
- less computing power needed
- Produce very good models that can then be fine tune
- Can be applied to very diverse classification problem
And drawbacks:
- need a fair amount of memory on GPU
- not fully tunable with Keras
Distributed Deep Learning with Spark, Keras and DLS
Favio Vázquez
Data Scientist
@faviovaz
https://github.com/faviovazquez
https://www.linkedin.com/in/faviovazquez/
Webinars
Outline
Timeline
Fundamentals of Apache Spark
Deep Learning Pipelines
Apache Spark on Deep Cognition
Apache Spark
Favio Vázquez
About me
- Venezuelan
- Physicist and Computer Engineer
- Master in Physics UNAM
- Data Scientist
- Collaborator of Apache Spark project on GitHub and StackOverFlow
- Principal Data Scientist at Oxxo
- Chief Data Scientist at Iron
- Main Developer of Optimus
- Creator of Ciencia y Datos
Favio Vázquez
- Very active member of LinkedIn ;)
- Editor - International Journal of Business Analytics and Intelligence
- Lecturer Afi (Data Science program-MX)
- Writer in Towards Data Science, Becoming Human, Planeta Chatbot and more :)
About me
Favio Vázquez
2004 – Google
MapReduce: Simplified Data Processing on Large Clusters
Jeffrey Dean and Sanjay Ghemawat research.google.com/archive/mapreduce.html
2006 – Apache
Hadoop, originating from the Nutch Project
Doug Cutting research.yahoo.com/files/cutting.pdf
2008 – Yahoo
web scale search indexing
Hadoop Summit, HUG, etc. developer.yahoo.com/hadoop/
2009 – Amazon AWS
Elastic MapReduce
Hadoop modified for EC2/S3, plus support for Hive, Pig, Cascading, etc. aws.amazon.com/elasticmapreduce/
Favio Vázquez
What is Spark?
Is a fast and general engine for large-scale data processing.
Favio Vázquez
Unified Engine
High level APIs with space for optimization
- Expresses all the workflow with a single API
- Connects existing libraries and storage systems
Favio Vázquez
RDD
Transformations
Actions
Caché
Dataset
Tiped
Scala & Java
RDD Benefits
Dataframe
Dataset[Row]
Optimized
Versatile
Favio Vázquez
Deep Learning Pipelines
Deep Learning Pipelines is an open source library created by Databricks that provides high-level APIs for scalable deep learning in Python with Apache Spark.
Favio Vázquez
Apache Spark on Deep Cognition
Favio Vázquez
Apache Spark on Deep Cognition
- How to load an image to Apache Spark
- How to apply pre-trained models as transformers in a Spark ML pipeline
- Transfer learning with Apache Spark
- Deploying models in DataFrames and SQL
We will learn:
Favio Vázquez
Favio Vázquez
Competition and Prices!!
Take my article on Detecting Breast Cancer with Deep Learning, and using DLS solve it by yourselves!
Create a post or blog, and the top 10 will win $50 Amazon gift card each
DEMO
Favio Vázquez
Distributed Deep Learning and Transfer Learning with Spark, Keras and DLS
By Favio Vazquez
Distributed Deep Learning and Transfer Learning with Spark, Keras and DLS
- 1,925