SlideShare a Scribd company logo
1 of 45
Download to read offline
Not Hotdog -
kako napraviti aplikaciju
baziranu na strojnom učenju?
Jurica Cerovec
3. 4. 2018.
Strojno učenje
Strojno učenje je
naprimjenjivije za:
• Raspoznavanje slika
• Obrada teksta
• Predikcija (financije, marketing)
• Generiranje zvuka, slika…
• Preporučivanje
• …
Primjeri mobilnih
aplikacija
Tinder
Not Hotdog!
Proći ćemo zajedno kroz
implementaciju iOS
aplikacije Not Hotdog
Postoji ogromna količina
materijala o strojnom
učenju!
Materijali o Strojnom učenju
•Strojno učenje, Duboko učenje, Raspoznavanje
uzoraka, Neuronske mreže, Računalni vid…
(FER, 4. godina)
•Deep Learning Specialization by Andrew Ng
(Coursera)
•CS231n (Stanford, Andrej Karpathy)
U industriji se najviše
koristi nadzirano učenje
Strojno učenje za mobile
i web developere
Koje su najvažnije odluke kod
izrade mobilne aplikacije
temeljene na strojnom učenju?
Glavne odluke
•Kako učiti (i naučiti) model?
•Kako raditi deployment naučenog
modela?
Kako učiti model
•Definiranje domene problema i
dataseta
•Eksperimentiranje s arhitekturama i
učenjem
•Odabir frameworka za učenje
Odabir frameworka za učenje
•Ima implikacije na kasnije odluke!
•Tensorflow, PyTorch, Keras, MXNet…
Kako deployati model
•Cloud deployment
•On device deployment
Cloud deployment
Pros Cons
Jedan deployment za sve kanale
(iOS, Android, web)
Lošiji UX - potreban je i upload
podataka
Omogućuje jednostavno
prikupljanje podataka za dataset
App ne radi offline
Omogućuje korištenje većih
(dubljih) modela
Korisnici mogu biti zabrinuti za
privatnost podataka
Cijena - cloud infrastruktura
košta!
On-device deployment
Pros Cons
Idealan UX - za većinu primjena
modeli su dovoljno mali i brzi
Potencijalno značajno veći
development effort
App radi i offline
Prikupljanje podataka nije out of
the box, potrebno razviti
Čuva se privatnost korisničkih
podataka
Zahtijeva izradu manjih (plićih)
modela
Cijena - processing se prebacuje
na uređaj korisnika
Kako deployati model -
trendovi
•On device processing dobiva zamah!
•SoC proizvođači rade custom hardware za
izvođenje neuronskih mreža
•Veliki igrači u ML-u rade prilagođene inference
sustave (Tensorflow Lite, Caffe2Go, CoreML..)
On-device deployment - opcije
CoreML
iOS specific, ali podržan na 95+%
iOS uređaja!
TensorFlow Lite
Rješenje za sve platforme, no još u
development fazi
Caffe2Go Lošije performanse
Android NNAPI Radi samo na Android 8.1+
Custom rješenje Skupo za razvoj!
CoreML
Velik broj gotovih modela!
•MobileNet
•SqueezeNet
•Inception v3
•ResNet50
•VGG16
Agnostičan na framework za
učenje
•Keras
•MXNet
•PyTorch
•Tensorflow (novo!)
Not Hotdog!
https://github.com/cerovec/not-hotdog
Razvojni proces aplikacija
baziranih na strojnom učenju
Uključeni timovi
• Product Management team - promišlja o cijelom proizvodu i
procesu
• Mobile team - iterativno poboljšava proizvod
• Web team - brine o sustavima za pripremu podatka
• Data team - brine da su podaci ispravno pripremljeni
• Research team - radi eksperimente i istražuje mogućnosti
korištenja strojnog učenja
• Applied ML team - koristi podatke i dolazi do produkcijskih
modela
Better Product
More Data More Users
Gives
Gives
Creates
Machine Learning za
mobile i web
Mozgalo
App Start Contest
Job Fair
Studentske prakse
Kako će machine learning
utjecati na inženjere koji će raditi
na mobilnim aplikacijama?
Kako inženjer koji radi na
mobilnoj aplikaciji može koristiti
modele strojnog učenja?
Koje mogućnosti ima na
raspolaganju i kada ih treba
koristiti?
Kako treba izgledati razvojni
proces aplikacije koja koristi
strojno učenje?
Microblink
Photomath
Jurica Cerovec
jurica.cerovec@microblink.com
microblink.com/jobs
photomath.net/jobs

More Related Content

Similar to ASC 2018 - Not Hotdog!

Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranjaRp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranjaGoran Igaly
 
WebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacijeWebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacijeMatija Šmalcelj
 
Dizajn Softvera.pptx
Dizajn Softvera.pptxDizajn Softvera.pptx
Dizajn Softvera.pptxBojanGrujic4
 
Razvoj softvera: crno/bijeli svijet?
Razvoj softvera: crno/bijeli svijet?Razvoj softvera: crno/bijeli svijet?
Razvoj softvera: crno/bijeli svijet?Robert Lujo
 
Symfony2 – kome je namijenjen i zašto ga
Symfony2 – kome je namijenjen i zašto gaSymfony2 – kome je namijenjen i zašto ga
Symfony2 – kome je namijenjen i zašto gaAntonio Peric-Mazar
 
(WS14) Antonio Peric Mazar - Symfony2 - kome je namijenjen i zašto ga odabrati?
(WS14) Antonio Peric Mazar - Symfony2 - kome je namijenjen i zašto ga odabrati?(WS14) Antonio Peric Mazar - Symfony2 - kome je namijenjen i zašto ga odabrati?
(WS14) Antonio Peric Mazar - Symfony2 - kome je namijenjen i zašto ga odabrati?Web::Strategija
 
Kako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloudKako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloudDubravko Marak
 
Analiza softverske imovine koju koristite - prvi korak migraciji u Cloud
Analiza softverske imovine koju koristite - prvi korak migraciji u CloudAnaliza softverske imovine koju koristite - prvi korak migraciji u Cloud
Analiza softverske imovine koju koristite - prvi korak migraciji u CloudTomislav Lulic
 
Razvoj Softvera Za Android Os
Razvoj Softvera Za Android OsRazvoj Softvera Za Android Os
Razvoj Softvera Za Android OsViktor Brešan
 
ATD 2016 - ASP.NET Core Advanced
ATD 2016 - ASP.NET Core AdvancedATD 2016 - ASP.NET Core Advanced
ATD 2016 - ASP.NET Core AdvancedNETMedia
 
Radionica specificnosti razvoja informatickih kadrova
Radionica specificnosti razvoja informatickih kadrovaRadionica specificnosti razvoja informatickih kadrova
Radionica specificnosti razvoja informatickih kadrovaDejan Jeremic
 
Microsoft Community sastanak - Vođenje softverske imovine
Microsoft Community sastanak - Vođenje softverske imovineMicrosoft Community sastanak - Vođenje softverske imovine
Microsoft Community sastanak - Vođenje softverske imovineTomislav Lulic
 
Rjesavanje problema i racunar
Rjesavanje problema i racunarRjesavanje problema i racunar
Rjesavanje problema i racunarKristinaGoranovi
 
00 --- UVOD U PYTHON.pptx
00 --- UVOD U PYTHON.pptx00 --- UVOD U PYTHON.pptx
00 --- UVOD U PYTHON.pptxxili5
 
Sastanak zajednice Microsoft prodavača - Sales readiness
Sastanak zajednice Microsoft prodavača - Sales readinessSastanak zajednice Microsoft prodavača - Sales readiness
Sastanak zajednice Microsoft prodavača - Sales readinessTomislav Lulic
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. Stipe Predanic
 
Scrum Master Essentials Course
Scrum Master Essentials CourseScrum Master Essentials Course
Scrum Master Essentials CourseKemal Bajramović
 

Similar to ASC 2018 - Not Hotdog! (20)

Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranjaRp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
Rp1 predavanja 02 - Koncepti objektno orijentiranog programiranja
 
WebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacijeWebUG - Hibridne mobilne aplikacije
WebUG - Hibridne mobilne aplikacije
 
Dizajn Softvera.pptx
Dizajn Softvera.pptxDizajn Softvera.pptx
Dizajn Softvera.pptx
 
Razvoj softvera: crno/bijeli svijet?
Razvoj softvera: crno/bijeli svijet?Razvoj softvera: crno/bijeli svijet?
Razvoj softvera: crno/bijeli svijet?
 
Symfony2 – kome je namijenjen i zašto ga
Symfony2 – kome je namijenjen i zašto gaSymfony2 – kome je namijenjen i zašto ga
Symfony2 – kome je namijenjen i zašto ga
 
(WS14) Antonio Peric Mazar - Symfony2 - kome je namijenjen i zašto ga odabrati?
(WS14) Antonio Peric Mazar - Symfony2 - kome je namijenjen i zašto ga odabrati?(WS14) Antonio Peric Mazar - Symfony2 - kome je namijenjen i zašto ga odabrati?
(WS14) Antonio Peric Mazar - Symfony2 - kome je namijenjen i zašto ga odabrati?
 
Kako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloudKako pretvoriti server_sobu_u_cloud
Kako pretvoriti server_sobu_u_cloud
 
Masinsko ucenje
Masinsko ucenjeMasinsko ucenje
Masinsko ucenje
 
Analiza softverske imovine koju koristite - prvi korak migraciji u Cloud
Analiza softverske imovine koju koristite - prvi korak migraciji u CloudAnaliza softverske imovine koju koristite - prvi korak migraciji u Cloud
Analiza softverske imovine koju koristite - prvi korak migraciji u Cloud
 
Razvoj Softvera Za Android Os
Razvoj Softvera Za Android OsRazvoj Softvera Za Android Os
Razvoj Softvera Za Android Os
 
ATD 2016 - ASP.NET Core Advanced
ATD 2016 - ASP.NET Core AdvancedATD 2016 - ASP.NET Core Advanced
ATD 2016 - ASP.NET Core Advanced
 
Radionica specificnosti razvoja informatickih kadrova
Radionica specificnosti razvoja informatickih kadrovaRadionica specificnosti razvoja informatickih kadrova
Radionica specificnosti razvoja informatickih kadrova
 
Microsoft Community sastanak - Vođenje softverske imovine
Microsoft Community sastanak - Vođenje softverske imovineMicrosoft Community sastanak - Vođenje softverske imovine
Microsoft Community sastanak - Vođenje softverske imovine
 
Rjesavanje problema i racunar
Rjesavanje problema i racunarRjesavanje problema i racunar
Rjesavanje problema i racunar
 
Fyi 18 web
Fyi 18 webFyi 18 web
Fyi 18 web
 
00 --- UVOD U PYTHON.pptx
00 --- UVOD U PYTHON.pptx00 --- UVOD U PYTHON.pptx
00 --- UVOD U PYTHON.pptx
 
Sastanak zajednice Microsoft prodavača - Sales readiness
Sastanak zajednice Microsoft prodavača - Sales readinessSastanak zajednice Microsoft prodavača - Sales readiness
Sastanak zajednice Microsoft prodavača - Sales readiness
 
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11. [TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
[TVZ računarstvo] Dinamičke web aplikacije, predavanje 11.
 
JavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
JavaCro'14 - MEAN Stack – How & When – Nenad PećanacJavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
JavaCro'14 - MEAN Stack – How & When – Nenad Pećanac
 
Scrum Master Essentials Course
Scrum Master Essentials CourseScrum Master Essentials Course
Scrum Master Essentials Course
 

ASC 2018 - Not Hotdog!