äžæã®çµµã¯åã®èšèã«å€ããããããã1æã®åçã1,000ã®åœãæãããšãã§ããããšããåç¥ã§ãããïŒäžçäžã§æ¯æ¥ãäœçŸäžå¹ãã®éè¯åç©ãè·¯äžã§èŠããã ããä¿è·æœèšã§å®æ¥œæ»ãããããŠããŸããé åçãªåçãæã€ãããã¯ãããå€ãã®é¢å¿ãéããããæ©ãæ¡çšããããšæããããããŸãããããããè¯ãåçãšã¯äœã§ããããïŒããŒã¿ãµã€ãšã³ã¹ã®å©ããåããã°ããããã®åçã®é åãæ£ç¢ºã«å€æããæå©ãããåç©ãã¡ãããå€ãã®äººã«æããããã£ã³ã¹ãåŸããããããæ¹åçãææ¡ããããšãã§ãããããããŸããã
PetFinder.myã¯ããã¬ãŒã·ã¢ã代衚ããåç©çŠç¥ãã©ãããã©ãŒã ã§ã18äžé 以äžã®åç©ãç»é²ããã5äž4åé ã幞ããªé€åçžçµãããŠããŸããããããã¡ã€ã³ããŒã¯ãåç©æ奜家ãã¡ãã£ã¢ãäŒæ¥ãã°ããŒãã«çµç¹ãšå¯æ¥ã«ååããåç©çŠç¥ã®åäžã«åªããŠããŸãã
çŸåšãPetFinder.myã§ã¯ããããã®åçãã©ã³ã¯ä»ãããããã«ãåºæ¬çãªCuteness Meterã䜿çšããŠããŸããããã¯ãåçã®æ§å³ããã®ä»ã®èŠçŽ ãåæããäœåãã®ãããã®ãããã£ãŒã«ã®ããã©ãŒãã³ã¹ãšæ¯èŒãããã®ã§ãããã®åºæ¬çãªããŒã«ã¯æçšã§ããããŸã å®éšçãªæ®µéã§ãããã¢ã«ãŽãªãºã ã¯æ¹åã§ããå¯èœæ§ããããŸãã
ãã®ã³ã³ããã£ã·ã§ã³ã§ã¯ãçã®ç»åãšã¡ã¿ããŒã¿ãåæããŠããããã®åçã®ãPawpularityããäºæž¬ããŸãããã®ã¢ãã«ã¯ãPetFinder.myã®äœåãã®ãããã®ãããã£ãŒã«ã䜿ã£ãŠãã¬ãŒãã³ã°ãšãã¹ããè¡ããŸããæ¡çšãããã¢ãã«ã¯ãåç©çŠç¥ãåäžãããããã®æ£ç¢ºãªæšå¥šäºé ãæäŸããŸãã
æåããã°ãäžçäžã®ã·ã§ã«ã¿ãŒãã¬ã¹ãã¥ãŒéããããã®ãããã£ãŒã«ã®é åãåäžãããããã®AIããŒã«ã«æ¡çšãããèªåçã«åçã®å質ãåäžãããããæ§å³ã®æ¹åãæšå¥šãããããããšã«ãªããŸãããã®çµæãéè¯ç¬ãéè¯ç«ãããæ©ããéåœã®äººããèŠã€ããããšãã§ããããã«ãªããŸããKaggleã³ãã¥ããã£ã®ã¡ãã£ãšããæ¯æŽã§ãå€ãã®å°ãåœãæãããããå€ãã®å¹žããªå®¶æãçãŸãããããããŸããã
äžäœã®åå è ã«ã¯ããœãªã¥ãŒã·ã§ã³ã®å®è£ ã«åããå ±åäœæ¥ã«æåŸ ãããå¯èœæ§ããããAIã®ã¹ãã«ã§äžçã®åç©çŠç¥ãåµé çã«æ¹åããããšãã§ããŸãã
ã«ãŒãå¹³åäºä¹èª€å·® ð ðððž æçš¿äœåã¯RMSEïŒã«ãŒãã»ããŒã³ã»ã¹ã¯ãŠã§ã¢ã»ãšã©ãŒïŒã§æ¡ç¹ãããŸããRMSEã¯æ¬¡ã®ããã«å®çŸ©ãããã
RMSEã¯æ¬¡ã®ããã«å®çŸ©ãããïŒ
ããã§ã$\hat{y}_i$ã¯åã€ã³ã¹ã¿ã³ã¹(i)ã®äºæž¬å€ã(y_i)ã¯å ã®å€ã§ãã
æåºãã¡ã€ã« ãã¹ãã»ããã®åIdã«å¯ŸããŠïŒå¯Ÿè±¡å€æ°ã§ããPawpularityã®ç¢ºçãäºæž¬ããå¿ èŠããããŸãïŒãã¡ã€ã«ã¯ããããå«ã¿ïŒä»¥äžã®åœ¢åŒã§äœæããŠãã ããïŒ
Id, Pawpularity
0008dbfb52aa1dc6ee51ee02adf13537, 99.24
0014a7b528f1682f0cf3b73a991c17a0, 61.71
0019c1388dfcd30ac8b112fb4250c251, 6.23
00307b779c82716b240a24f028b0031b, 9.43
00320c6dd5b4223c62a9670110d47911, 70.89
etc.
- åã³ã³ã
- ç· åæ¥ïŒ2022幎1æ13æ¥ - æçµæåºæé
- UTCæéãªã®ã§æ³šæ
- æåŸãŸã§èµ°ãåãã
- ãŸãäœããã¹ãã
- ä»ã®kagglerãšæ¯ã¹ããšå§åçã«inputéãç¥èãå°ãªã
- ããããæéããããŠå 人éã®ç¥æµDisucussion, Codeãèªã¿æŒã
- æ°ã¥ããããšãinputããããšãããã«èšè¿°ããŠãã
- Disucussionãã
- LB 17.8744ã¹ã³ã¢ã§è©Šããããš
- Model : Imagenet22k
- Ensemble : 10-fold mean
- ååž°ã§ã¯ãªãåé¡
- ç»åçæã»å€æ : åçŽãªã©ã³ãã ã»ãªãµã€ãºã»ã¯ããã
- ããã¯ã¹ã¢ããããªãŒã°ã¡ã³ããŒã·ã§ã³ãè¿œå ããŠã¿ããããããŸãå¹æããªãã£ãããã
- ã©ãã«ã®ãªãããŒã¿ãçæããå¿
èŠããïŒ
- äžããããåŠç¿ã»ãããå°ãããåŠç¿ã®éçšã§ã¢ãã«ããªãŒããŒãã£ããããŠããŸãã®ã§ãèªå·±åŠç¿ãæŽåæ§æ£ååãªã©ã®æºã¹ãŒããŒãã¯ããã¯ã䜿ã£ãŠãããå€ãã®ã©ãã«ã®ãªãããŒã¿ãå©çšããããšèããŠããã
- LB 17.8744ã¹ã³ã¢ã§è©Šããããš
-
Codeã®Hotnessãã
- petfindder-updated-rules.ipynbãã³ããŒ&Submitãããšããªããš287/2470ã«ã
- ããã§è¡ã£ãŠããããŒã¿å å·¥ã»èšç·Žãåèã«ãããšæçšãªç¹åŸŽéãèŠããŠãããã
- petfindder-updated-rules.ipynbã¯è±èªããŒã¹ãªã®ã§æ¥æ¬èªã§æžãèµ·ãããŠã¿ã
- 11/29ã®ç¶ã
- petfindder-updated-rules.ipynbã¯è±èªããŒã¹ãªã®ã§æ¥æ¬èªã§æžãèµ·ãã
- çµæ§ãµãã£ãŠã
- åŠç¿ãããŠäºæž¬çµæãåºããšãããŸã§ã¯ç¿»èš³ããŠããªã
- æ°ã¥ããããš
- ç»åã«å¯ŸããŠç¹å¥(ç¹æ®ãª)å å·¥ããŠããããã§ããªã
- fastaiã®ã©ã€ãã©ãªããŒã¹ã§å å·¥ããŠãã
- ImageDataLoaders.from_dfã䜿ã£ãŠããŒã¿ãã¬ãŒã ã®çæãããŠãã
- fit_one_cycleã§ã¯ã³ãµã€ã¯ã«ã»ããªã·ãŒã䜿ã£ãŠæ©ãåŠç¿ãã
- fastaiã®ããã¥ã¡ã³ãåè
- â»fastaiã®ããã¥ã¡ã³ãã«1CyclePolicyã®èª¬æããã
ãLeslie Smithâs 1cycle policyããšãã°ãããã®ã§ãåŠç¿ããã°ããåæãããåŠç¿ç調æŽæ¹æ³ãå è«æã®åŠç¿ãµã€ã¯ã«æ°ã®æ¯èŒäŸã§ã¯ããã䜿ãããæ¹æ³ïŒåŠç¿ãé²ãã«ã€ããŠåŠç¿çãå°ããããæ¹æ³ïŒã§çŽ8äžãµã€ã¯ã«ããã£ãŠãããšãããçŽ1äžãµã€ã¯ã«ã§åŠç¿ã§ããŠããã
- ãã¹ã
- Discussion Hotness
- https://www.kaggle.com/c/petfinder-pawpularity-score/discussion/286250
- ãåããããããªã®ã§äžæŠãŸãšã
- sishuochenã«ãã£ãŠLBã®ããŒã¹ã©ã€ã³ã17.8744ç¹ãšãªãç匟çºèšããã£ãããã
- äžèšå®è£ ã§ã¯åçŽãªã©ã³ãã ã»ãªãµã€ãºã»ã¯ããããšã©ã³ãã ã»ããªããã»ãªãŒã°ã¡ã³ããŒã·ã§ã³(ç»åããå¢ãïŒ)ã«ããåé¡ã䜿çšããŠãã
- ãã®ç¬éããKagglerã¯åç©åã®ã¢ãã«ïŒã®ãã©ã³ã¹ãã©ãŒããŒéšåãæ¢ãããã«ãªã£ã
- ã€ãŸãåç©åã«ããåç©ã®ç»åã§ããå¢ãïŒå å·¥ïŒã£ãŠããšïŒ
- çµç€ã«å·®ãæããã«ã€ããŠç¬ã¯ç«ãããåé¡ããã®ãé¥ãã«é£ãããšããè°è«ãè¡ããã
- Discussion
- ã¢ãã«ãåªããŠãããã©ãããè©äŸ¡ããããã®ææ³ã¯RMSEãæšæºåå·®ãããäœããã©ããããã§ãã¯ããããšã
- äžããããããŒã¿ã ãã§ã¯æ£ããäºæž¬ããããšã¯ã»ãŒäžå¯èœ
- single model cv 17.5 LB 17.90
- swin transformerã䜿ã£ã
- https://github.com/microsoft/Swin-Transformer
- æ倱é¢æ°ã¯CrossEntropyã䜿ã£ã
- 5ãã©ãŒã«ã䜿çšãã
- 32ã¹ãããããšã«è©äŸ¡ããããšã§ãšããã¯çµäºæã«è©äŸ¡ãããããããçµæãåŸããã
- åŠç¿éçšã§mixupã䜿ãããšã§ãªãŒããŒãã£ããã£ã³ã°ãé²ãã
- Discussion
- ãã¥ãŒã©ã«ãããã¯ãŒã¯
- InputLayer
- Flatten
- Dense
- Dense
- ã®ãããªãã¥ãŒã©ã«ãããã¯ãŒã¯ãæ§ç¯ããã®ãã¢ãª
- å
¬éãããNotebookã§fastaiãããèŠã
- fastaièªäœã¯æ·±å±€åŠç¿ãç°¡åã«è¡ãããšãã§ããPythonã®ããã±ãŒãž
- Kaggleã®ç»åã³ã³ãã§ã¯fast.aiããŒã¹ã®è§£æ³ãKerneläžã§ããå ±æããã
- ãããŸã§ãè©Šãçšã®ã©ã€ãã©ãªã§ç ©éãªéšåãäžåç¡ããããç°¡åã«NNãçµãããšãã§ãããfast.aiã極ããæå³ã¯ããŸããªãããã
- ãããäœãèŠãã°ïŒ
- âäžæŠfastaiã®æµããæããŠããã«è¶ããããšã¯ãªãã
- ãããèžãŸããŠãCNNãResNet, ImageNetãå©çšããã®ãè¯ãã®ã
- ãã¥ãŒã©ã«ãããã¯ãŒã¯
- åå¿è ã®ããã®ããŒã¿ã»ããã®æ±ãæ¹ã»æé
- https://www.kaggle.com/pythonash/how-to-handle-dataset-for-beginners
- ãšããããããŒã¿ãã¬ãŒã ã«èœãšã蟌ãã§äžèº«ãèŠã
- æ¬ æå€ãããã確èªãã
- ããŒã¿ã®éè€ãããã確èªãã
- 0 or 1ã®ããŒã¿å€ãªã®ã§ããŒã¿ã®åãæ¹ãã©ããªã®ã確ããããããæ£ã°ã©ãã«ãã
- ç®çå€æ°ã®ã¹ã³ã¢ãã©ããªã£ãŠãããæç»ãã(æ£ã°ã©ã+æãç·ã°ã©ã)
- Y軞ã«å¯åºŠãX軞ã«é å床(Pawpularity)
- ãã¹ãããŒã¿ããã©ããšç¢ºèª(test.head())
- æ¬ æå€ãããã確èª
- ç»åã³ã³ããªã®ã§ç»åããŒã¿ã®ãµã€ãºã確èªãã
- foræã§åããŠåç»åã®width, height, channelãååŸ(opencv?)
- äžçªå°ãããµã€ãºã®ç»åãµã€ãºã確èªãã
- value_counts()ã§ã©ã®ç»åãµã€ãºãå€ãã®ã確èª
- ç»çŽ æ§é ã確èªãã
- width*height = 960 * 720 ã ã£ã
- åŠç¿çšç»åããŒã¿ã®èªã¿èŸŒã¿ãšãªãµã€ãºããã
- ç»åãµã€ãºã64*64ã«ãã
- ãªã64*64ïŒ->ã¡ã¢ãªå²ãåœãŠã§è©°ãŸãããã
- ç»åããŒã¿ã»ãããå€ãããŠã¡ã¢ãªãççºããŠããŸã
- ç»åã64*64ã«çž®å°(ãªãµã€ãº)ããããšã§ã¡ã¢ãªã確ä¿ãã
- ãã¯ã»ã«ã255ã§å²ã£ãŠãªãµã€ãºãã(0~1ã®éã«ããæ£èŠå)
- ãã®åŠçã§ã¯ãcv2.INTER_AREAãšãããã©ã¡ãŒã¿ã䜿ããšãè£éåŠçãè¡ãããšãã§ãã
- ç»åãµã€ãºã64*64ã«ãã
- ç»åãšåIDã®å¯Ÿå¿ã¥ã
- ç»åããŒã¿ã»ããé ãšcsvãã¡ã€ã«é ãäžèŽããã
- èšç·ŽããŒã¿ãå床ã€ã³ããã¯ã¹ãæ¯ãçŽã
- ãªãµã€ãºå å·¥ããããŒã¿ãšãªãªãžãã«ããŒã¿ã確èªããŠã¿ã
- ãã¹ãããŒã¿ã»ããã®èªã¿èŸŒã¿ã»ã¹ã±ãŒã«ãµã€ãºã¯ïŒ
- ãã¹ãããŒã¿ã¯(128, 128, 3)ã ããã¡ã¢ãªãµã€ãºã®åé¡ã§64*64ã«ãªãµã€ãºããå¿ èŠããã
- ãã¹ãããŒã¿ã»ããã解æããããã«åŠç¿ç»åãšãã¹ãç»åã®ãµã€ãºãåãã«ãã
以äžã§ããã®ããŒã¿ã»ãããèšç·Žçšãšãã¹ãçšã«äœ¿ãåããã¹ã³ã¢ãååŸããæºåãã§ããã
ãã¹ãç»åãåç©ã«èŠããªãã®ã¯ãªããïŒ(ãªãµã€ãºå å·¥ãªã©ãããŠãããã¢ã¶ã€ã¯ã«ãªã£ãŠãã)
ãŸãããã®ããŒã¿ã»ããã解æã«äœ¿ãããã©ãããæ°ã«ãªããšããã ->åçè ã®å¥ããŒãããã¯ã«è²ã ãã³ããèšèŒããŠãããããã®ã§æ¢ããŠã¿ãã
ãã®èšäºã§ã¯ç»åããŒã¹ã¢ãã«ã®æ§èœãåäžãããããã«ãããã¯ãŒã¯ã¢ãŒããã¯ãã£ã«å ããã¹ã調æŽäºé ã玹ä»ããã
- [3/4, 4/3]ã®çžŠæšªæ¯ã®é·æ¹åœ¢ã®é åãã©ã³ãã ã«åãåãã[8%, 100%]ã§ã©ã³ãã ã«ãµã³ãã«ããŠæåŸã«img_size x image_sizeã®æ£æ¹åœ¢ã«ãªãµã€ãºãã
- ããããããæ¯ã«ã©ã³ãã ã«å®è¡ãã
- ã©ã³ãã ãªæ°Žå¹³å転ãå ãã(ex: 0.5...)
- è²çžã圩床ãæ床ãã©ã³ãã ã«å€æŽã[0:6;1:4]ã«æ¯äŸããä¿æ°ãéžæãã
- åãã£ã³ãã«ãå¹³åå€ã§åŒãæšæºå€ã§å²ã£ãŠRGBãã£ã³ãã«ãæ£èŠåãã
- 瞊暪æ¯ã¯ãã®ãŸãŸã«ç蟺ãimg_sizeã«ãªãµã€ãºããäžå€®ã®(img_size-1)x(img_size-1)ã®éšåãåãåã
- äžèšã®ããã«æšæºåãã
- ç³ã¿èŸŒã¿ãšå®å šé£çµå±€ããXavieréã¿ãã§åæåãã?ïŒ[-a, a]ã§äžæ§ãªã©ã³ãã å€ããšã
ããã§ãd_in ãš d_out ã¯ããããã¬ã€ã€ãŒã®å ¥åãšåºåã®ãã£ã³ãã«æ°ã§ããã
- ãã€ã¢ã¹ã0ã«åæå
- ãããæ£èŠå: ã¢ã«ãã¡ãšããŒã¿ããããã1ãš0ã«åæåãã
- LRã¹ã±ãžã¥ãŒã©ããŸã æã£ãŠããªãå Žå0.1ã«åæåããæ°ãšããã¯ããšã«10ã§å²ãã®ãè¯ãåºæ¬çãªæ¹æ³
- ãããããSGDã§åŠç¿ããå Žåãããããµã€ãºã倧ãããããšåæé床ã«åœ±é¿ã粟床ãäœäžãã
- éã«å°ãããããšåŠç¿ãå®äºããªã
- åŸé éäžã¯ã©ã³ãã åŠçãã
- ããããµã€ãºã倧ããããŠãåŸé
ãã®ãã®ã«ã¯åœ±é¿ããªããåæ£ãå°ãããã
- ã€ãŸããã€ãºãæžããããšãã§ãã->æ£ååã¿ãããªãã®
- ãã®æ¹æ³ã§åŠç¿ããå Žåã¯LRã¹ã±ãžã¥ãŒã©ã䜿ã£ãŠããããµã€ãºã倧ããããããã«è£æ£ãã
ex) ããŒã¹ã©ã€ã³ã®ããããµã€ãºã256ã§æåã®ããŒã¹ã©ã€ã³åŠç¿ã¬ãŒãã0.1ã§ããã°ãããããµã€ãºãbãšããæãåŠç¿ã¬ãŒãã0.1 * b/256ã«ãã
- åæç¶æ ã¯éã¿ãã©ã³ãã ãªã®ã§åŠç¿çã倧ãããããšæåã®ãããã§åŠç¿ãäžå®å®ã«ãªã
- 5ãšããã¯ãããã®ããŒã¿mãããã䜿ã£ãŠåŠç¿çã0ããæåã®åŠç¿ç(é©åœãªç®æ)ãŸã§äžããå¿ èŠãã
- æ®å·®ãããã¯ã®BNã®Î±ã0ã«åæåãã
- æ®å·®ãããã¯ã®ã¿ãå ¥åãè¿ãããã«ãªã
- ã¹ã¿ãŒãã®åŠç¿ã容æã«ãªã
ããŒããŠã§ã¢ããµããŒãããŠããå Žåã¯æ±ããç¡æã§æ©ãè¡ããåŠç¿ïŒ
- åŠç¿çµäºåŸïŒä»ã®ãã¹ãŠã®å±€ãåºãŸã£ãŠããæã«æåŸã®å±€ãããã«æ°ååŠç¿ããã
åæ°ã®äžæ©ã
- ãã®ã¹ã±ãžã¥ãŒã©ã¯ãããã«äœ¿ããã匷åãªã¹ã±ãžã¥ãŒã©ã
- æé©ã§ã¯ãªãããæé©ãæ¢ãå§ããã«ã¯æé©ãªå Žæ?
- ã©ãã«ã¹ã ãŒãžã³ã°ããããšããè¯ãã¢ãã«ã«ãªã
- PyTorchã®å Žåã¯ä»¥äžã®æ倱ãã³ãããã
from torch.nn.modules.loss import _WeightedLoss
class SmoothBCEwLogits(_WeightedLoss):
def __init__(self, weight = None, reduction = 'mean', smoothing = 0.0, pos_weight = None):
super().__init__(weight=weight, reduction=reduction)
self.smoothing = smoothing
self.weight = weight
self.reduction = reduction
self.pos_weight = pos_weight
@staticmethod
def _smooth(targets, n_labels, smoothing = 0.0):
assert 0 <= smoothing < 1
with torch.no_grad(): targets = targets * (1.0 - smoothing) + 0.5 * smoothing
return targets
def forward(self, inputs, targets):
targets = SmoothBCEwLogits._smooth(targets, inputs.size(-1), self.smoothing)
loss = F.binary_cross_entropy_with_logits(inputs, targets,self.weight, pos_weight = self.pos_weight)
if self.reduction == 'sum': loss = loss.sum()
elif self.reduction == 'mean': loss = loss.mean()
return loss
- PyTorchã䜿ã£ãŠå®è£ ããŠã¿ã
- æé
- åŠç¿ã¢ãã«ã«å¿ èŠãªã©ã€ãã©ãªã®ã€ã³ããŒã
- GPUç°å¢ã®äœ¿çš
- ãµã€ãºãçµ±äžããŠç»åããã³ãœã«ã®åœ¢ã«ãã
- ãã¹ãæ ŒçŽãããªã¹ããè¿ãé¢æ°ãäœæãã
- data.Datasetãç¶æ¿ããDatasetã¯ã©ã¹ã®äœæããã
- train_datasetã§Datasetãåãåã
- train_dataloaderã§ããŒã¿ããŒããŒãèšå®ãã, ããããµã€ãºãé©åãªæ°ã«ãã
- ã¢ãã«ãæ§ç¯ãã(ãªãã¹ãCNNããããã)
- æ倱é¢æ°ã®èšå®
- epochæ°ã決ããŠåŠç¿ãã
- ãã³ãœã«->ç»åã«çŽããŠç»åããŒã¿ãååŸããŠã¿ã
https://www.kaggle.com/bibhabasumohapatra/pawpularity-part-2