{
  "id": 307504,
  "title": "⭐️⭐️⭐️ Experiments list - competition summary from our team perspective ⭐️⭐️⭐️⭐️",
  "url": "/competitions/tensorflow-great-barrier-reef/discussion/307504",
  "author_name": "",
  "post_date": "2022-02-14T13:27:36.582280400Z",
  "votes": 78,
  "comment_count": 34,
  "views": 0,
  "content": "<p><strong>First of all I would like to thank you everybody for this great competition and opportunity to learn a lot new things. Thank you!</strong> 🙏</p>\n<p>This is a description of the things we tried during this 3 month competition. We made over 370 submissions and a lot of different experiments. Since the competition is not over yet, we will not describe what was crucial to achieve the current result, but we will only describe the experiments that we conducted during these 3 months.</p>\n<p>During this competition we managed to contribute a lot publishing many notebooks and actively participating in discussions. Our public notebooks:</p>\n<ul>\n<li>5 gold notebooks (YoloX training and inference, YoloR training and inference, SAHI prediction)</li>\n<li>3 silver notebooks (GAN Training, GAN generator, Neural Style Transfer)</li>\n</ul>\n<p>Below you will find the things that we tested during this competition and achieve max 0.710 public leaderboard score. Certainly we will describe our final solution as well (what worked for us and what not).</p>\n<p>Training environments:</p>\n<ul>\n<li>Colab then me moved to Colab Pro+ and Google Drive (200GB)</li>\n<li>Notebook Dell Allienware R7 - RTX3080</li>\n</ul>\n<p>Augmentations:</p>\n<ul>\n<li>Increased image size (to max 2400 but tried higher resolution as well) - hard resizing (all images were resized in dataset) and soft resizing (resizing during training image size)</li>\n<li>Increased image size with SuperResolution (Open CV model - FSRCNN)</li>\n<li>Tailed (part of the images) training. Two approaches a. based on tiled images only and b. mixed (tiled and original images).</li>\n<li>CLAHE, HSV, Affine, Blur, RandomBrightnessContrast, Noise, ImageCompression, Rotate (+/- 30), Random Crop, Mixup, Mosaic.</li>\n<li>Modified CLAHE, RandomSizedBBoxSafeCrop in albumentations library.</li>\n</ul>\n<p>Data:</p>\n<ul>\n<li>We were looking for an external dataset - not found.         </li>\n<li>Relabeled dataset – we fixed non labeled starfish instances (using labelImg) and found new one in unannotated data. We created a new dataset.</li>\n<li>Starfish crop – we cropped starfish bbox’es (with small margin) and created additional dataset using unannotated images (we just merged augumented starfishes with images).</li>\n<li>GAN synthetic dataset (generated new instances of starfish and merged with unannotated images) </li>\n<li>Resampled dataset - we took every second and every third images to avoid many duplicates in the dataset.</li>\n</ul>\n<p>Cross validation:</p>\n<ul>\n<li>CV10 based on video subsequences </li>\n<li>CV5 based on video subsequences</li>\n<li>Video and sequence split.</li>\n</ul>\n<p>Models:</p>\n<ul>\n<li>YoloX – notebook published -&gt; model from nano to X (YoloX to perform better needs more GPU memory)</li>\n<li>YoloR - published notebook</li>\n<li>Yolov5 - own implementations + custom changes to Yolov5 sources (mainly in yolo model).</li>\n<li>FasterRCNN (Pytorch implementation) </li>\n</ul>\n<p>Changes to framework:</p>\n<ul>\n<li>Yolox - implemented a Albumentations pipeline into YoloX dataloader class.</li>\n<li>Yolov5 – implementation of f2 metrics and logging functions. </li>\n<li>Yolov5 - custom multiscale implementation</li>\n</ul>\n<p>Model performance checking:</p>\n<ul>\n<li>3 different implementations of f2 metric</li>\n<li>Model inference debugger – we count parts of f2 score (TP/TN/FP) and plot them to see model prediction distribution to optimize inference parameters (IOU/CONF).</li>\n<li>Model inference visualizer – we generated videos for each training to see predictions and problems on validation dataset.</li>\n<li>f2 metric validation in yolov5 during training and fitness functions chenages (to choose best model based on f2 metric)</li>\n<li>hyperparameter search function - to choose best CONF and IOU thresholds.</li>\n</ul>\n<p>Training:</p>\n<ul>\n<li>Progressive Resizing – 960 image size training and then retraining on 1920 (changing training LR and momentum parameters)</li>\n<li>Training only on annotated data</li>\n<li>Training on mixed data (with background images) - 1-3% unannotated data (background) as additional data in training (to decrease number of FP).</li>\n<li>Retraining model with background images (from unannotated data) where our model detects FP (to clean up FP - stones, fish, image edges etc.).</li>\n<li>Retrain model on whole dataset.</li>\n<li>Label smoothing.</li>\n<li>Adam vs SGD.</li>\n<li>LR an Momentum and weight decay hyperparameter searching.</li>\n<li>Yolov5 - BiFPN head training as an extra step.</li>\n<li>Higher resolution training - but due to GPU limitation we manage to train images with 2400 resolutions only.</li>\n<li>own multiscale implementation in yolov5</li>\n</ul>\n<p>Inference:</p>\n<ul>\n<li>TTA – implemented in yolo5 (changed by our team to resize not downsize image during the inference) and custom script (inference part).</li>\n<li>SAHI -  Slicing Aided Hyper Inference</li>\n<li>Object tracking – nofair, ByteTrack, DeepSort</li>\n<li>WBF - only yolo5 models and yolo5/yolox mixture</li>\n<li>WBFT (WBF with threshold our new proposed change to WBF - filter final prediction below treshold)</li>\n<li>Other preprocessing - bbox’s clean up based on bbox size ratio</li>\n</ul>\n<p>Additional (as a fun part):</p>\n<ul>\n<li>Yolov5 activations maps and grad-CAM</li>\n<li>a lots of brainstorm with real thunders - we had a lot of hard talks and times where we argued over which solution was better. </li>\n</ul>",
  "messages": [
    {
      "id": "1689752",
      "postDate": "02/14/2022 13:27:36",
      "content": "<p><strong>First of all I would like to thank you everybody for this great competition and opportunity to learn a lot new things. Thank you!</strong> 🙏</p>\n<p>This is a description of the things we tried during this 3 month competition. We made over 370 submissions and a lot of different experiments. Since the competition is not over yet, we will not describe what was crucial to achieve the current result, but we will only describe the experiments that we conducted during these 3 months.</p>\n<p>During this competition we managed to contribute a lot publishing many notebooks and actively participating in discussions. Our public notebooks:</p>\n<ul>\n<li>5 gold notebooks (YoloX training and inference, YoloR training and inference, SAHI prediction)</li>\n<li>3 silver notebooks (GAN Training, GAN generator, Neural Style Transfer)</li>\n</ul>\n<p>Below you will find the things that we tested during this competition and achieve max 0.710 public leaderboard score. Certainly we will describe our final solution as well (what worked for us and what not).</p>\n<p>Training environments:</p>\n<ul>\n<li>Colab then me moved to Colab Pro+ and Google Drive (200GB)</li>\n<li>Notebook Dell Allienware R7 - RTX3080</li>\n</ul>\n<p>Augmentations:</p>\n<ul>\n<li>Increased image size (to max 2400 but tried higher resolution as well) - hard resizing (all images were resized in dataset) and soft resizing (resizing during training image size)</li>\n<li>Increased image size with SuperResolution (Open CV model - FSRCNN)</li>\n<li>Tailed (part of the images) training. Two approaches a. based on tiled images only and b. mixed (tiled and original images).</li>\n<li>CLAHE, HSV, Affine, Blur, RandomBrightnessContrast, Noise, ImageCompression, Rotate (+/- 30), Random Crop, Mixup, Mosaic.</li>\n<li>Modified CLAHE, RandomSizedBBoxSafeCrop in albumentations library.</li>\n</ul>\n<p>Data:</p>\n<ul>\n<li>We were looking for an external dataset - not found.         </li>\n<li>Relabeled dataset – we fixed non labeled starfish instances (using labelImg) and found new one in unannotated data. We created a new dataset.</li>\n<li>Starfish crop – we cropped starfish bbox’es (with small margin) and created additional dataset using unannotated images (we just merged augumented starfishes with images).</li>\n<li>GAN synthetic dataset (generated new instances of starfish and merged with unannotated images) </li>\n<li>Resampled dataset - we took every second and every third images to avoid many duplicates in the dataset.</li>\n</ul>\n<p>Cross validation:</p>\n<ul>\n<li>CV10 based on video subsequences </li>\n<li>CV5 based on video subsequences</li>\n<li>Video and sequence split.</li>\n</ul>\n<p>Models:</p>\n<ul>\n<li>YoloX – notebook published -&gt; model from nano to X (YoloX to perform better needs more GPU memory)</li>\n<li>YoloR - published notebook</li>\n<li>Yolov5 - own implementations + custom changes to Yolov5 sources (mainly in yolo model).</li>\n<li>FasterRCNN (Pytorch implementation) </li>\n</ul>\n<p>Changes to framework:</p>\n<ul>\n<li>Yolox - implemented a Albumentations pipeline into YoloX dataloader class.</li>\n<li>Yolov5 – implementation of f2 metrics and logging functions. </li>\n<li>Yolov5 - custom multiscale implementation</li>\n</ul>\n<p>Model performance checking:</p>\n<ul>\n<li>3 different implementations of f2 metric</li>\n<li>Model inference debugger – we count parts of f2 score (TP/TN/FP) and plot them to see model prediction distribution to optimize inference parameters (IOU/CONF).</li>\n<li>Model inference visualizer – we generated videos for each training to see predictions and problems on validation dataset.</li>\n<li>f2 metric validation in yolov5 during training and fitness functions chenages (to choose best model based on f2 metric)</li>\n<li>hyperparameter search function - to choose best CONF and IOU thresholds.</li>\n</ul>\n<p>Training:</p>\n<ul>\n<li>Progressive Resizing – 960 image size training and then retraining on 1920 (changing training LR and momentum parameters)</li>\n<li>Training only on annotated data</li>\n<li>Training on mixed data (with background images) - 1-3% unannotated data (background) as additional data in training (to decrease number of FP).</li>\n<li>Retraining model with background images (from unannotated data) where our model detects FP (to clean up FP - stones, fish, image edges etc.).</li>\n<li>Retrain model on whole dataset.</li>\n<li>Label smoothing.</li>\n<li>Adam vs SGD.</li>\n<li>LR an Momentum and weight decay hyperparameter searching.</li>\n<li>Yolov5 - BiFPN head training as an extra step.</li>\n<li>Higher resolution training - but due to GPU limitation we manage to train images with 2400 resolutions only.</li>\n<li>own multiscale implementation in yolov5</li>\n</ul>\n<p>Inference:</p>\n<ul>\n<li>TTA – implemented in yolo5 (changed by our team to resize not downsize image during the inference) and custom script (inference part).</li>\n<li>SAHI -  Slicing Aided Hyper Inference</li>\n<li>Object tracking – nofair, ByteTrack, DeepSort</li>\n<li>WBF - only yolo5 models and yolo5/yolox mixture</li>\n<li>WBFT (WBF with threshold our new proposed change to WBF - filter final prediction below treshold)</li>\n<li>Other preprocessing - bbox’s clean up based on bbox size ratio</li>\n</ul>\n<p>Additional (as a fun part):</p>\n<ul>\n<li>Yolov5 activations maps and grad-CAM</li>\n<li>a lots of brainstorm with real thunders - we had a lot of hard talks and times where we argued over which solution was better. </li>\n</ul>",
      "rawMarkdown": "**First of all I would like to thank you everybody for this great competition and opportunity to learn a lot new things. Thank you!** 🙏\n\nThis is a description of the things we tried during this 3 month competition. We made over 370 submissions and a lot of different experiments. Since the competition is not over yet, we will not describe what was crucial to achieve the current result, but we will only describe the experiments that we conducted during these 3 months.\n\nDuring this competition we managed to contribute a lot publishing many notebooks and actively participating in discussions. Our public notebooks:\n* 5 gold notebooks (YoloX training and inference, YoloR training and inference, SAHI prediction)\n* 3 silver notebooks (GAN Training, GAN generator, Neural Style Transfer)\n \nBelow you will find the things that we tested during this competition and achieve max 0.710 public leaderboard score. Certainly we will describe our final solution as well (what worked for us and what not).\n\nTraining environments:\n* Colab then me moved to Colab Pro+ and Google Drive (200GB)\n* Notebook Dell Allienware R7 - RTX3080\n\nAugmentations:\n* Increased image size (to max 2400 but tried higher resolution as well) - hard resizing (all images were resized in dataset) and soft resizing (resizing during training image size)\n* Increased image size with SuperResolution (Open CV model - FSRCNN)\n* Tailed (part of the images) training. Two approaches a. based on tiled images only and b. mixed (tiled and original images).\n* CLAHE, HSV, Affine, Blur, RandomBrightnessContrast, Noise, ImageCompression, Rotate (+/- 30), Random Crop, Mixup, Mosaic.\n* Modified CLAHE, RandomSizedBBoxSafeCrop in albumentations library.\n\nData:\n* We were looking for an external dataset - not found.         \n* Relabeled dataset – we fixed non labeled starfish instances (using labelImg) and found new one in unannotated data. We created a new dataset.\n* Starfish crop – we cropped starfish bbox’es (with small margin) and created additional dataset using unannotated images (we just merged augumented starfishes with images).\n* GAN synthetic dataset (generated new instances of starfish and merged with unannotated images) \n* Resampled dataset - we took every second and every third images to avoid many duplicates in the dataset.\n\nCross validation:\n* CV10 based on video subsequences \n* CV5 based on video subsequences\n* Video and sequence split.\n\nModels:\n* YoloX – notebook published -> model from nano to X (YoloX to perform better needs more GPU memory)\n* YoloR - published notebook\n* Yolov5 - own implementations + custom changes to Yolov5 sources (mainly in yolo model).\n* FasterRCNN (Pytorch implementation) \n\nChanges to framework:\n* Yolox - implemented a Albumentations pipeline into YoloX dataloader class.\n* Yolov5 – implementation of f2 metrics and logging functions. \n* Yolov5 - custom multiscale implementation\n\nModel performance checking:\n* 3 different implementations of f2 metric\n* Model inference debugger – we count parts of f2 score (TP/TN/FP) and plot them to see model prediction distribution to optimize inference parameters (IOU/CONF).\n* Model inference visualizer – we generated videos for each training to see predictions and problems on validation dataset.\n* f2 metric validation in yolov5 during training and fitness functions chenages (to choose best model based on f2 metric)\n* hyperparameter search function - to choose best CONF and IOU thresholds.\n\nTraining:\n* Progressive Resizing – 960 image size training and then retraining on 1920 (changing training LR and momentum parameters)\n* Training only on annotated data\n* Training on mixed data (with background images) - 1-3% unannotated data (background) as additional data in training (to decrease number of FP).\n* Retraining model with background images (from unannotated data) where our model detects FP (to clean up FP - stones, fish, image edges etc.).\n* Retrain model on whole dataset.\n* Label smoothing.\n* Adam vs SGD.\n* LR an Momentum and weight decay hyperparameter searching.\n* Yolov5 - BiFPN head training as an extra step.\n* Higher resolution training - but due to GPU limitation we manage to train images with 2400 resolutions only.\n* own multiscale implementation in yolov5\n\nInference:\n* TTA – implemented in yolo5 (changed by our team to resize not downsize image during the inference) and custom script (inference part).\n* SAHI -  Slicing Aided Hyper Inference\n* Object tracking – nofair, ByteTrack, DeepSort\n* WBF - only yolo5 models and yolo5/yolox mixture\n* WBFT (WBF with threshold our new proposed change to WBF - filter final prediction below treshold)\n* Other preprocessing - bbox’s clean up based on bbox size ratio\n\nAdditional (as a fun part):\n* Yolov5 activations maps and grad-CAM\n* a lots of brainstorm with real thunders - we had a lot of hard talks and times where we argued over which solution was better.",
      "votes": null
    },
    {
      "id": "1689868",
      "postDate": "02/14/2022 15:05:34",
      "content": "<p>Wow, so much work. I'm really curious if GAN helped or not. Of course, you shouldn't answer now. Better to wait a few hours til results are published. </p>",
      "rawMarkdown": "Wow, so much work. I'm really curious if GAN helped or not. Of course, you shouldn't answer now. Better to wait a few hours til results are published.",
      "votes": null
    },
    {
      "id": "1689883",
      "postDate": "02/14/2022 15:11:18",
      "content": "<p>If you are interested in GAN related notebooks listed in <a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a> post</p>\n<p><a href=\"https://www.kaggle.com/marcinstasko/gan-training-make-unlimited-cots\" target=\"_blank\">Gan Training</a><br>\n<a href=\"https://www.kaggle.com/marcinstasko/unlimited-cots-generator-pytorch-gan-in-action\" target=\"_blank\">Gan Generating</a><br>\n<a href=\"https://www.kaggle.com/marcinstasko/cots-neuralstyle-transfer-pytorch-augumentation\" target=\"_blank\">Neural Style Transfer</a></p>",
      "rawMarkdown": "If you are interested in GAN related notebooks listed in @remekkinas post\n\n[Gan Training](https://www.kaggle.com/marcinstasko/gan-training-make-unlimited-cots)\n[Gan Generating](https://www.kaggle.com/marcinstasko/unlimited-cots-generator-pytorch-gan-in-action)\n[Neural Style Transfer](https://www.kaggle.com/marcinstasko/cots-neuralstyle-transfer-pytorch-augumentation)",
      "votes": null
    },
    {
      "id": "1689888",
      "postDate": "02/14/2022 15:12:06",
      "content": "<p>I don't think it is the right time to share this.👀</p>",
      "rawMarkdown": "I don't think it is the right time to share this.👀",
      "votes": null
    },
    {
      "id": "1689897",
      "postDate": "02/14/2022 15:15:59",
      "content": "<p>Yes, we describe our solution after competition finish. I am sure people have better final result than we have … but I wanted to share areas we touched during competition - maybe it will be inspiration for future competition. </p>",
      "rawMarkdown": "Yes, we describe our solution after competition finish. I am sure people have better final result than we have ... but I wanted to share areas we touched during competition - maybe it will be inspiration for future competition.",
      "votes": null
    },
    {
      "id": "1689901",
      "postDate": "02/14/2022 15:17:00",
      "content": "<p>Why? There are no solutions. We shared areas we check during competition. There is no answer what works or not … </p>",
      "rawMarkdown": "Why? There are no solutions. We shared areas we check during competition. There is no answer what works or not ...",
      "votes": null
    },
    {
      "id": "1689905",
      "postDate": "02/14/2022 15:20:36",
      "content": "<p>A little early before the deadline, and make anyone who sees this feel powerless.🙈🙉🙊</p>",
      "rawMarkdown": "A little early before the deadline, and make anyone who sees this feel powerless.🙈🙉🙊",
      "votes": null
    },
    {
      "id": "1689914",
      "postDate": "02/14/2022 15:25:06",
      "content": "<p>Aaaa … ok. Sorry :) 😍😃</p>",
      "rawMarkdown": "Aaaa ... ok. Sorry :) 😍😃",
      "votes": null
    },
    {
      "id": "1689929",
      "postDate": "02/14/2022 15:35:31",
      "content": "<p>I express my awe to you for making so many efforts.<br>\nGood luck!</p>",
      "rawMarkdown": "I express my awe to you for making so many efforts.\nGood luck!",
      "votes": null
    },
    {
      "id": "1689955",
      "postDate": "02/14/2022 15:53:23",
      "content": "<p>Good luck for you as well <a href=\"https://www.kaggle.com/deepkim\" target=\"_blank\">@deepkim</a>! 👍👍👍 </p>",
      "rawMarkdown": "Good luck for you as well @deepkim! 👍👍👍",
      "votes": null
    },
    {
      "id": "1690203",
      "postDate": "02/14/2022 19:25:24",
      "content": "<p>You were the MVP of the competition!<br>\nall the best for the private LB</p>",
      "rawMarkdown": "You were the MVP of the competition!\nall the best for the private LB",
      "votes": null
    },
    {
      "id": "1690265",
      "postDate": "02/14/2022 20:27:14",
      "content": "<p>Thank you! 🙏🙏🙏</p>\n<p>For sure … we can fight for LB positions and share …. and have a lot fun with progressing. Kaggle is great place for learning. It is great place to talk and share experiences with person who loves solving problems using ML. I have larned a lot from many of you in this competition - I am really grateful ❤️❤️❤️ </p>\n<p>It is a pity that some people, instead of giving constructive feedback (I am open on feedback), can only give negative points by staying hidden. Embarrassing but well … there are always people like this who  spoil a place like Kaggle. But to be positive …. absolutely outstanding competition and people who really work hard to push the LB limits. I am really impressed and waiting for solution description. For me you are masters of competition. 👍👍👍 </p>",
      "rawMarkdown": "Thank you! 🙏🙏🙏\n\nFor sure ... we can fight for LB positions and share .... and have a lot fun with progressing. Kaggle is great place for learning. It is great place to talk and share experiences with person who loves solving problems using ML. I have larned a lot from many of you in this competition - I am really grateful ❤️❤️❤️ \n\nIt is a pity that some people, instead of giving constructive feedback (I am open on feedback), can only give negative points by staying hidden. Embarrassing but well ... there are always people like this who  spoil a place like Kaggle. But to be positive .... absolutely outstanding competition and people who really work hard to push the LB limits. I am really impressed and waiting for solution description. For me you are masters of competition. 👍👍👍",
      "votes": null
    },
    {
      "id": "1690300",
      "postDate": "02/14/2022 20:56:19",
      "content": "<p><a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a> Great post. Can't wait to hear your solution. I can't wait to share mine too (but as a separate notebook perhaps). But definitely agree with the others that your starter notebooks were invaluable to everybody in this competition.</p>\n<p>What I'm keen to hear is how you (and others) have found their teams and whether people found it better (or worse) as a team? This is my first competition so I stuck to myself as a team of one (having no rep and also no desire to share the $$$ if any is coming), but would be keen to join other top guns in future competitions.</p>",
      "rawMarkdown": "remekkinas Great post. Can't wait to hear your solution. I can't wait to share mine too (but as a separate notebook perhaps). But definitely agree with the others that your starter notebooks were invaluable to everybody in this competition.\n\nWhat I'm keen to hear is how you (and others) have found their teams and whether people found it better (or worse) as a team? This is my first competition so I stuck to myself as a team of one (having no rep and also no desire to share the $$$ if any is coming), but would be keen to join other top guns in future competitions.",
      "votes": null
    },
    {
      "id": "1690363",
      "postDate": "02/14/2022 22:23:56",
      "content": "<p>just wondering how much LB did you gain after fixing the dataset , mine jump significantly  after fixing like 40-50 frames, didn't have much time to do the rest since I discover it late. </p>",
      "rawMarkdown": "just wondering how much LB did you gain after fixing the dataset , mine jump significantly  after fixing like 40-50 frames, didn't have much time to do the rest since I discover it late.",
      "votes": null
    },
    {
      "id": "1690626",
      "postDate": "02/15/2022 03:18:48",
      "content": "<p>Congratulations, <a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a> initially you had a great boost, what was the magic?</p>",
      "rawMarkdown": "Congratulations, @remekkinas initially you had a great boost, what was the magic?",
      "votes": null
    },
    {
      "id": "1690659",
      "postDate": "02/15/2022 03:45:29",
      "content": "<p><a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a> we need more people like you here, your positive energy is contagious :D  <br>\nCongratulations on your great experiment ! </p>",
      "rawMarkdown": "remekkinas we need more people like you here, your positive energy is contagious :D  \nCongratulations on your great experiment !",
      "votes": null
    },
    {
      "id": "1690692",
      "postDate": "02/15/2022 04:07:40",
      "content": "<p>Admirable commitment, thanks for sharing 🙌</p>",
      "rawMarkdown": "Admirable commitment, thanks for sharing 🙌",
      "votes": null
    },
    {
      "id": "1690922",
      "postDate": "02/15/2022 06:51:10",
      "content": "<p>thanks for your contribution to kaggle  community.</p>",
      "rawMarkdown": "thanks for your contribution to kaggle  community.",
      "votes": null
    },
    {
      "id": "1690944",
      "postDate": "02/15/2022 07:01:26",
      "content": "<p>I do not know what to say :) Thank you! It was really coooool time for me to be with you and share/talk … read your discussions … great time! </p>",
      "rawMarkdown": "I do not know what to say :) Thank you! It was really coooool time for me to be with you and share/talk ... read your discussions ... great time!",
      "votes": null
    },
    {
      "id": "1690951",
      "postDate": "02/15/2022 07:05:56",
      "content": "<p><a href=\"https://www.kaggle.com/alexchwong\" target=\"_blank\">@alexchwong</a> you are really great competition player. I remember day when you jump to the TOP. you were behind our team and … the next day you were on the TOP. As always … question came to my mind - what he did? 😄😄😄 </p>\n<p>Alex if you want we can team up in next competition. I will try to describe our way of collaborating in this competition as well. </p>\n<p>Congratulations! #15 is …. absolutely outstanding result.</p>",
      "rawMarkdown": "alexchwong you are really great competition player. I remember day when you jump to the TOP. you were behind our team and ... the next day you were on the TOP. As always ... question came to my mind - what he did? 😄😄😄 \n\nAlex if you want we can team up in next competition. I will try to describe our way of collaborating in this competition as well. \n\nCongratulations! #15 is .... absolutely outstanding result.",
      "votes": null
    },
    {
      "id": "1690958",
      "postDate": "02/15/2022 07:08:21",
      "content": "<p>You are welcome <a href=\"https://www.kaggle.com/dragonzhang\" target=\"_blank\">@dragonzhang</a>! I am sure you are much farther in their experience than before this competition. I've seen you work hard for your success and I'm impressed. Great job! I feel that I progress a lot … not only when we talk about CV but …. about Kaggle competition (this is art as well). </p>",
      "rawMarkdown": "You are welcome @dragonzhang! I am sure you are much farther in their experience than before this competition. I've seen you work hard for your success and I'm impressed. Great job! I feel that I progress a lot ... not only when we talk about CV but .... about Kaggle competition (this is art as well).",
      "votes": null
    },
    {
      "id": "1690972",
      "postDate": "02/15/2022 07:11:35",
      "content": "<p><a href=\"https://www.kaggle.com/awsaf49\" target=\"_blank\">@awsaf49</a> Luck my friend! 😄😄😄</p>\n<p>Key components of our solution:</p>\n<ul>\n<li>good two models (yolov5) </li>\n<li>WBF instead of yolo5 NMS and set high IOU (let WBF to collect the puzzle)  </li>\n</ul>",
      "rawMarkdown": "awsaf49 Luck my friend! 😄😄😄\n\nKey components of our solution:\n- good two models (yolov5) \n- WBF instead of yolo5 NMS and set high IOU (let WBF to collect the puzzle)",
      "votes": null
    },
    {
      "id": "1690978",
      "postDate": "02/15/2022 07:14:30",
      "content": "<p>Unfortunately not much …. not much <a href=\"https://www.kaggle.com/truonghuymai\" target=\"_blank\">@truonghuymai</a>. I fixed many starfish in dataset but …. it appeared that we got … worse result - why? Because yolov5 started to compute bbox coordinates in my way of annotating … which was wrong way in my opinion (since f2 base on boxes IOU). </p>",
      "rawMarkdown": "Unfortunately not much .... not much @truonghuymai. I fixed many starfish in dataset but .... it appeared that we got ... worse result - why? Because yolov5 started to compute bbox coordinates in my way of annotating ... which was wrong way in my opinion (since f2 base on boxes IOU).",
      "votes": null
    },
    {
      "id": "1690988",
      "postDate": "02/15/2022 07:19:00",
      "content": "<p>Congratulations, <a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a></p>",
      "rawMarkdown": "Congratulations, @remekkinas",
      "votes": null
    },
    {
      "id": "1691025",
      "postDate": "02/15/2022 07:36:10",
      "content": "<p>Congratulations</p>",
      "rawMarkdown": "Congratulations",
      "votes": null
    },
    {
      "id": "1691042",
      "postDate": "02/15/2022 07:47:06",
      "content": "<p>Thanks for sharing your knowledge.</p>",
      "rawMarkdown": "Thanks for sharing your knowledge.",
      "votes": null
    },
    {
      "id": "1691143",
      "postDate": "02/15/2022 08:54:36",
      "content": "<p>Long list, by the way, would be cool to add how much each point adds to the model (e.g +0.001 or -0.001)! Congratulations, <a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a>, on the first competition medal! Didn't even doubt it! </p>",
      "rawMarkdown": "Long list, by the way, would be cool to add how much each point adds to the model (e.g +0.001 or -0.001)! Congratulations, @remekkinas, on the first competition medal! Didn't even doubt it!",
      "votes": null
    },
    {
      "id": "1691144",
      "postDate": "02/15/2022 08:56:55",
      "content": "<p>I think initially you were using YOLOX but you had a pretty good score until sheep reveal the High-Resolution trick …</p>",
      "rawMarkdown": "I think initially you were using YOLOX but you had a pretty good score until sheep reveal the High-Resolution trick ...",
      "votes": null
    },
    {
      "id": "1691156",
      "postDate": "02/15/2022 09:03:00",
      "content": "<p>We have discovered it before sheep made it public. We used YoloX till we found in December (our big jump and 15 days on TOP#1) that yolov5 and higher resolution (2400) works better for public LB. But we had no … resources to check higher resolution. Our December jump was connected with TTA made on 2400 (as a baseline) and … TTA with upscale (we change code in Yolov4 - forward method).</p>\n<p>Simultaniesly we check YoloX but … it required more resources … and decided to stop this path. I personally think that if we have more GPUs we can improve score using YoloX. I can see (in our submission scores) benefits from joining YoloX and Yolov5 (WBF experiments YoloX and Yolo5 - we have quite good priv scores).</p>\n<p>I am still not sure if super high resolution works better - I thnink that it overfiit but waiting on sheep and TOP#10 solution description. As I can see now many people complain about high resolution inference. </p>",
      "rawMarkdown": "We have discovered it before sheep made it public. We used YoloX till we found in December (our big jump and 15 days on TOP#1) that yolov5 and higher resolution (2400) works better for public LB. But we had no ... resources to check higher resolution. Our December jump was connected with TTA made on 2400 (as a baseline) and ... TTA with upscale (we change code in Yolov4 - forward method).\n\nSimultaniesly we check YoloX but ... it required more resources ... and decided to stop this path. I personally think that if we have more GPUs we can improve score using YoloX. I can see (in our submission scores) benefits from joining YoloX and Yolov5 (WBF experiments YoloX and Yolo5 - we have quite good priv scores).\n\nI am still not sure if super high resolution works better - I thnink that it overfiit but waiting on sheep and TOP#10 solution description. As I can see now many people complain about high resolution inference.",
      "votes": null
    },
    {
      "id": "1691163",
      "postDate": "02/15/2022 09:07:32",
      "content": "<p>Thank you so much! Yes it is my first serious competition. I have learned a lot. </p>",
      "rawMarkdown": "Thank you so much! Yes it is my first serious competition. I have learned a lot.",
      "votes": null
    },
    {
      "id": "1691350",
      "postDate": "02/15/2022 11:14:44",
      "content": "<p>Thanks <a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a> :)</p>",
      "rawMarkdown": "Thanks @remekkinas :)",
      "votes": null
    },
    {
      "id": "1691357",
      "postDate": "02/15/2022 11:21:21",
      "content": "<p>And …. to be honest you were our inspiration …. why? In December you asked me question …. do you remeber? </p>\n<blockquote>\n  <p><a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a> hi, it seems that your train &amp; infer notebook uses different img-sizes. Could you please tell me what image sizes did you use to get the ckpt of this notebook? </p>\n</blockquote>\n<p>And I decided check resizing :) and … it started work … first jump and then like snow ball :)</p>",
      "rawMarkdown": "And .... to be honest you were our inspiration .... why? In December you asked me question .... do you remeber? \n\n> @remekkinas hi, it seems that your train & infer notebook uses different img-sizes. Could you please tell me what image sizes did you use to get the ckpt of this notebook? \n\nAnd I decided check resizing :) and ... it started work ... first jump and then like snow ball :)",
      "votes": null
    },
    {
      "id": "1691710",
      "postDate": "02/15/2022 15:06:56",
      "content": "<p>Great and exhaustive list to keep as a checklist for future competitions. Great job!</p>",
      "rawMarkdown": "Great and exhaustive list to keep as a checklist for future competitions. Great job!",
      "votes": null
    },
    {
      "id": "1692812",
      "postDate": "02/16/2022 08:53:20",
      "content": "<p>Thanks for sharing, I would like to ask you how you modify the unlabeled and incorrect images in the training images？Is it through some tool?</p>",
      "rawMarkdown": "Thanks for sharing, I would like to ask you how you modify the unlabeled and incorrect images in the training images？Is it through some tool?",
      "votes": null
    },
    {
      "id": "1695000",
      "postDate": "02/17/2022 22:05:42",
      "content": "<p><code>Relabeled dataset – we fixed non labeled starfish instances (using labelImg) and found new one in unannotated data. We created a new dataset.</code></p>\n<p>Can I ask if this improved cv/private lb score?</p>",
      "rawMarkdown": "`Relabeled dataset – we fixed non labeled starfish instances (using labelImg) and found new one in unannotated data. We created a new dataset.`\n\nCan I ask if this improved cv/private lb score?",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 1689868,
      "author_name": "liminchen1",
      "author_url": "",
      "post_date": "02/14/2022 15:05:34",
      "content": "<p>Wow, so much work. I'm really curious if GAN helped or not. Of course, you shouldn't answer now. Better to wait a few hours til results are published. </p>",
      "votes": null,
      "replies": [
        {
          "id": 1689897,
          "author_name": "remekkinas",
          "author_url": "",
          "post_date": "02/14/2022 15:15:59",
          "content": "<p>Yes, we describe our solution after competition finish. I am sure people have better final result than we have … but I wanted to share areas we touched during competition - maybe it will be inspiration for future competition. </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1689883,
      "author_name": "marcinstasko",
      "author_url": "",
      "post_date": "02/14/2022 15:11:18",
      "content": "<p>If you are interested in GAN related notebooks listed in <a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a> post</p>\n<p><a href=\"https://www.kaggle.com/marcinstasko/gan-training-make-unlimited-cots\" target=\"_blank\">Gan Training</a><br>\n<a href=\"https://www.kaggle.com/marcinstasko/unlimited-cots-generator-pytorch-gan-in-action\" target=\"_blank\">Gan Generating</a><br>\n<a href=\"https://www.kaggle.com/marcinstasko/cots-neuralstyle-transfer-pytorch-augumentation\" target=\"_blank\">Neural Style Transfer</a></p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1689888,
      "author_name": "qixiyu",
      "author_url": "",
      "post_date": "02/14/2022 15:12:06",
      "content": "<p>I don't think it is the right time to share this.👀</p>",
      "votes": null,
      "replies": [
        {
          "id": 1689901,
          "author_name": "remekkinas",
          "author_url": "",
          "post_date": "02/14/2022 15:17:00",
          "content": "<p>Why? There are no solutions. We shared areas we check during competition. There is no answer what works or not … </p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1689905,
          "author_name": "qixiyu",
          "author_url": "",
          "post_date": "02/14/2022 15:20:36",
          "content": "<p>A little early before the deadline, and make anyone who sees this feel powerless.🙈🙉🙊</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1689914,
          "author_name": "remekkinas",
          "author_url": "",
          "post_date": "02/14/2022 15:25:06",
          "content": "<p>Aaaa … ok. Sorry :) 😍😃</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1689929,
      "author_name": "deepkim",
      "author_url": "",
      "post_date": "02/14/2022 15:35:31",
      "content": "<p>I express my awe to you for making so many efforts.<br>\nGood luck!</p>",
      "votes": null,
      "replies": [
        {
          "id": 1689955,
          "author_name": "remekkinas",
          "author_url": "",
          "post_date": "02/14/2022 15:53:23",
          "content": "<p>Good luck for you as well <a href=\"https://www.kaggle.com/deepkim\" target=\"_blank\">@deepkim</a>! 👍👍👍 </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1690203,
      "author_name": "mrinath",
      "author_url": "",
      "post_date": "02/14/2022 19:25:24",
      "content": "<p>You were the MVP of the competition!<br>\nall the best for the private LB</p>",
      "votes": null,
      "replies": [
        {
          "id": 1690265,
          "author_name": "remekkinas",
          "author_url": "",
          "post_date": "02/14/2022 20:27:14",
          "content": "<p>Thank you! 🙏🙏🙏</p>\n<p>For sure … we can fight for LB positions and share …. and have a lot fun with progressing. Kaggle is great place for learning. It is great place to talk and share experiences with person who loves solving problems using ML. I have larned a lot from many of you in this competition - I am really grateful ❤️❤️❤️ </p>\n<p>It is a pity that some people, instead of giving constructive feedback (I am open on feedback), can only give negative points by staying hidden. Embarrassing but well … there are always people like this who  spoil a place like Kaggle. But to be positive …. absolutely outstanding competition and people who really work hard to push the LB limits. I am really impressed and waiting for solution description. For me you are masters of competition. 👍👍👍 </p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1690659,
          "author_name": "nyleve",
          "author_url": "",
          "post_date": "02/15/2022 03:45:29",
          "content": "<p><a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a> we need more people like you here, your positive energy is contagious :D  <br>\nCongratulations on your great experiment ! </p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1690944,
          "author_name": "remekkinas",
          "author_url": "",
          "post_date": "02/15/2022 07:01:26",
          "content": "<p>I do not know what to say :) Thank you! It was really coooool time for me to be with you and share/talk … read your discussions … great time! </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1690300,
      "author_name": "alexchwong",
      "author_url": "",
      "post_date": "02/14/2022 20:56:19",
      "content": "<p><a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a> Great post. Can't wait to hear your solution. I can't wait to share mine too (but as a separate notebook perhaps). But definitely agree with the others that your starter notebooks were invaluable to everybody in this competition.</p>\n<p>What I'm keen to hear is how you (and others) have found their teams and whether people found it better (or worse) as a team? This is my first competition so I stuck to myself as a team of one (having no rep and also no desire to share the $$$ if any is coming), but would be keen to join other top guns in future competitions.</p>",
      "votes": null,
      "replies": [
        {
          "id": 1690951,
          "author_name": "remekkinas",
          "author_url": "",
          "post_date": "02/15/2022 07:05:56",
          "content": "<p><a href=\"https://www.kaggle.com/alexchwong\" target=\"_blank\">@alexchwong</a> you are really great competition player. I remember day when you jump to the TOP. you were behind our team and … the next day you were on the TOP. As always … question came to my mind - what he did? 😄😄😄 </p>\n<p>Alex if you want we can team up in next competition. I will try to describe our way of collaborating in this competition as well. </p>\n<p>Congratulations! #15 is …. absolutely outstanding result.</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1690363,
      "author_name": "truonghuymai",
      "author_url": "",
      "post_date": "02/14/2022 22:23:56",
      "content": "<p>just wondering how much LB did you gain after fixing the dataset , mine jump significantly  after fixing like 40-50 frames, didn't have much time to do the rest since I discover it late. </p>",
      "votes": null,
      "replies": [
        {
          "id": 1690978,
          "author_name": "remekkinas",
          "author_url": "",
          "post_date": "02/15/2022 07:14:30",
          "content": "<p>Unfortunately not much …. not much <a href=\"https://www.kaggle.com/truonghuymai\" target=\"_blank\">@truonghuymai</a>. I fixed many starfish in dataset but …. it appeared that we got … worse result - why? Because yolov5 started to compute bbox coordinates in my way of annotating … which was wrong way in my opinion (since f2 base on boxes IOU). </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1690626,
      "author_name": "awsaf49",
      "author_url": "",
      "post_date": "02/15/2022 03:18:48",
      "content": "<p>Congratulations, <a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a> initially you had a great boost, what was the magic?</p>",
      "votes": null,
      "replies": [
        {
          "id": 1690972,
          "author_name": "remekkinas",
          "author_url": "",
          "post_date": "02/15/2022 07:11:35",
          "content": "<p><a href=\"https://www.kaggle.com/awsaf49\" target=\"_blank\">@awsaf49</a> Luck my friend! 😄😄😄</p>\n<p>Key components of our solution:</p>\n<ul>\n<li>good two models (yolov5) </li>\n<li>WBF instead of yolo5 NMS and set high IOU (let WBF to collect the puzzle)  </li>\n</ul>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1691144,
          "author_name": "awsaf49",
          "author_url": "",
          "post_date": "02/15/2022 08:56:55",
          "content": "<p>I think initially you were using YOLOX but you had a pretty good score until sheep reveal the High-Resolution trick …</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1691156,
          "author_name": "remekkinas",
          "author_url": "",
          "post_date": "02/15/2022 09:03:00",
          "content": "<p>We have discovered it before sheep made it public. We used YoloX till we found in December (our big jump and 15 days on TOP#1) that yolov5 and higher resolution (2400) works better for public LB. But we had no … resources to check higher resolution. Our December jump was connected with TTA made on 2400 (as a baseline) and … TTA with upscale (we change code in Yolov4 - forward method).</p>\n<p>Simultaniesly we check YoloX but … it required more resources … and decided to stop this path. I personally think that if we have more GPUs we can improve score using YoloX. I can see (in our submission scores) benefits from joining YoloX and Yolov5 (WBF experiments YoloX and Yolo5 - we have quite good priv scores).</p>\n<p>I am still not sure if super high resolution works better - I thnink that it overfiit but waiting on sheep and TOP#10 solution description. As I can see now many people complain about high resolution inference. </p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1691350,
          "author_name": "awsaf49",
          "author_url": "",
          "post_date": "02/15/2022 11:14:44",
          "content": "<p>Thanks <a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a> :)</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1691357,
          "author_name": "remekkinas",
          "author_url": "",
          "post_date": "02/15/2022 11:21:21",
          "content": "<p>And …. to be honest you were our inspiration …. why? In December you asked me question …. do you remeber? </p>\n<blockquote>\n  <p><a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a> hi, it seems that your train &amp; infer notebook uses different img-sizes. Could you please tell me what image sizes did you use to get the ckpt of this notebook? </p>\n</blockquote>\n<p>And I decided check resizing :) and … it started work … first jump and then like snow ball :)</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1690692,
      "author_name": "niekvanderzwaag",
      "author_url": "",
      "post_date": "02/15/2022 04:07:40",
      "content": "<p>Admirable commitment, thanks for sharing 🙌</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1690922,
      "author_name": "dragonzhang",
      "author_url": "",
      "post_date": "02/15/2022 06:51:10",
      "content": "<p>thanks for your contribution to kaggle  community.</p>",
      "votes": null,
      "replies": [
        {
          "id": 1690958,
          "author_name": "remekkinas",
          "author_url": "",
          "post_date": "02/15/2022 07:08:21",
          "content": "<p>You are welcome <a href=\"https://www.kaggle.com/dragonzhang\" target=\"_blank\">@dragonzhang</a>! I am sure you are much farther in their experience than before this competition. I've seen you work hard for your success and I'm impressed. Great job! I feel that I progress a lot … not only when we talk about CV but …. about Kaggle competition (this is art as well). </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1690988,
      "author_name": "noonamed",
      "author_url": "",
      "post_date": "02/15/2022 07:19:00",
      "content": "<p>Congratulations, <a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a></p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1691025,
      "author_name": "chenzhengren",
      "author_url": "",
      "post_date": "02/15/2022 07:36:10",
      "content": "<p>Congratulations</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1691042,
      "author_name": "yongjaeyou",
      "author_url": "",
      "post_date": "02/15/2022 07:47:06",
      "content": "<p>Thanks for sharing your knowledge.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1691143,
      "author_name": "vad13irt",
      "author_url": "",
      "post_date": "02/15/2022 08:54:36",
      "content": "<p>Long list, by the way, would be cool to add how much each point adds to the model (e.g +0.001 or -0.001)! Congratulations, <a href=\"https://www.kaggle.com/remekkinas\" target=\"_blank\">@remekkinas</a>, on the first competition medal! Didn't even doubt it! </p>",
      "votes": null,
      "replies": [
        {
          "id": 1691163,
          "author_name": "remekkinas",
          "author_url": "",
          "post_date": "02/15/2022 09:07:32",
          "content": "<p>Thank you so much! Yes it is my first serious competition. I have learned a lot. </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1691710,
      "author_name": "austinpowers",
      "author_url": "",
      "post_date": "02/15/2022 15:06:56",
      "content": "<p>Great and exhaustive list to keep as a checklist for future competitions. Great job!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1692812,
      "author_name": "yzdeeplearning",
      "author_url": "",
      "post_date": "02/16/2022 08:53:20",
      "content": "<p>Thanks for sharing, I would like to ask you how you modify the unlabeled and incorrect images in the training images？Is it through some tool?</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1695000,
      "author_name": "kennyxie",
      "author_url": "",
      "post_date": "02/17/2022 22:05:42",
      "content": "<p><code>Relabeled dataset – we fixed non labeled starfish instances (using labelImg) and found new one in unannotated data. We created a new dataset.</code></p>\n<p>Can I ask if this improved cv/private lb score?</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1689752": "**First of all I would like to thank you everybody for this great competition and opportunity to learn a lot new things. Thank you!** 🙏\n\nThis is a description of the things we tried during this 3 month competition. We made over 370 submissions and a lot of different experiments. Since the competition is not over yet, we will not describe what was crucial to achieve the current result, but we will only describe the experiments that we conducted during these 3 months.\n\nDuring this competition we managed to contribute a lot publishing many notebooks and actively participating in discussions. Our public notebooks:\n* 5 gold notebooks (YoloX training and inference, YoloR training and inference, SAHI prediction)\n* 3 silver notebooks (GAN Training, GAN generator, Neural Style Transfer)\n \nBelow you will find the things that we tested during this competition and achieve max 0.710 public leaderboard score. Certainly we will describe our final solution as well (what worked for us and what not).\n\nTraining environments:\n* Colab then me moved to Colab Pro+ and Google Drive (200GB)\n* Notebook Dell Allienware R7 - RTX3080\n\nAugmentations:\n* Increased image size (to max 2400 but tried higher resolution as well) - hard resizing (all images were resized in dataset) and soft resizing (resizing during training image size)\n* Increased image size with SuperResolution (Open CV model - FSRCNN)\n* Tailed (part of the images) training. Two approaches a. based on tiled images only and b. mixed (tiled and original images).\n* CLAHE, HSV, Affine, Blur, RandomBrightnessContrast, Noise, ImageCompression, Rotate (+/- 30), Random Crop, Mixup, Mosaic.\n* Modified CLAHE, RandomSizedBBoxSafeCrop in albumentations library.\n\nData:\n* We were looking for an external dataset - not found.         \n* Relabeled dataset – we fixed non labeled starfish instances (using labelImg) and found new one in unannotated data. We created a new dataset.\n* Starfish crop – we cropped starfish bbox’es (with small margin) and created additional dataset using unannotated images (we just merged augumented starfishes with images).\n* GAN synthetic dataset (generated new instances of starfish and merged with unannotated images) \n* Resampled dataset - we took every second and every third images to avoid many duplicates in the dataset.\n\nCross validation:\n* CV10 based on video subsequences \n* CV5 based on video subsequences\n* Video and sequence split.\n\nModels:\n* YoloX – notebook published -> model from nano to X (YoloX to perform better needs more GPU memory)\n* YoloR - published notebook\n* Yolov5 - own implementations + custom changes to Yolov5 sources (mainly in yolo model).\n* FasterRCNN (Pytorch implementation) \n\nChanges to framework:\n* Yolox - implemented a Albumentations pipeline into YoloX dataloader class.\n* Yolov5 – implementation of f2 metrics and logging functions. \n* Yolov5 - custom multiscale implementation\n\nModel performance checking:\n* 3 different implementations of f2 metric\n* Model inference debugger – we count parts of f2 score (TP/TN/FP) and plot them to see model prediction distribution to optimize inference parameters (IOU/CONF).\n* Model inference visualizer – we generated videos for each training to see predictions and problems on validation dataset.\n* f2 metric validation in yolov5 during training and fitness functions chenages (to choose best model based on f2 metric)\n* hyperparameter search function - to choose best CONF and IOU thresholds.\n\nTraining:\n* Progressive Resizing – 960 image size training and then retraining on 1920 (changing training LR and momentum parameters)\n* Training only on annotated data\n* Training on mixed data (with background images) - 1-3% unannotated data (background) as additional data in training (to decrease number of FP).\n* Retraining model with background images (from unannotated data) where our model detects FP (to clean up FP - stones, fish, image edges etc.).\n* Retrain model on whole dataset.\n* Label smoothing.\n* Adam vs SGD.\n* LR an Momentum and weight decay hyperparameter searching.\n* Yolov5 - BiFPN head training as an extra step.\n* Higher resolution training - but due to GPU limitation we manage to train images with 2400 resolutions only.\n* own multiscale implementation in yolov5\n\nInference:\n* TTA – implemented in yolo5 (changed by our team to resize not downsize image during the inference) and custom script (inference part).\n* SAHI -  Slicing Aided Hyper Inference\n* Object tracking – nofair, ByteTrack, DeepSort\n* WBF - only yolo5 models and yolo5/yolox mixture\n* WBFT (WBF with threshold our new proposed change to WBF - filter final prediction below treshold)\n* Other preprocessing - bbox’s clean up based on bbox size ratio\n\nAdditional (as a fun part):\n* Yolov5 activations maps and grad-CAM\n* a lots of brainstorm with real thunders - we had a lot of hard talks and times where we argued over which solution was better.",
    "1689868": "Wow, so much work. I'm really curious if GAN helped or not. Of course, you shouldn't answer now. Better to wait a few hours til results are published.",
    "1689883": "If you are interested in GAN related notebooks listed in @remekkinas post\n\n[Gan Training](https://www.kaggle.com/marcinstasko/gan-training-make-unlimited-cots)\n[Gan Generating](https://www.kaggle.com/marcinstasko/unlimited-cots-generator-pytorch-gan-in-action)\n[Neural Style Transfer](https://www.kaggle.com/marcinstasko/cots-neuralstyle-transfer-pytorch-augumentation)",
    "1689888": "I don't think it is the right time to share this.👀",
    "1689897": "Yes, we describe our solution after competition finish. I am sure people have better final result than we have ... but I wanted to share areas we touched during competition - maybe it will be inspiration for future competition.",
    "1689901": "Why? There are no solutions. We shared areas we check during competition. There is no answer what works or not ...",
    "1689905": "A little early before the deadline, and make anyone who sees this feel powerless.🙈🙉🙊",
    "1689914": "Aaaa ... ok. Sorry :) 😍😃",
    "1689929": "I express my awe to you for making so many efforts.\nGood luck!",
    "1689955": "Good luck for you as well @deepkim! 👍👍👍",
    "1690203": "You were the MVP of the competition!\nall the best for the private LB",
    "1690265": "Thank you! 🙏🙏🙏\n\nFor sure ... we can fight for LB positions and share .... and have a lot fun with progressing. Kaggle is great place for learning. It is great place to talk and share experiences with person who loves solving problems using ML. I have larned a lot from many of you in this competition - I am really grateful ❤️❤️❤️ \n\nIt is a pity that some people, instead of giving constructive feedback (I am open on feedback), can only give negative points by staying hidden. Embarrassing but well ... there are always people like this who  spoil a place like Kaggle. But to be positive .... absolutely outstanding competition and people who really work hard to push the LB limits. I am really impressed and waiting for solution description. For me you are masters of competition. 👍👍👍",
    "1690300": "remekkinas Great post. Can't wait to hear your solution. I can't wait to share mine too (but as a separate notebook perhaps). But definitely agree with the others that your starter notebooks were invaluable to everybody in this competition.\n\nWhat I'm keen to hear is how you (and others) have found their teams and whether people found it better (or worse) as a team? This is my first competition so I stuck to myself as a team of one (having no rep and also no desire to share the $$$ if any is coming), but would be keen to join other top guns in future competitions.",
    "1690363": "just wondering how much LB did you gain after fixing the dataset , mine jump significantly  after fixing like 40-50 frames, didn't have much time to do the rest since I discover it late.",
    "1690626": "Congratulations, @remekkinas initially you had a great boost, what was the magic?",
    "1690659": "remekkinas we need more people like you here, your positive energy is contagious :D  \nCongratulations on your great experiment !",
    "1690692": "Admirable commitment, thanks for sharing 🙌",
    "1690922": "thanks for your contribution to kaggle  community.",
    "1690944": "I do not know what to say :) Thank you! It was really coooool time for me to be with you and share/talk ... read your discussions ... great time!",
    "1690951": "alexchwong you are really great competition player. I remember day when you jump to the TOP. you were behind our team and ... the next day you were on the TOP. As always ... question came to my mind - what he did? 😄😄😄 \n\nAlex if you want we can team up in next competition. I will try to describe our way of collaborating in this competition as well. \n\nCongratulations! #15 is .... absolutely outstanding result.",
    "1690958": "You are welcome @dragonzhang! I am sure you are much farther in their experience than before this competition. I've seen you work hard for your success and I'm impressed. Great job! I feel that I progress a lot ... not only when we talk about CV but .... about Kaggle competition (this is art as well).",
    "1690972": "awsaf49 Luck my friend! 😄😄😄\n\nKey components of our solution:\n- good two models (yolov5) \n- WBF instead of yolo5 NMS and set high IOU (let WBF to collect the puzzle)",
    "1690978": "Unfortunately not much .... not much @truonghuymai. I fixed many starfish in dataset but .... it appeared that we got ... worse result - why? Because yolov5 started to compute bbox coordinates in my way of annotating ... which was wrong way in my opinion (since f2 base on boxes IOU).",
    "1690988": "Congratulations, @remekkinas",
    "1691025": "Congratulations",
    "1691042": "Thanks for sharing your knowledge.",
    "1691143": "Long list, by the way, would be cool to add how much each point adds to the model (e.g +0.001 or -0.001)! Congratulations, @remekkinas, on the first competition medal! Didn't even doubt it!",
    "1691144": "I think initially you were using YOLOX but you had a pretty good score until sheep reveal the High-Resolution trick ...",
    "1691156": "We have discovered it before sheep made it public. We used YoloX till we found in December (our big jump and 15 days on TOP#1) that yolov5 and higher resolution (2400) works better for public LB. But we had no ... resources to check higher resolution. Our December jump was connected with TTA made on 2400 (as a baseline) and ... TTA with upscale (we change code in Yolov4 - forward method).\n\nSimultaniesly we check YoloX but ... it required more resources ... and decided to stop this path. I personally think that if we have more GPUs we can improve score using YoloX. I can see (in our submission scores) benefits from joining YoloX and Yolov5 (WBF experiments YoloX and Yolo5 - we have quite good priv scores).\n\nI am still not sure if super high resolution works better - I thnink that it overfiit but waiting on sheep and TOP#10 solution description. As I can see now many people complain about high resolution inference.",
    "1691163": "Thank you so much! Yes it is my first serious competition. I have learned a lot.",
    "1691350": "Thanks @remekkinas :)",
    "1691357": "And .... to be honest you were our inspiration .... why? In December you asked me question .... do you remeber? \n\n> @remekkinas hi, it seems that your train & infer notebook uses different img-sizes. Could you please tell me what image sizes did you use to get the ckpt of this notebook? \n\nAnd I decided check resizing :) and ... it started work ... first jump and then like snow ball :)",
    "1691710": "Great and exhaustive list to keep as a checklist for future competitions. Great job!",
    "1692812": "Thanks for sharing, I would like to ask you how you modify the unlabeled and incorrect images in the training images？Is it through some tool?",
    "1695000": "`Relabeled dataset – we fixed non labeled starfish instances (using labelImg) and found new one in unannotated data. We created a new dataset.`\n\nCan I ask if this improved cv/private lb score?"
  },
  "source": "meta"
}