ããã¯ãè¡šæ ã«ããç¬é¡ã®å®çŸ©ã«é¢ããã·ãªãŒãºã®2çªç®ã®èšäºã§ãã
ã¬ã¬ãŒãžãã£ãŒãã©ãŒãã³ã°-ãã§ããŒã·ãã
ã¬ã¬ãŒãžãã£ãŒãã©ãŒãã³ã°-2ã€ã®ãããã¯ãŒã¯
ã¬ã¬ãŒãžã§ã®æ·±å±€åŠç¿-ç¬é¡ã®åŸ©æŽ»
ãã£ãªãã¬ãŒã·ã§ã³
ãã®ãããåé¡åšã䜿çšããŠæŽçããŸããããæ€åºã®ããã®æŠéãã¹ãäžã«ç©ºã®99ïŒ ãã©ããããããéåžžã«å°è±¡çã«ãªããªãããšã«ãã§ã«æ°ä»ããŠããã§ãããã ã ããæ°ã¥ããã ããã«ãæåŸã®2ã€ã®äŸã§ã¯ããŠã£ã³ããŠã®ç§»åã«éåžžã«å°ããªã¹ãããããããããã¯å®éã«ã¯æ©èœããªãããšãããããŸãã çŸåšã®å®éã®èµ·åã§ã¯ããã®ã¹ãããã¯æåã®ãããã¯ãŒã¯ã®åçã®ããã«èŠããããšãæåŸ ãããŠããŸããããã§ãäžå¿«ãªäºå®ãã¯ã£ãããšèŠãããšãã§ããŸãïŒãããã¯ãŒã¯ãã©ã®ããã«é¡ãæ¢ããŠããŠãããŠã£ã³ããŠã¯é¡ã«ããŸãæŽåããŸããã ãããŠãããããå°ããããããšã¯ãæããã«ãã®çç£ã®åé¡ã«ââ察ããé©åãªè§£æ±ºçã§ã¯ãããŸããã
ãŸããç§ã¯æã£ãã ç§ãã¡ã¯çªãèŠã€ããŸããããæ£ç¢ºãªçªã¯èŠã€ããŸããã§ããããã·ãããããã®ããã«ã é¡ãäžå€®ã«ããããã«ãã©ã®ããã«åŸãã«åãããŸããïŒ åœç¶ãèªåçã«ã ãŸãããããŠç§ã¯ãããã¯ãŒã¯ã§å¿ãããªã£ãã®ã§ãç§ã¯ãããã¯ãŒã¯ã§ããŠã£ã³ããŠãã埩å ãããããšã«ããŸããã ããããã©ã®ããã«ïŒ
ç§ãæåã«èããã®ã¯ããããã¯ãŒã¯ã«ãã£ãŠ3ã€ã®æ°å€ãäºæž¬ããããšã§ãããã€ãŸããxãšyã ãã·ããããå¿ èŠããããã¯ã»ã«ã®æ°ãšããŠã£ã³ããŠãæ¡å€§ããïŒçž®å°ããïŒå®æ°ã§ãã çµå±ã®ãšãããéè¡ã ãããããã®åŸãããã«äœããééã£ãŠãããšæããŸããã3åã®ååž°ãè¡ãå¿ èŠããããŸããã ã¯ãããã®ãã¡ã®2ã€ã¯åå¥ã§ãã ããã«ããŠã£ã³ããŠãé ãã«ç§»åããŠãæå³ããªããããå ã®ç»åã§ãŠã£ã³ããŠã移åããã¹ãããã«ãã£ãŠå¶éãããŸããå¥ã®ãŠã£ã³ããŠããããŸããã ãã®ã¢ã€ãã¢ã®coã®æåŸã®ãã€ã«ã¯ããã€ãã®ç¬ç«ããèšäºã§ãããååž°ã¯åé¡ãææ°ã®ãããã¯ãŒã¯ææ³ã«ãã£ãŠè§£æ±ºããããããã¯ããã«æªããå®å®æ§ãã¯ããã«äœããšäž»åŒµããŸããã
ãããã£ãŠãååž°åé¡ãåé¡åé¡ã«éå ããããšã決å®ãããŸãããåé¡åé¡ã¯ããŠã£ã³ããŠãã»ãšãã©åŒã£åŒµãå¿ èŠããªãããšãèãããšãå¯èœæ§ãè¶ ããŠããããšãå€æããŸããã ãããã®ç®çã®ããã«ãå ã®ããŒã¿ã»ããããéžæããå人ãååŸãã9ã€ã®ç°ãªãåŽïŒãªããå«ãïŒã«ã·ãããã5ã€ã®ç°ãªãä¿æ°ïŒ1ã€ãå«ãïŒãå¢æžããããŒã¿ã»ãããçµã¿ç«ãŠãŸããã åèš45ã¯ã©ã¹ã
è³¢æãªèªè ã¯ããã§ãã£ãšããã¯ãã§ããã¯ã©ã¹ã¯äºãã«éåžžã«åŒ·ãçµã³ã€ããŠããããšãå€æããŸããã ãã®ãããªåé¡ã®çµæã¯ãäžè¬çã«çŸå®ãšã¯ã»ãšãã©é¢ä¿ããªãå ŽåããããŸãã
å éšæ°åŠãèœã¡çãããããã«ãç§ã¯3ã€ã®ãã€ã³ããæããŸããïŒ
- æ¬è³ªçã«ããããã¯ãŒã¯ãã¬ãŒãã³ã°ã¯ãåçŽã«æå°æ倱é¢æ°ã®æ€çŽ¢ã§ãã åé¡ãšããŠè§£éããå¿ èŠã¯ãããŸããã
- ç§ãã¡ã¯äœãåé¡ããŸãããå®éãååž°ããšãã¥ã¬ãŒãããŸãïŒ ããã«ãããæåã®ãã€ã³ãã®èªèãšåãããŠãæ£åŒãªæ£åœæ§ã«éäžããããšãã§ããªããªããŸãã
- ããã¯ããŸããããŸãïŒ
ååž°ããšãã¥ã¬ãŒãããã®ã§ã¯ãªãåé¡ãããããæè¯ã®ã¯ã©ã¹ãååŸããŠãããæ£ãããšä»®å®ããããšã¯ã§ããŸããã ãããã£ãŠãç§ã¯ãããã¯ãŒã¯ãåãŠã£ã³ããŠã«äžããã¯ã©ã¹ååžãåããéåžžã«ããããããªããã®ãåé€ããŸãïŒ<2.2ïŒ ãã€ãŸã1/4ãã®ãããªå°ããªéåºåºã«äžçš®ã®ååž°ããããŸãïŒã¯ã©ã¹ãç¬ç«ããŠããå Žåã¯åºç€ããããŸããããŸã£ããåºç€ã§ã¯ãããŸãã:) ã
åèšã§ãã·ã¹ãã ã«2ã€ç®ã®ãã£ãªãã¬ãŒã·ã§ã³ãããã¯ãŒã¯ãå°å ¥ããŸããã 圌女ã¯ã¯ã©ã¹ã®ååžã瀺ããããã«åºã¥ããŠãŠã£ã³ããŠãèŒæ£ããé¡ããŠã£ã³ããŠã®äžå€®ã«æãããšãæãã§ããŸããã
ãã®ãããã¯ãŒã¯ãèšç·ŽããŠã¿ãŸãããïŒ
def build_net12_cal(input): network = lasagne.layers.InputLayer(shape=(None, 3, 12, 12), input_var=input) network = lasagne.layers.dropout(network, p=.1) network = conv(network, num_filters=16, filter_size=(3, 3), nolin=relu) network = max_pool(network) network = DenseLayer(lasagne.layers.dropout(network, p=.5), num_units=128, nolin=relu) network = DenseLayer(lasagne.layers.dropout(network, p=.5), num_units=45, nolin=linear) return network
ãããŠãå€äœãèšç®ããããã®ã¢ã«ãŽãªãºã ã¯æ¬¡ã®ãšããã§ãã
def get_calibration(): classes = np.array([(dx1, dy1, ds1), (dx2, d2, ds2), ...], dtype=theano.config.floatX) # ds -- scale min_cal_prob = 1.0 / len(classes) cals = calibration_net(*frames) > min_cal_prob # , (dx, dy, ds) = (classes * cals.T).sum(axis=0) / cals.sum(axis=1) # -- , -- . , return dx, dy, ds
ãããŠããã¯åäœããŸãïŒ
å·ŠåŽã«ã¯æ€åºãããã¯ãŒã¯ããã®å ã®ãŠã£ã³ããŠïŒå°ããïŒããããå³åŽã«ã¯ãã£ãªãã¬ãŒã·ã§ã³ãããŠããŸãã ãŠã£ã³ããŠãæ瀺çãªã¯ã©ã¹ã¿ãŒã§ã°ã«ãŒãåãå§ããããšãããããŸãã ããã«ãåãé¢ã«å±ãããŠã£ã³ããŠã¯ãã倧ããªé åãšäº€å·®ãããã®ãã¡ã®1ã€ããã£ã«ã¿ãªã³ã°ããå¿ èŠãããããšãç解ãããããªããããããã¯è€è£œãããå¹ççã«ãã£ã«ã¿ãªã³ã°ããã®ã«åœ¹ç«ã¡ãŸãã ãŸããç»åäžã§ãŠã£ã³ããŠãã¹ã©ã€ããããã¹ããããå¢ããããšã«ãããå®çšŒåäžã®ãŠã£ã³ããŠã®æ°ãæžããããšãã§ããŸãã
åæã«ãå°å£åŸã®ãã¬ãŒãã³ã°ã®çµæã¯æ¬¡ã®ãšããã§ãã
ããã³å€§èŠæš¡ãªãã£ãªãã¬ãŒã·ã§ã³ïŒ
ããã倧èŠæš¡ãªãã£ãªãã¬ãŒã·ã§ã³ãããã¯ãŒã¯ãã®ãã®ã§ãã
def build_net48_cal(input): network = lasagne.layers.InputLayer(shape=(None, 3, 48, 48), input_var=input) network = lasagne.layers.dropout(network, p=.1) network = conv(network, num_filters=64, filter_size=(5, 5), nolin=relu) network = max_pool(network) network = conv(network, num_filters=64, filter_size=(5, 5), nolin=relu) network = DenseLayer(lasagne.layers.dropout(network, p=.3), num_units=256, nolin=relu) network = DenseLayer(lasagne.layers.dropout(network, p=.3), num_units=45, nolin=linear) return network
åé¡ããå¿ èŠã¯ãªããååž°ããå¿ èŠãããããããããã®ã°ã©ãã¯æççã§ãã ããããäžç®ã§å®èšŒå®éšãè¡ããšããã®æ¹æ³ã§ãã¬ãŒãã³ã°ããããã£ãªãã¬ãŒã·ã§ã³ãç®çãååã«æãããŠããããšãããããŸãã
ãŸãããã£ãªãã¬ãŒã·ã§ã³ã®å ŽåãåæããŒã¿ã»ããã¯åé¡ã®45åïŒå人45ã¯ã©ã¹ïŒã§ãããäžæ¹ã§ãåé¡ãèšå®ããã ãã§ã¯äžèšã®æ¹æ³ã§è£è¶³ããããšã¯ã§ããŸããã ã ããããœãŒã»ãŒãžãç¹ã«å€§èŠæš¡ãªãããã¯ãŒã¯ã¯ã»ãšãã©ã
æé©åII
æ€åºã«æ»ããŸãã å®éšã§ã¯ãå°ããªãããã¯ãŒã¯ã§ã¯ç®çã®å質ãåŸãããªãããšãããã£ãŠããããã倧ããªãããã¯ãŒã¯ãåŠç¿ããå¿ èŠããããŸãã ãããã倧ããªåé¡ã¯ã1æã®åçããååŸããäœåãã®ãŠã£ã³ããŠãéåžžã«é·ãæéã«ããã£ãŠåŒ·åãªGPUã§åé¡ããããšã§ãã ãã®ãããªã·ã¹ãã ãå®è£ ããããšã¯äžå¯èœã§ãã çŸåšã®ããŒãžã§ã³ã§ã¯ãããªãããŒãªããªãã¯ã«ããæé©åã®å€§ããªå¯èœæ§ããããŸãããååã«ã¹ã±ãŒã©ãã«ã§ã¯ãªããåé¡ãå®æ§çã«è§£æ±ºãããããããå·§åŠã«æé©åããªãããšã決å®ããŸããã ãããŠãããªãã®ç®ã®åã«ãã解決çã§ãïŒ 12x12ã®å ¥åã1ã€ã®ç³ã¿èŸŒã¿ã1ã€ã®ããŒãªã³ã°ãããã³åé¡åšãåããå°èŠæš¡ãããã¯ãŒã¯ïŒ ç¹ã«ããã¹ãŠã®ãŠã£ã³ããŠã§GPUã§äžŠè¡ããŠåé¡ãå®è¡ã§ããããšãèãããšãéåžžã«é«éã«åäœããŸã-ã»ãŒç¬æã«å€æããŸãã
ã¢ã³ãµã³ãã«
ããããã¹ãŠããããããæéã®äžã§ããããçžãããã®äžã€ã®ã¢ã³ãµã³ãã«ã
ãã®ããã1ã€ã®åé¡ãš1ã€ã®ãã£ãªãã¬ãŒã·ã§ã³ã§ã¯ãªãããããã¯ãŒã¯å šäœã䜿çšããããšã«ããŸããã æåã¯åŒ±ãåé¡ã次ã«åŒ±ããã£ãªãã¬ãŒã·ã§ã³ã次ã«ãããã1ã€ã®é¡ã瀺ããã£ãªãã¬ãŒã·ã§ã³ããããŠã£ã³ããŠã®ãã£ã«ã¿ãªã³ã°ãããããããã®æ®ãã®ãŠã£ã³ããŠã®ã¿ã§åŒ·ãåé¡ãå®è¡ãã次ã«åŒ·ããã£ãªãã¬ãŒã·ã§ã³ãå®è¡ããŸãã
ãã®åŸãç·Žç¿ã«ãããããªãé ãããšãããã£ããããã¢ã³ãµã³ãã«ã3ã¬ãã«ãŸã§äœæããŸããã2ã€ã®äžéã«ãå¹³åãåé¡ãæ¿å ¥ãã次ã«ãå¹³åããã£ãªãã¬ãŒã·ã§ã³ãšãã£ã«ã¿ãªã³ã°ãè¡ããŸããã ãã®ãããªçµã¿åããã§ã¯ãã·ã¹ãã ã¯ååã«é«éã§åäœããããããããããæžãããŠäžŠåæ§ãé«ããããã«ããšã³ãžãã¢ãªã³ã°ã®åªåãšããã€ãã®ããªãã¯ãå®è£ ããå Žåãå®çšŒåã§äœ¿çšããæ¬åœã®æ©äŒããããŸãã
ã¢ã«ãŽãªãºã ãååŸããåèšïŒ
- ãã¹ãŠã®ãŠã£ã³ããŠãèŠã€ãããŸãã
- æåã®æ€åºãããã¯ãŒã¯ã確èªããŸãã
- çºç«ãã人ã¯ãæåã®ãã£ãªãã¬ãŒã·ã§ã³ãããã¯ãŒã¯ããã£ãªãã¬ãŒã·ã§ã³ããŸãã
- 亀差ãããŠã£ã³ããŠããã£ã«ã¿ãªã³ã°ããŸãã
- 2çªç®ã®æ€åºãããã¯ãŒã¯ã確èªããŸãã
- çºç«ãããã®ã¯ã2çªç®ã®ãã£ãªãã¬ãŒã·ã§ã³ãããã¯ãŒã¯ããã£ãªãã¬ãŒã·ã§ã³ããŸãã
- 亀差ãããŠã£ã³ããŠããã£ã«ã¿ãªã³ã°ããŸãã
- 3çªç®ã®æ€åºãããã¯ãŒã¯ã確èªããŸãã
- çºç«ãããã®ã¯ã3çªç®ã®ãã£ãªãã¬ãŒã·ã§ã³ãããã¯ãŒã¯ããã£ãªãã¬ãŒã·ã§ã³ããŸãã
- 亀差ãããŠã£ã³ããŠããã£ã«ã¿ãªã³ã°ããŸãã
ããããŠã£ã³ããŠ
åãŠã£ã³ããŠã§æé 2ã7ãåå¥ã«å®è¡ãããšãCPUããGPUãžã®çµ¶ãéãªãåãæ¿ãããããªã«ãŒãã§ã®äžå®å šãªäžŠååŠçã®å©çšãä»ã«äœãç¥ã£ãŠããããªã©ãéåžžã«é·ãæéãããããŸãã ãããã£ãŠãåã ã®ãŠã£ã³ããŠã ãã§ãªããä»»æã®ãµã€ãºã®ãããã§åäœãããã€ãã©ã€ã³ããžãã¯ãäœæããããšã決å®ãããŸããã ãããè¡ãããã«ãåã¹ããŒãžããžã§ãã¬ãŒã¿ãŒã«å€æããåã¹ããŒãžéã«ã³ãŒããé 眮ããããšã決å®ãããŸãããããã¯ããžã§ãã¬ãŒã¿ãŒãšããŠãæ©èœããŸããããŠã£ã³ããŠã§ã¯ãªããåã®ã¹ããŒãžã®çµæããããããã³ãããã¡ãŒããæå®ã®æ°ã®çµæãèç©ãããå ŽåïŒãŸãã¯çµäºããå ŽåïŒãåéãããããããããã«æäŸããŸã
ãã®ã·ã¹ãã ã¯äžè¯ã§ã¯ãªãïŒ30ïŒ ïŒãæ€åºäžã«åŠçãå éããŸããã
ã¢ã¢ãŒããŒã¿ïŒ
äžèšã®åã®èšäºã§è¿°ã¹ãããã«ã倧èŠæš¡ãªæ€åºãããã¯ãŒã¯ã¯ããã¿ã§åŠç¿ããŸãã絶ãéãªãæ¥æ¿ãªãžã£ã³ããšãããã«ã€ããŠã®ãã£ããã§ãã ãããŠãåŠç¿ãããã¯ãŒã¯ã«ç²ŸéããŠãã人ãªã誰ã§ãæåã«èããã®ã§ãåŠç¿é床ã®åé¡ã§ã¯ãããŸããïŒ å®éã®ãšãããããŒã¿ã¯ãŸã ã»ãšãã©ãããŸããã åé¡ã瀺ãããŠããŸã-ããªãã¯è§£æ±ºçãèŠã€ããããšãã§ããŸãïŒ ãããŠãããã¯ããã«èŠã€ãããŸããïŒWildããŒã¿ã»ããã®Labeled Facesã
FDDBãLFWãããã³å人çšãªãã£ã«ã®ããŒã¿ã»ãããçµã¿åããããã®ã¯ãå ã®ã»ãŒ3åã§ããã äœããæ¥ãã®ïŒ èšèãæžãããåçããã£ãšïŒ
å°èŠæš¡ãªãããã¯ãŒã¯ã¯èããå®å®ããŠãããåæãéããªããçµæãè¯ããªããŸãã
ãŸãã倧èŠæš¡ãªãããã¯ãŒã¯ã¯èããå®å®ããŠãããããŒã¹ããæ¶æ» ããåæãéããªããçµæã¯çªç¶ãããã«æªåããŸããã0.17ïŒ ã¯èš±å®¹ã§ãããšã©ãŒã®ããã§ãã
ããã«ããã®ããŒã¿éã®å¢å ã«ãããæ€åºçšã®å€§èŠæš¡ã¢ãã«ãããã«å¢ããããšãã§ããŸããã
ã¢ãã«ã¯ããã«éãåæããããè¯ãçµæã«ãªããéåžžã«å®å®ããŠããããšãããããŸãã
åæã«ãããå€ãã®ããŒã¿ã䜿çšããŠãããã¯ãŒã¯ã®åãã¬ãŒãã³ã°ãšãã£ãªãã¬ãŒã·ã§ã³ãè¡ããŸããã
å°ããªæ ¡æ£ïŒ
ãšå€§ããªãã£ãªãã¬ãŒã·ã§ã³ïŒ
æ€åºãããã¯ãŒã¯ãšã¯å¯Ÿç §çã«ãããã§ã¯åçãªæ¹åãèŠãããŸãã ããã¯ãå ã®ãã¬ãŒãã³ã°ã»ãããæ¡åŒµãããŠããããå ã®ãããã¯ãŒã¯ãããŒã¿äžè¶³ã«å€§ããèŠããã§ããã®ã¯ãæ¡åŒµåã®æ€åºçšã®ãããã¯ãŒã¯ãèŠããã§ããããã§ãã
æ€åºæºåå®äº
ãã€ãã©ã€ã³å šäœã瀺ãç»åïŒåé¡1ããã£ãªãã¬ãŒã·ã§ã³1ããã£ã«ã¿ãªã³ã°ãåé¡2ããã£ãªãã¬ãŒã·ã§ã³2ããã£ã«ã¿ãªã³ã°ãåé¡3ããã£ãªãã¬ãŒã·ã§ã³3ããã£ã«ã¿ãªã³ã°ãã°ããŒãã«ãã£ã«ã¿ãªã³ã°ããã¬ãŒãã³ã°ã»ããã®é¡ã¯çœã§ããŒã¯ãããŠããŸãïŒïŒ
æåïŒ
å€é解å床
ãã®ç¬éãŸã§ã«ãæç«ãå€ä»£ïŒ4幎å:)ã®ãã¯ããã¯ã䜿çšããŠãããšèããŠãã人ã¯ãæãããã§ã«æµè¡ãè¿œããããŠããã§ãããã ãããŠãããã«ãããŸãïŒ
arxiv.orgã®ãªãŒãã³ã¹ããŒã¹ã§ã¯ãèå³æ·±ãã¢ã€ãã¢ãåãäžããããŸãããããŸããŸãªè§£å床ã§ç³ã¿èŸŒã¿å±€ã®ãã£ãŒãã£ã«ãŒããæ°ããŸãããããããã¯ãŒã¯ãè€æ°ã®å ¥åã«ããããšãäžè¬çã§ãïŒNxNãïŒN / 2ïŒxïŒN / 2ïŒãïŒN / 4ïŒxïŒN / 4ïŒå¥œããªã ãïŒ ãããŠãåãæ¹æ³ã§ãç°ãªãæ¹æ³ã§ã®ã¿åæžããŸãã
次ã«ãæçµåé¡åã«ã€ããŠã¯ããã¹ãŠã®ã«ãŒããé£çµãããå®éã«ã¯ç°ãªã解å床ãèŠãããšãã§ããŸãã
å·ŠåŽã«ãããå³åŽã«ãªããŸããïŒéåžžã«äžå€®ã®ãããã¯ãŒã¯ã§æž¬å®ïŒã
ç§ã®å Žåãè€æ°ã®è§£å床ãæã€ãããã¯ãŒã¯ãããéãåæãããã³ã°ãå°ãå°ãªãããšãããããŸãã ããã«ãããããããäžå°èŠæš¡ã®ãããã¯ãŒã¯ã¯ããŸãæ£ç¢ºã§ã¯ãªããããæ©èœããŠããªããšããèããæåŠããè€æ°ã®èš±å¯ã®ä»£ããã«å€§èŠæš¡ãªãããã¯ãŒã¯ãåçŽã«å¢ãããŠããã«å€§ããªæåãåããŸããã
ãããæ£èŠå
ãããæ£èŠåã¯ããããã¯ãŒã¯ã®æ£èŠåææ³ã§ãã ã¢ã€ãã¢ã¯ãåå ¥åã¬ã€ã€ãŒãåã®ã¬ã€ã€ãŒã®çµæãååŸãããšãããã®ã§ãããã«ã¯ã»ãšãã©ãã¹ãŠã®ãã³ãœã«ãå«ããããšãã§ãããã®åº§æšã¯äœããã®åœ¢ã§ååžããŠããŸãã ãŸãããã¹ãŠã®ã¬ã€ã€ãŒã«å¯Ÿå¿ããåºå®ååžããã®åº§æšã䜿çšããŠå ¥åãã³ãœã«ã«å ¥åããããšãã¬ã€ã€ãŒã«ãšã£ãŠéåžžã«äŸ¿å©ã§ããå ¥åããŒã¿ã®ååžãã©ã¡ãŒã¿ãŒã«äžå€ãªå€æãåŠç¿ããå¿ èŠã¯ãããŸããã ããŠããã¹ãŠã®ã¬ã€ã€ãŒã®éã«èšç®ãæ¿å ¥ããŠãåã®ã¬ã€ã€ãŒã®åºåãæé©åããŠã次ã®ã¬ã€ã€ãŒãžã®å§åã軜æžããããè¯ãä»äºãè¡ããããã«ããŸãã
ãã®ãã¯ããã¯ã¯ç§ã倧ãã«å©ããŠãããŸãããåãã¢ãã«ã®å質ãç¶æããªãããããããã¢ãŠãã®å¯èœæ§ãæžããããšãã§ããŸããã ããããã¢ãŠãã®å¯èœæ§ãæžãããšããããã¯ãŒã¯ã®åæãéããªããŸãïŒããããæ£èŠåããã«ãããè¡ããšãããå€ãã®åãã¬ãŒãã³ã°ãè¡ãããŸãïŒã å®éãæåéããã¹ãŠã®ã°ã©ãã§çµæã確èªã§ããŸãããããã¯ãŒã¯ã¯æçµå質ã®90ïŒ ã«ããã«åæããŸãã ãããã®æ£èŠååã¯ããšã©ãŒã®äœäžã¯ãã£ãšç©ããã§ããïŒæ®å¿µãªãããDeepEventããªãã£ããããçµæã¯ä¿åãããŸããã§ããïŒã
ã€ã³ã»ãããã³
ãã¡ãããçŸä»£ã®ã¢ãŒããã¯ãã£ããããããšã«æµæããããšã¯ã§ãããInceptronããã¬ãŒãã³ã°ããŠé¡ïŒGoogLeNetã§ã¯ãªããã¯ããã«å°ãããããã¯ãŒã¯ïŒãåé¡ããããšããŸããã æ®å¿µãªããããã®ã¢ãã«ã¯Theanoã§æ£ããå®è¡ã§ããŸãããã©ã€ãã©ãªã¯ä»»æã®ãµã€ãºã®ãŒãããã£ã³ã°ããµããŒãããŠããªããããInception-moduleã®ãã©ã³ãã®1ã€ãã€ãŸããã®å³ã®æ£ãããã®ãåé€ããå¿ èŠããããŸããã
ããã«ãGoogLeNetã®ããã«ã7ã€ã®ã¢ãžã¥ãŒã«ã§ã¯ãªãã3ã€ã®ã€ã³ã»ãã·ã§ã³ã¢ãžã¥ãŒã«ã®ã¿ãäºãã®äžã«ãããŸãããæåã®åºå£ã¯ãªããæåã®éåžžã®ç³ã¿èŸŒã¿ãã«ã¬ã€ã€ãŒã¯ãããŸããã§ããã
def build_net64_inceptron(input): network = lasagne.layers.InputLayer(shape=(None, 3, 64, 64), input_var=input) network = lasagne.layers.dropout(network, p=.1) b1 = conv(network, num_filters=32, filter_size=(1, 1), nolin=relu) b2 = conv(network, num_filters=48, filter_size=(1, 1), nolin=relu) b2 = conv(b2, num_filters=64, filter_size=(3, 3), nolin=relu) b3 = conv(network, num_filters=8, filter_size=(1, 1), nolin=relu) b3 = conv(b3, num_filters=16, filter_size=(5, 5), nolin=relu) network = lasagne.layers.ConcatLayer([b1, b2, b3], axis=1) network = max_pool(network, pad=(1, 1)) b1 = conv(network, num_filters=64, filter_size=(1, 1), nolin=relu) b2 = conv(network, num_filters=64, filter_size=(1, 1), nolin=relu) b2 = conv(b2, num_filters=96, filter_size=(3, 3), nolin=relu) b3 = conv(network, num_filters=16, filter_size=(1, 1), nolin=relu) b3 = conv(b3, num_filters=48, filter_size=(5, 5), nolin=relu) network = lasagne.layers.ConcatLayer([b1, b2, b3], axis=1) network = max_pool(network, pad=(1, 1)) b1 = conv(network, num_filters=96, filter_size=(1, 1), nolin=relu) b2 = conv(network, num_filters=48, filter_size=(1, 1), nolin=relu) b2 = conv(b2, num_filters=104, filter_size=(3, 3), nolin=relu) b3 = conv(network, num_filters=8, filter_size=(1, 1), nolin=relu) b3 = conv(b3, num_filters=24, filter_size=(5, 5), nolin=relu) network = lasagne.layers.ConcatLayer([b1, b2, b3], axis=1) network = max_pool(network, pad=(1, 1)) network = DenseLayer(lasagne.layers.dropout(network, p=.5), num_units=256, nolin=relu) network = DenseLayer(lasagne.layers.dropout(network, p=.5), num_units=2, nolin=linear) return network
ãããŠãç§ããã£ãïŒ
çµæã¯ã以åã«ãã¬ãŒãã³ã°ããéåžžã®ç³ã¿èŸŒã¿ãããã¯ãŒã¯ããã1ïŒ æªãã§ããã䟡å€ããããŸãïŒ ãã ãã4ã€ã®éå§ã¢ãžã¥ãŒã«ã®ãã¡ãåããããã¯ãŒã¯ããã¬ãŒãã³ã°ããããšãããšãå®å®ããŠåæ£ããŸããã ãã®ã¢ãŒããã¯ãã£ïŒå°ãªããšãç§ã®å€æŽãå ãããã®ïŒã¯éåžžã«äžæ©å«ã ãšæããŠããŸãã ããã«ãäœããã®çç±ã§ãããã®æ£èŠåã«ããããã®ãããã¯ãŒã¯ã¯çå®ã«å®å šãªã¹ããªããã«å€ãããŸããã ããã§ã¯ãLasagneã®ãããæ£èŠåã®æºè·äººçå®è£ ãçã£ãŠããŸãããäžè¬çã«ããã«ãããInceptronãTensorflowã§ããæããæªæ¥ã«å»¶æããŸããã
ãšããã§ãTensorflowïŒ
ãã¡ãããç§ãè©ŠããŠã¿ãŸããïŒ ãã®ãã¡ãã·ã§ããã«ãªãã¯ãããžãŒãè©ŠããŠã¿ãã®ã¯ãæäžäž»ã§ããGoogleã«å€§ããªåžæãšè³è³ãæ±ããåãæ¥ã§ãïŒ ããããããã圌ã¯åžæã«å¿ããŠããŸããã§ããã è€æ°ã®GPUã®èªå䜿çšã®å®£èšã«ã€ããŠã¯èšåãããŠããŸãããæäœã¯ãæã§ç°ãªãã«ãŒãã«é 眮ããå¿ èŠããããŸãã ãµãŒããŒã«é 眮ã§ããªãã£ãæåŸã®kudaã§ã®ã¿æ©èœããlibcã®ããŒãã³ãŒãããŒãžã§ã³ããããå¥ã®ãµãŒããŒã§èµ·åããŸããã§ããããŸããdockerã³ã³ãããŒã§ã¯æ©èœããªãblazeã䜿çšããŠæåã§çµã¿ç«ãŠãããŸããã èŠããã«ã圌ãšã®ä»äºã®ã¢ãã«ã¯éåžžã«è¯ããã®ã®ãããã€ãã®å€±æã§ãïŒ
ãã³ãœã«ããŒãã倱æããã 詳现ãç¥ããããããŸãããããã¹ãŠã奜ãã§ã¯ãªãã£ãã®ã§ãDeepEventãšåŒã°ããç£èŠã®éçºãå§ããŸãããããã¯ãèšäºã§èŠãã¹ã¯ãªãŒã³ã·ã§ããã§ãã
次ã®ã·ãªãŒãºã§ã¯ïŒ
çµµæåãæ¢è£œã®ã·ã¹ãã ãçµæããããŠæåŸã«ããããã女ã®åïŒ