VASILYããã®ã¯ãã¼ã©ã¼ã¨ãã£ã¼ãã©ã¼ãã³ã°ã®è©±ãèãããã¦ãFashion Tech meetup #2ãã«åå ãã
Fashion Tech meetup #2 ã«åå ãã¦ãã¾ããã
fashion-tech.connpass.com
tech.vasily.jp
in.fablic.co.jp
ã¯ããã«
VASILYããã®ã¯ãã¼ã©ã¼ã®è©±ã¯é¢ç½ãã¦åã
ããDEVELOPERS BLOGãããèªãã§ãã¾ãã
ç§èªèº«ãã¢ãé¢ä¿ã®ã¨ã³ã¸ãã¢ããã¦ããã®ã§æ¥åã¬ã¤ã¤çã«ãå
±éããã¨ãããããã以ä¸ã®æ§ãªè¨äºã»ã¹ã©ã¤ããæ¯åèå³æ·±ãæè¦ãã¦ãã¾ãã
- iQONã§ã¯ãã¼ã«ããã¢ã¤ãã ç»åãã³ã¼ãã£ãã¼ãã«ä½¿ãããã¾ã§ - VASILY DEVELOPERS BLOG
- iQONãæ¯ããã400ãµã¤ãã®ã¯ãã¼ã©ã¼ã®è£å´ - VASILY DEVELOPERS BLOG
- iQONãæ¯ããã¯ãã¼ã©ã¼ã®è£å´ // slideshare
- iQONãæ¯ããã¯ãã¼ã©ã¼/iQON Crawler // Speaker Deck
- æ¥æ¬æ大ç´ã®ãã¡ãã·ã§ã³DBãæ¯ããè£å´/how to manage the complex web service // Speaker Deck
- ãã£ã¼ãã©ã¼ãã³ã°ã§æ´æãæ´çãã¦ã¿ã¾ãã - VASILY DEVELOPERS BLOG
- ãã£ã¼ãã©ã¼ãã³ã°ãæ´»ç¨ãããã¤ã¯ããµã¼ãã¹ãæ§ç¯ããç»åããååã«ãã´ãªã®åé¡ããã¦ã¿ã - VASILY DEVELOPERS BLOG
æè¿ã§ã¯ããã£ã¼ãã©ã¼ãã³ã°ãæ´»ç¨ãã¦ããã¨ãããã¨ã§è©³ãã話ãèãããã¦ä»ååå ãã¾ããã
çºè¡¨èªä½ã¯æé«ã«é¢ç½ãã¦coolã¨æããªãããããã¡ããã¡ãã¢ã«ãããã¯ã§é£ããã£ãã§ãã
ç§ãå«ãããã®è¨äºã{æ¸ã,èªã}ãã¨ã§å°ãã§ãçºè¡¨å
容ã®è£è¶³ã«ãªããã°ã¨æãã¾ãã
ããã£ã¼ãã©ã¼ãã³ã°ã使ã£ã¦ååã«ãã´ãªã®åé¡ããã¦ã¿ã¾ããã
çºè¡¨è
ã½ããã¦ã§ã¢ã¨ã³ã¸ãã¢ã®å¡©å´ããã¨ãã¼ã¿ãµã¤ã¨ã³ãã£ã¹ãã®å¾è¤ãã(@Ryosuke0624)ã
å°å
¥ã»èæ¯ã»ã¯ãã¼ã©ã¼å¨ãã®è©±ãå¡©å´ããããã£ã¼ãã©ã¼ãã³ã°å¨ãã®è©±ãå¾è¤ããã¨ãããéä¸ã§äº¤ä»£ããã¹ã¿ã¤ã«ã®çºè¡¨ã ã£ãã
iQONã¨ã¯
æ¥æ¬æ大ç´ã®ãã¡ãã·ã§ã³ã¢ããªãã¦ã¼ã¶ããã¡ãã·ã§ã³ã¢ã¤ãã ãçµã¿åããã¦ã³ã¼ããä½ããã
æ°ã«å
¥ã£ããããECãµã¤ãã«é£ãã§è²·ããã
ããã¹ãã«ããã«ãã´ãªã¼å¤å®ã®éç
ååæ
å ±ã¯ãæ¥æ¬ä¸ã®ECãµã¤ããã¯ãã¼ãªã³ã°ãã¦å¾ã¦ãã¦ãã«ãã´ãªåããè¡ã£ã¦ããã
ä»ã¾ã§ã¯ãã®ã«ãã´ãªåããããã¹ãã§è¡ã£ã¦ããã
å
·ä½çã«ã¯ãåå説æãå½¢æ
ç´ è§£æãã¦ãæèãèæ
®ããªããåèªãæ½åºããã
ã ããããã¹ãã ã¨ä¼¼ããããªååã§ç°ãªãã«ãã´ãªã®ãã®ãå¤å®ã§ããªãã
ã¹ã©ã¤ãã®ä¾ã ã¨ããã«ã ãããã¨ã±ã¼ãã«ãããï¼ã©ã¡ãããã»ã¼ã¿ã¼ãã©ã¡ãããããã帽ï¼ã
ç»åã ã¨ä¸ç®çç¶ãªã®ã§ãç»åã«ããã«ãã´ãªåé¡ãçµã¿è¾¼ããã¨ã«ã
ãã£ã¼ãã©ã¼ãã³ã°ã®ã¢ãã«ã®æ§ç¯
ããã§ãã¼ã¿ãµã¤ã¨ã³ãã£ã¹ãã®å¾è¤ããã«äº¤ä»£ã
ã»ã¼ã¿ã¼ã®ç»åã¨ããã帽ã®ç»åãå¤å®å¨ã«ããã¦ã«ãã´ãªãæ¨å®ããã
ããã°ãGoogle Cloud Vision APIã®ãã¡ãã·ã§ã³ç¹åçã
å¤å®å¨ã«ç¨ããã¢ã«ã´ãªãºã ã®é¸å®
ã¾ãã¯ããã®åé¡ã«æé©ãªã¢ã«ã´ãªãºã ã®é¸å®ããå§ããã
ç³ã¿è¾¼ã¿ãã¥ã¼ã©ã«ãããã¯ã¼ã¯ï¼CNNï¼
ç»ååé¡ã«ããã¦é常ã«ææãåºãã¦ãã¦ã2012å¹´é ããç 究ãçãã«é²ãã§ããã¢ã«ã´ãªãºã ã
CNNã使ã£ãç»åé¸å®è½åã¯äººéã®è½åãè¶
ããã¨è¨ããã¦ãã¦ãAlphaGoã§ã使ããã¦ããã
- ãã£ã¼ãã©ã¼ãã³ã°ï¼ç³ã¿è¾¼ã¿ãã¥ã¼ã©ã«ãããã¯ã¼ã¯ - Wikipedia
- 深層ç³ã¿è¾¼ã¿ãã¥ã¼ã©ã«ãããã¯ã¼ã¯ãç¨ããç»åã¹ã±ã¼ãªã³ã° | ã³ã³ãã¥ã¼ã¿ãµã¤ã¨ã³ã¹ | POSTD
- AlphaGo ã®è«æããã£ããç´¹ä» - technocrat
å±æç¹å¾´é+åé¡ã¢ã«ã´ãªãºã
ä¼çµ±çãªææ³ãå±æç¹å¾´éãæ½åºãã¦ãããåé¡ã¢ã«ã´ãªãºã ã«ãããã
ä»åã¯ãHOGç¹å¾´éãæ½åºãã¦SVMã«ããã¦ã¿ãã
ã¢ã«ã´ãªãºã é¸å®ã®ããã®ç°¡æ解æ
ã»ã¼ã¿ã¼ã®ç»åã¨ããã帽ã®ç»åã10,000æãã¤ç¨æãã¦å¦ç¿ããã¦ãã©ã®ãããã®ç²¾åº¦ãåºãã®ãæ¤è¨¼ããã
CNNãHOG+SVMãã©ã¡ãã®ç²¾åº¦ãé«ãã
CNNã¨HOG+SVMã®æ¯è¼
ç³ã¿è¾¼ã¿ãã¥ã¼ã©ã«ãããã¯ã¼ã¯ï¼CNNï¼
- ç»åã®ã©ãã«æ³¨ç®ãããã¨ããç¹å¾´éãèªåã§æ½åºã§ããã
- ã©ããªç¹å¾´éãæ½åºããããã¯ãã©ãã¯ããã¯ã¹ã«ãªããã¨ãå¤ãã
- æ°ããã¢ãã«ãå ãã£ãéã¯ãããã¾ã§ä½ã£ãã¢ãã«ã微調æ´(fine-tuning)ããã ãã§è¯ãã
å±æç¹å¾´é+åé¡ã¢ã«ã´ãªãºã ï¼HOG+SVMï¼
- ç¹å¾´éãäºåã«HOGã¢ã«ã´ãªãºã ã§è¨ç®ãã¦å¤å®ã«å¹ããã®ãé¸ã¶å¿ è¦ãããã
- ç»åã®ã©ã®é¨åã«æ³¨ç®ããããã¨ããç¹å¾´éã¯èªåã§æ±ºããããã®ã§ãã©ãã¯ããã¯ã¹ã¯é¿ããããã
- æ°ããã¢ãã«ãå ãã£ãéã¯ãç¹å¾´éæ½åºããåé¡å¨ä½æã¾ã§ã¤ãããããç´ãã«ãªã£ã¦ãã¾ãã
å¤ã¯ã©ã¹åé¡ã«ããã精度ã®é«ãã¨ã¡ã³ããã³ã¹å®¹ææ§ã®è¦³ç¹ãããCNNãæ¡ç¨ã
å¤å®å¨ã®å®è£ ã»å¦ç¿
pythonã¨Chainerãç¨ããã
CNNã®ã¢ãã«ã®è¨è¨
ç³ã¿è¾¼ã¿å±¤ã¨ãã¼ã»ãããã³ã®2ã¤ã®ãã¼ãã«åããããã
ç³ã¿è¾¼ã¿å±¤
å
¥åç»åã«ãã£ã«ã¿ãããã¦ç¹å¾´éããããã³ã°ãã層ã
ãã¥ã¼ãã³ã°ãã©ã¡ã¼ã¿ã¯ãã£ã«ã¿ã
ãã¼ã»ãããã³
å¾ãããç¹å¾´éãçµåãã¦å¤ãè¿ãã
ãã¥ã¼ãã³ã°ãã©ã¡ã¼ã¿ã¯ãã¼ã¿ã®éã¿ä»ãã®é¨åã
Chainerã«ããç³ã¿è¾¼ã¿å±¤ã®å®ç¾©ä¾
å¤æ°ããããããããã©ãChainerã使ãã°1ã¤ã®ç³ã¿è¾¼ã¿å±¤ã1è¡ã§æ¸ããã®ã§å®è£ ã楽ã
誤差é¢æ°
ãã¥ã¼ã©ã«ãããã¯ã¼ã¯ã®è¨è¨ãçµãã£ãå¾ãåºå層ãå®ç¾©ããå¿
è¦ãããã
ä»åã¯softmaxã¨ããé¢æ°ãåºå層ã«ãã¦ããã®ã«ãã´ãªã«ä½%ã®ç¢ºçã§å±ãããã¨ããå¤ãåºåãããããªãã¥ã¼ã©ã«ãããã¯ã¼ã¯ã«ãã¦ããã
誤差é¢æ°ã«ã¯cross entropyãç¨ãã¦ããã
ãã®è¾ºãChainerã使ãã¨å®è£
ã楽ã
ãã©ã¡ã¼ã¿æé©å
誤差é¢æ°ããã©ã¡ã¼ã¿ã«åæ ãããã
誤差éä¼æ¬æ³(Backpropagation)ã¨å¼ã°ããå¾®åã®é£éå¾ããã¾ãè¨è¿°ãã¦åãã©ã¡ã¼ã¿ãã©ãå¤åããã°ãããã¨ããå¾é
ãè¨ç®ãããã
ã©ãããã調æ´ããã®ãã£ã¦ããã®ã¯Adamã¨ããã¢ã«ã´ãªãºã ã使ã£ã¦ããã
éå¦ç¿ï¼è¨ç·´ãã¼ã¿ã«é©åãããã¦ãæªç¥ã®ãã¼ã¿ã«å¯¾ãã¦ç²¾åº¦ãåºãªãç¾è±¡ï¼ãé²ãããã«ãæ©ææã¡åãã»ãããå¦ç¿ã¨ãããã¯ããã¯ã使ã£ã¦ããã
å¦ç¿ãå®å®åãããããã«ãBatch Normalizationã¨ããã¢ã«ã´ãªãºã ãç¨ãã¦ããã
誤差éä¼æ¬æ³ã«ããå¾é
è¨ç®ãAdamã«ãããã©ã¡ã¼ã¿æ´æ°ã«ããã¦ãChainerã使ãã¨å®è£
ã楽ã
精度ã®è©ä¾¡
CNNã®å¤å®ç²¾åº¦
確çã0.9以ä¸ã®ãã¼ã¿ã¯ããã¾ããªå¤å®ããã¦ããã¨ãããã¨ã§ã¦ã¼ã¶ã«ã¯åºããªããã®ã¨ãã¦ãä¸æãã¨ããã«ãã´ãªã«åé¡ã
ã»ã¼ã¿ã¼ã«ãã´ãªã«å®éã«ã»ã¼ã¿ã¼ãåé¡ãããå²åã99.7%, ããã帽ã«ãã´ãªã«å®éã«ããã帽ãåé¡ãããå²åã99.8%ã¨é常ã«é«ãåé¡ç²¾åº¦ãèªããã¨ãããã£ãã
ã¢ãã«çç¨ç»åã»ãããã³ç»åã»ã¢ã¤ãã åä½ã»è¤æ°ã¢ã¤ãã çæ§ã
ãªã±ã¼ã¹ã§ãå¤å®å¯è½ã
ç¨ã«ãã誤å¤å®ãããã¾ããªä¾ã¯æ°ããªè¨ç·´ãã¼ã¿ã¨ãã¦åå¦ç¿ããããã¨ã§ç²¾åº¦ãä¸ãããã¨ãã§ãããåè¿°ããã¨ããã誤å¤å®çç±ã¯ãã©ãã¯ããã¯ã¹ã«ãªã£ã¦ããã¨ãå¤ãã
ã¯ãã¼ã©ã¼ã¸ã®çµã¿è¾¼ã¿
ããã§ãã½ããã¦ã§ã¢ã¨ã³ã¸ãã¢ã®å¡©å´ããã«äº¤ä»£ã
CNNã使ãã99.7%以ä¸ã®ç²¾åº¦ãèªãå¤å®å¨ãã§ããã®ã§ã¯ãã¼ã©ã¸çµã¿è¾¼ãã
ã¯ãã¼ã©ã¼ã«çµã¿è¾¼ãæã®èª²é¡
ã¯ãã¼ã©ã¼æ¬ä½ã¨ç»åå¤å®å¨ã¨ã§ãå©ç¨è¨èªã»å©ç¨ã©ã¤ãã©ãªã»ä¸»ãªè² è·ããããããã¨éãã
ã¯ãã¼ã©ã¼æ¬ä½
- Ruby
- nokogiri
- sidekiq
- ã¡ãã»ã¼ã¸ãã¥ã¼ãã¿ã¼ã³ã§ä¸¦åå¦çããã
- 主ãªè² è·ã¯ãããã¯ã¼ã¯IO
ç»åå¤å®å¨
- Python
- Chainer
- Pillow
- ç»åã®ãªãµã¤ãºãæ¸è²
- 主ãªè² è·ã¯CPUãã¡ã¢ãª
ãã¤ã¯ããµã¼ãã¹å
ã¯ãã¼ã©ã¼æ¬ä½ã¨ç»åå¤å®ãµã¼ãã¼ãåãé¢ãã¦RESTfulãªAPIã§çµãã ã
ç»åå¤å®ãµã¼ãã¼æ§æ
ç»åå¤å®ãµã¼ãã¼
- EC2
- nginx
- uWSGI
- flask
å¦ç¿ç¨ãµã¼ã
- NVIDIA Tesla K40 ç§ç©
- 80ä¸åããã
ãããã¤
- åå¦ç¿æã®ã¢ãã«å·®ãæ¿ãã¯uWSGIã®graceful restartã«ãããç¡åæ¢ã§è¡ããã
ã¾ã¨ã
- ãã£ã¼ãã©ã¼ãã³ã°ãæ´»ç¨ããç»åã«ããã«ãã´ãªåé¡ãé«ã精度ã§ã§ããã
- ãã¤ã¯ããµã¼ãã¹åããã
ããã¡ãã·ã§ã³ã¢ã¤ãã ã®é¡ä¼¼ç»åæ¤ç´¢ãå®è£ ãã¦ã¿ã¾ããã
çºè¡¨è
ãã¼ã¿ãµã¤ã¨ã³ãã£ã¹ãã®ä¸æãã(@tn1031)ã
é¡ä¼¼ç»åæ¤ç´¢ãããã¨è¯ãå ´é¢
- 欲ãããã©é«ãã¦æãåºããªãã¢ã¤ãã ã«å¯¾ãã¦ãè¦ãç®ãä¼¼ã¦ã¦å®ä¾¡ãªã¢ã¤ãã ã§å¦¥åãããã¨ãã
é¡ä¼¼ç»åæ¤ç´¢ãããã¨è¦å´ãã¦æ¢ãå¿ è¦ããªããªãã
ç»åæ¤ç´¢ã«ã¯ä¸»ã«2種é¡ã®æ¹æ³ããã
ããã¹ããã¼ã¹ã¨ç»åãã¼ã¹ã®ãã¡ãä»åã¯ç»åãã¼ã¹ã«ãã£ã¬ã³ã¸ããã
ç»åæ¤ç´¢ã¯å§ç¸®ã¨è·é¢è¨ç®ã§ã
ãã¨ãã¨é«æ¬¡å
ã§ããç»åããä½æ¬¡å
ã®ãã¯ãã«ã«è½ã¨ãã¦ãã¯ãã«éã®è·é¢è¨ç®ãããã¨ã§éãã測ãã
è·é¢ãé ããã°ä¼¼ã¦ãªãããè¿ããã°ä¼¼ã¦ããã
ç»åãå§ç¸®ããé¢æ°ãã¤ã¾ãç¹å¾´æ½åºããé¢æ°ãã©ãè¨è¨ããã°ããããèããå¿
è¦ãããã
3éãã®æ¹æ³ã§å®è£
Color histgram + HOG
- Color histgram: è²ã®ç¹å¾´é(HSVå¤)ããã¹ãã°ã©ã å
- HOG: ãã¼ãã¼ã®å ´åãè¦åæ£ããç¸æ¨¡æ§ã«ãããè¼åº¦å¾é ãæ½åºãã¦ãã¹ãã°ã©ã å
ããã2ã¤ã®ãã¹ãã°ã©ã ãçµåãã¦ç»åã®ç¹å¾´éã¨ãã¦ããã
CNN BASED MODEL
æ®éã¯å ¨çµå層ã¨åºå層ããã£ã¦ã«ãã´ãªãå¤å¥ããã®ã ããã¡ãã£ã¨æ¹è¯ãã¦æ½å¨å±¤ãæãã ã
- å ¨çµå層: ç»åã®ç¹å¾´ãæ½åºãã¦ããã
- æ½å¨å±¤: ç»åã®ããã·ã¥åããããã¨ã«ãããè¨ç®éãåæ¸ãã¦ããã
DCGAN
ããã«ã¤ãã¦ã¯ããã£ã¼ãã©ã¼ãã³ã°ã§æ´æãæ´çãã¦ã¿ã¾ãã - VASILY DEVELOPERS BLOGãåç
§ã
ç»åã100次å
ã¾ã§å§ç¸®ãã¦ããã
使ã£ã¦ã¿ãææ³
ãã£ã¼ãã©ã¼ãã³ã°ã¯é£ããããä¸æããçã«ã¯ãColor histgram + HOGãã§ãã¹ãã°ã©ã ãèªåã§ä½ãã»ããåã£ã¦ãã¨ã®ãã¨ã
ã¾ã¨ã
æ¤ç´¢ã§ã©ããããã®ãåºãããããã¦ã¼ã¶ãã©ããªæ å ±ãè¦ãããå¬ããã®ãã¨ãããã¨ãèãã¦æ¤ç´¢ã·ã¹ãã ãæé©åãããã¨ã大äºã
ææ
é¢ç½ããã©é£ããã£ãã
é£ãããã¦ããã£ã¼ãã©ã¼ãã³ã°ã¨ãã¼ã¿ãµã¤ã¨ã³ãã£ã¹ãã¯ã»ããã ã¨ããå°è±¡ãæã£ãã
ç³ã¿è¾¼ã¿ãã¥ã¼ã©ã«ãããã¯ã¼ã¯ãHOGãSVMããã¼ã»ãããã³ãcross entropyã誤差éä¼æ¬æ³çããããªãç¨èªãå¤ãã£ãããæ©æ¢°å¦ç¿ã«ã¤ãã¦èª¿ã¹ã¦ã¿ãã¨ãããã®ç¨èªãé »åºãã¦ããã
ç解ã¯ç½®ãã¨ãã¦ãæ©æ¢°å¦ç¿ã«ããã代表çãªã¢ã«ã´ãªãºã ãç¨èªã«ã©ããªãã®ãããã®ããç¥ãã¦ããã£ãã
èªåãä½ãç¥ããªããç¥ããªãã®ã¯è¦éãçããåå ã¨ãªãã®ã§ãä»ã®ç¥èã§ã¾ã£ããç解ã§ããªãæç« ããèªåãä½ãç¥ããªããç¥ãããã«èªããã¨ãã¾ã¾ãã
— ãã (@sairoutine) 2016å¹´3æ24æ¥
æ©æ¢°å¦ç¿ã¯ãTensorFlowãGoogle Cloud Machine Learningãªã©ãé©æ°çãªãã®ãç»å ´ãã¦ããã«ã¤ãã¦è¤éãªã¨ãããæ½è±¡åããæ·å±
ãä¸ãããå°éç¥èãä¸è¦ã«ãªã£ã¦ããã¨ããå°è±¡ãæã£ã¦ããããä»åã®çºè¡¨ã«èªåãã¤ãã¦ãããªãã£ãã¨ãããèããã¨ã¾ã ã¾ã å°éç¥èãå¿
è¦ãªã®ã ã¨æããã
ã¨ããããæ¨ä»æ´ã£ã¦ãã¦ããã®ã¯ããã¾ã§æ©æ¢°å¦ç¿ããã£ã¼ãã©ã¼ãã³ã°ã使ã£ãã·ã¹ãã ãéçºããããã®ã¤ã³ãã©ã§ããããã®å
ã«ãããããç¹å¾´éãæ½åºããããã®é¢æ°ãã©ãè¨è¨ããããã¨ãããããªè¨è¨é¢ãã¢ã«ã´ãªãºã é¸å®ã«ããã¦ã¯ã¾ã ã¾ã å°éç¥èãæ±ãããã¦ããã¨ãããã¨ãªã®ã ãããã
åããã¦èªã¿ãã
- Deep Learningã¨ç»åèªè ã ï½æ´å²ã»çè«ã»å®è·µï½
- Deep learningã®è»½ãç´¹ä»
- ITã¨ã³ã¸ãã¢ã®ããã®æ©æ¢°å¦ç¿çè«å ¥é â NumPy / pandasãã¥ã¼ããªã¢ã«&ãµã³ãã«ã³ã¼ã解説編
- ã½ããã¦ã§ã¢ã¨ã³ã¸ãã¢ã®ããã®ãæ©æ¢°å¦ç¿çè«ãå ¥é
- ãã£ã¼ãã©ã¼ãã³ã°ï¼ç³ã¿è¾¼ã¿ãã¥ã¼ã©ã«ãããã¯ã¼ã¯ã¨Pythonã«ããç¹å¾´æ½åº | ããã°ã©ãã³ã° | POSTD
- æ©æ¢°å¦ç¿ã¢ã«ã´ãªãºã ã¸ã®æå¾ | ã³ã³ãã¥ã¼ã¿ãµã¤ã¨ã³ã¹ | POSTD
- æ©æ¢°å¦ç¿ãããããå§ãã人ã«æ¼ããã¦ããã¦ã»ããã㨠- Qiita
- 深層å¦ç¿å ¥é