
ãScratch 2019ã ç»åèªèã»ããã€ã¹é£æºã»é¢é£ã®ç¬èªæ¡åŒµïŒ2019/12/7ïŒ
ãã®èšäºã¯ ãScratch Advent Calendar 2019 - Qiitaãã® 7æ¥ç® ã®èšäºã§ããã
Scratch Advent Calendar 2019 ã®6æ¥ç®ã®èšäºãšããŠæžãããã®ã®ç¶ãã«ãªããŸããç»åèªèã»ããã€ã¹é£æºé¢é£ã® Scratchçšç¬èªæ¡åŒµïŒâ»èªåãäœã£ããã®ã§ã¯ãªãïŒã«ã€ããŠæžããŠãããŸãã
ã¯ããã«
ååæžããèšäºã¯ããã¡ãã«ãªããŸãã
ãã®èšäºã§ãæžãåããªãã£ãæ¡åŒµæ©èœã«ã以äžã® 3ã€ããããŸãã
ã»PoseNet2ScratchïŒ https://github.com/champierre/posenet2scratch ïŒ
ã»Scratch2MaqueenïŒ https://github.com/champierre/scratch2maqueen ïŒ
ã»ImageClassifier2Scratch
ãã®èšäºã§ã¯ãããããé çªã«èŠãŠããããšæããŸãã
ä»åèŠãŠããæ¡åŒµæ©èœã¯ãååã®èšäºã«ãèšèŒããŠããäžèšãã詊ãããšãã§ããŸãïŒ
ãhttps://champierre.github.io/scratch3/
1ïŒ PoseNet2Scratch
ãã®æ¡åŒµæ©èœã«ã€ããŠã説æã以äžã® GitHubã®ããŒãžã«æžãããŠããŸãã
ãâchampierre/posenet2scratch: Pose Detection on Scratch 3 using PoseNet
ãhttps://github.com/champierre/posenet2scratch
äžèšã®ããŒãžã®æ¥æ¬èªçãããåé ã®éšåãæç²ããŠã¿ãŸãã
PoseNet2Scratchã¯äººã®å§¿å¢ãæ€åºãã身äœã®åéšåã®xãšyã®äœçœ®ãååŸã§ããScratchæ¡åŒµãããã¯ã远å ããããšãã§ããŸãã
ãªã¢ã«ã¿ã€ã ã®å§¿å¢æ€åºããããªãããã«PoseNetã䜿ã£ãŠããŸããKinectã®ãããªç¹å¥ãªããã€ã¹ã䜿ãããšãªããæ®éã®ãŠã§ãã«ã¡ã©ã§çŽ æ©ãé«ç²ŸåºŠã§æ€åºã§ãããšããã倧ããªç¹åŸŽã§ãã
GitHubã®ããŒãžã® PoseNet ãšããåèªã®éšåã®ãªã³ã¯å 㯠PoseNet ã® TensorFlow.js çã®èšäºã«ãªã£ãŠããŸãããGithubã®ããŒãžã«ã¯Scratch飿ºããŠããæ©èœã®å®è£ ã«ã€ããŠã以äžã®ããã«æžãããŠããŸãïŒml5js ã§å®è£ ãããŠããããã§ãïŒãÂ
ãŸããScratch 3ã®æ¡åŒµæ©èœãšããŠå©çšã§ããããã«ãæ©æ¢°åŠç¿çšJavaScriptã©ã€ãã©ãªml5.jsã䜿çšããŠå®è£ ããŠããŸãã
äœè«ã§ãããäžèšã® PoseNet ãšæžãããåèªã«è²ŒãããŠãããªã³ã¯ã«ã€ããŠããªã³ã¯å ã¯å ·äœçã«ã¯ä»¥äžã«ãªãã®ã§ãããã©ã€ããã¢ãžã®ãªã³ã¯ããã£ãŠæè»œã« PoseNet ã® TensorFlow.js ç ãäœéšã§ããã¿ããã§ããã
ç°¡åã«ãã«ã¡ã©ã§ãã€ã£ãèªåã®é¡ã®ããŒãã®äœçœ®åº§æšãæ€åºã§ããããäžèšã®ããã«è©ŠããŠã¿ãŸããã
åŠçãšããŠã¯ããã£ãšã®ãããã¯ã®äžã§ãå³ç®ãšéŒ»ã®ããããã® y座æšãš x座æšã®äœçœ®ã倿°ã«ä»£å
¥ããã ãããšãããã®ã§ãã
ãã®åŠçãå®è¡ããéã«ã倿°ã®å€ã衚瀺ã§ããããã«èšå®ããŠãã«ã¡ã©ã«ãã€ãé¡ã®äœçœ®ãäžäžãå·Šå³ã«åãããŠã¿ãŠå€ã®å€åãèŠãããšããããšããã£ãŠã¿ãŸãããé¡ãåãããæ¹åã«åãããŠãy座æšã x座æšã®äœçœ®ãå€åããŠããŸããïŒä»åãæ£ç¢ºãªäœçœ®ãæããããŠãããã¯æªç¢ºèªïŒã
ã¡ãªã¿ã«ãäžèšã¯æ¡åŒµæ©èœã«å«ãŸãããããã¯ã®äžéšã§ããããããããªçš®é¡ã®äœã®ããŒãã®äœçœ®ãæ€åºã§ããããã§ãã
Github ã®ããŒãžã§ã¯ãæ€åºã§ãã察象ã®äœã®ããŒãã¯ã以äžã®ããã«æžãããŠããŸããã
PoseNet2Scratchæ¡åŒµãããã¯ã䜿ããšã以äžã®å身äœã®éšåã®xããã³y座æšãååŸã§ããŸãã
ã錻ãå·Šç®ãå³ç®ãå·Šè³ãå³è³ãå·Šè©ãå³è©ãå·Šã²ããå³ã²ãã
ãå·ŠæéŠã峿éŠãå·Šè °ãå³è °ãå·Šã²ããå³ã²ããå·Šè¶³éŠãå³è¶³éŠ
é¡ã®ããŒããããäœã»æè¶³ã®ç¹å®ã®ç®æããããããšæ€åºå¯Ÿè±¡ãšãªã£ãŠãããå šèº«ã®åãããšãããŠäœãåŠçããããããªããšãè¡ãããã§ããã
ãŸãã座æšãååŸãããããã¯ã®æåã«ã1人ç®ã®ããšããèšèŒããããŸãããã®éšåãã¯ãªãã¯ãããšã以äžã®ããã«10人ç®ãŸã§ãæå®ã§ããããã«ãªã£ãŠããããã§ããã
äœè«ã§ãããè€æ°ã®äººã®èªèã«é¢ããŠãäžèšã®Â PoseNet ã® TensorFlow.js çã®èšäºãèŠãŠãããšãã«ãèªèãã人æ°ãå¢ããŠãåŠçè² è·ãå¢å€§ããªããšããç¹é·ããããšããè©±ãæžããŠãããŸããã
Moreover, an attractive property of this algorithm is that performance is not affected by the number of persons in the input image. Whether there are 15 persons to detect or 5, the computation time will be the same.
ãã£ãããšèš³ããŠã¿ããšããããªæãã®ããšãæžãããŠããŸããã
ããã®ã¢ã«ãŽãªãºã ã®é
åçãªç¹æ§ãšããŠãåŠçããã©ãŒãã³ã¹ã¯ç»åäžã®äººã®æ°ã«åœ±é¿ããããããšã¯ãªããšãããã®ããããæ€åºãã人æ°ã5人ã§ã15人ã§ãèšç®åŠçæéã¯åãã«ãªããã
2ïŒ Scratch2Maqueen
ãã®æ¡åŒµæ©èœã«ã€ããŠã説æã以äžã® GitHubã®ããŒãžã«æžãããŠããŸãã
ãâchampierre/scratch2maqueen: Control DFRobot Maqueen from Scratch
ããhttps://github.com/champierre/scratch2maqueen
ãã¡ãã¯ãDFRobot瀟㮠micro: Maqueen ã Scratch ããæäœãããã®ã«ãªãããã§ãã
äœè«ã§ããããã® micro: Maqueen ã¯èªåãææããŠããŠãMicrosoft MakeCode for micro:bit ãšçµã¿åãããŠè¯ã䜿ã£ããããŠããŸãã
éåžžã«å©çšé »åºŠãé«ããåã©ãåãã®ããã°ã©ãã³ã°ãµããŒã掻åã§ã倧掻èºããŠããããã¹ããŒãã¹ããŒã«ãŒãšã¬ãžã§ãã飿ºã®è©Šäœãè¡ãéã«ãå©çšãããããŸããããã®ããããã¹ããã€ã¬ãžã§ãããšããã¢ããã³ãã«ã¬ã³ããŒã§èšäºãæžããæã«åãäžããŠãã€ããã®èšäºïŒäžèšïŒã®äžã§èªåã«ãšã£ãŠã®ãã¹ããã€ã¬ãžã§ããã«éžã³ãŸããã
æ¡åŒµæ©èœã§ã§ããããšãèŠãŠã¿ããšãmicro:bit ã®æ©èœã䜿ããããã¯ãã以äžã«ãããããªÂ micro: Maqueen ã®æ©èœã䜿ããã®ããããŸããã
ã¡ãªã¿ã«ãMicrosoft MakeCode for micro:bitÂ ã®æ¡åŒµæ©èœãèªã¿èŸŒãã§äœ¿ãããããã¯ã¯ä»¥äžã®ããã«ãªã£ãŠããŸããäžèšãšæ¯èŒãããšãèµ€å€ç·å©çšããšæè¿ã®ããŒãžã§ã³ïŒV4ïŒã§å¯Ÿå¿ããããµãŒãã¢ãŒã¿ãŒãã®æ©èœä»¥å€ã以äžã®æ©èœãå©çšã§ããããã§ãïŒçްããèšããšãåºé¢ã®ãã«ã«ã©ãŒLEDãªãããã€ããŠãããããã®ã¯ããã®ã§ããïŒã
ãã»ãå·Šå³ã®ã¿ã€ã€ãåããã¢ãŒã¿ãŒã®å¶åŸ¡ã
ãã»ãè¶
鳿³¢ã»ã³ãµãã®æ©èœ
ãã»åºé¢ã®ãã©ã€ã³ãã¬ãŒã¹ãã«äœ¿ãæ©èœããåæ¹ã«2ã€ã€ããŠããåè²LEDããããçµã¿åãããŠäœ¿ããšãããâ
â
â
ãã¡ããšæ¯èŒãããšãèµ€å€ç·å©çšããšæè¿ã®ããŒãžã§ã³ïŒV4ïŒã§å¯Ÿå¿ããããµãŒãã¢ãŒã¿ãŒãã®æ©èœãé€ãã以äžã®æ©èœãå©çšã§ããããã§ãïŒçްããèšããšãåºé¢ã®ãã«ã«ã©ãŒLEDãªãããã€ããŠãããããã®ã¯ããã®ã§ããïŒã
ãã»ãå·Šå³ã®ã¿ã€ã€ãåããã¢ãŒã¿ãŒã®å¶åŸ¡ã
ãã»ãè¶
鳿³¢ã»ã³ãµãã®æ©èœ
ãã»åºé¢ã®ãã©ã€ã³ãã¬ãŒã¹ãã«äœ¿ãæ©èœ
ãã»åæ¹ã«2ã€ã€ããŠãããåè²LEDã
é害ç©ãæ€ç¥ãã€ã€åãããããã©ã€ã³ãã¬ãŒãµãŒãšããŠåããããããããã䜿ã£ãŠæ¥œããããšãã§ãããã§ãïŒ
3ïŒ ImageClassifier2Scratch
GitHubã®ããŒãžããªããããªã®ã§ïŒ2019/12/5 æç¹ïŒããŸã㯠@jishiha ããã®é¢é£ãã€ãŒããåŒçšããŠãããŸãã
èªåã§ç»åãçšæããŠåŠç¿ãããããšããããšãããªããŠããæ¢ã«çšæãããåŠç¿æžã¿ã¢ãã«ã䜿ã£ãŠç»åèªèãå©çšã§ããããã§ãã
粟床ã¯ããŸãã¡ã§ãããåŠç¿æžã¿ã¢ãã«ã§ç»åèªèãã§ãã Scratchã®æ¡åŒµæ©èœ Image Classifier ãã€ãã£ãŠã¿ãŸãããml5.js ã® Image Classifier ãããŒã¹ã«äœã£ãŠããŸããhttps://t.co/AAzqkSXoYH
â Junya Ishihara (@jishiha) November 2, 2019
ããå©çšå¯èœã§ãã pic.twitter.com/ZePeY2aA59
ãã€ãŒãã®äžã«ããã¡ãã®æ©èœã¯ãml5.js ã® Image Classifier ãããŒã¹ã«äœãããããšãããŸãã
æ°ã«ãªã£ãã®ã§ãå°ã ml5.js ã®Â ImageClassifier ã®ãªãã¡ã¬ã³ã¹ãèŠãŠã¿ãŸããã
åé ã«æžããããã®éšåããåŠç¿æžã¿ã¢ãã«ã«é¢ããèšè¿°ã®ããã§ãã
It should be noted that the pre-trained model provided by the example below was trained on a database of approximately 15 million images (ImageNet). The ml5 library accesses this model from the cloud. What the algorithm labels an image is entirely dependent on that training data -- what is included, excluded, and how those images are labeled (or mislabeled).
åŠç¿æžã¿ã¢ãã«ã¯ã1500äžæã®ç»åã䜿ã£ãåŠç¿ãè¡ãããŠããããã§ãããã®ããããã®ç»åã¯ãç»åç³»ã®ç ç©¶ã§ãããç»å Žãããäžèšã® ImageNet ã䜿ã£ãŠãããšæžãããŠããŸããã
现ããæ å ±ãèŠãŠããããã£ãã®ã§ãããæéã®é¢ä¿ã§è¿œãåããã»ã»ã»ã
æ¡åŒµæ©èœã§çšæãããŠãããããã¯ãèŠããšããã®ããã«ãªã£ãŠããŸããã
äœ¿ãæ¹ã®äŸã«ã€ããŠã¯ã@jishiha ããã®ãã€ãŒãã®ããã°ã©ã ã®éšåãèŠãŠã¿ãŸãããäŸãã°ã以äžã®ãããªåŠçã®æµãã«ããããã§ãã
ãã1ïŒç»åèªèãè¡ãé »åºŠã®èšå®ãâã2ïŒèªèçµæãåãåã£ããšãããã£ããã«åŠçãå®è¡ãâã3ã»4ïŒåãåã£ãèªèçµæãæ¥æ¬èªã«ç¿»èš³ãããã®çµæã®æåãç»é¢äžã®å¹ãåºãã§è¡šç€ºããã
ãã®ãµã³ãã«ãåèã«ããŠãå¥éãå®éã«è©ŠãããããŠã¿ãããšæããŸãã
ãããã«
ä»åãScratchçšã®ç¬èªæ¡åŒµæ©èœã®äžã§ãç»åèªèã»ããã€ã¹é£æºã»é¢é£ã®ç¬èªæ¡åŒµãæäŸãããã®ãåãäžããŠã¿ãŸããã
äžèšã®ååã®èšäºãšåãããŠãè²ã
ãªæ©èœãããã®ããããããŠå®æããŸããã
ãããèšäºãæžããªãã§ããããã調ã¹ããå¯ãéããããããŠããããæ³å以äžã«æéã䜿ã£ãŠããŸãã詊ããšããããã£ãããšã¯è¡ããŸããã§ãããä»åŸã¯å®éã«ãããã䜿ã£ãäœåãäœã£ãŠã¿ããããŠã¿ãããšæããŸãã
ãŸãã䞻㫠Scratch ã micro:bit ã«é¢ããŠåã©ãåãã®ããã°ã©ãã³ã°ãµããŒããããããšãå€ã CoderDojo ã®æŽ»åã§ã玹ä»ããŠã¿ããèå³ãæã£ãåãšè©ŠããŠã¿ããããšãã£ãåœ¢ã§æŽ»çšããŠã¿ãããšæããŸãã






