{
  "id": 175979,
  "title": "[34th Place Solution using single EfficientDet + Pseudo Labeling]",
  "url": "/competitions/global-wheat-detection/writeups/34th-place-solution-using-single-efficientdet-pseu",
  "author_name": "",
  "post_date": "2020-10-04T09:02:40.210Z",
  "votes": 15,
  "comment_count": 10,
  "views": 0,
  "content": "<p>First of all Congratulation to all, especially to the prize winner and gold medalists and thanks to the organizers for this interesting competition!</p>\n<p>So here is our solution to this competition (Very very basic):</p>\n<h2>Training</h2>\n<ul>\n<li>Single EfficientDetD5 (Thanks to <a href=\"https://www.kaggle.com/shonenkov\" target=\"_blank\">@shonenkov</a> for his great notebook)</li>\n<li>40 epochs using full dataset (No CV)</li>\n<li>Image size: 512 * 512</li>\n<li>Augmentations: Random Crop, Random Cutout, Hue Saturation Value, Brightness Random Brightness Contrast, Random Horizontal and Vertical flips and random Cutmix.</li>\n<li>Training notebook: <a href=\"https://www.kaggle.com/kaushal2896/gwd-efficientdet-training-on-entire-dataset\" target=\"_blank\">https://www.kaggle.com/kaushal2896/gwd-efficientdet-training-on-entire-dataset</a></li>\n</ul>\n<h2>Pseudo Labeling</h2>\n<ul>\n<li>Pseudo labeled the above model with 10 epochs (Thanks to <a href=\"https://www.kaggle.com/nvnnghia\" target=\"_blank\">@nvnnghia</a> for his work)</li>\n<li>Used the same augmentations even while pseudo labeling: Random Crop, Random Cutout, Hue Saturation Value, Brightness Random Brightness Contrast, Random Horizontal and Vertical flips and random Cutmix.</li>\n<li>Same image size: 512 * 512.</li>\n<li>Used both TTA and WBF for final predictions.</li>\n<li>Pseudo Labeling notebook: <a href=\"https://www.kaggle.com/kaushal2896/efficientdet-pseudo-labeling-wbf-tta\" target=\"_blank\">https://www.kaggle.com/kaushal2896/efficientdet-pseudo-labeling-wbf-tta</a></li>\n</ul>\n<h2>What didn't work for us?</h2>\n<ul>\n<li>Custom augmentations like mixup.</li>\n<li>Training on larger image sizes without Random crop augmentation.</li>\n<li>Same solution with EfficientDetD6.</li>\n<li>Training on higher number of epochs.</li>\n<li>FasterRCNN with ResNet51 and ResNet101.</li>\n</ul>\n<p>Here are different approaches I've tried during this competition: <a href=\"https://github.com/Kaushal28/Global-Wheat-Detection\" target=\"_blank\">https://github.com/Kaushal28/Global-Wheat-Detection</a></p>",
  "messages": [
    {
      "id": "978258",
      "postDate": "08/20/2020 04:05:32",
      "content": "<p>First of all Congratulation to all, especially to the prize winner and gold medalists and thanks to the organizers for this interesting competition!</p>\n<p>So here is our solution to this competition (Very very basic):</p>\n<h2>Training</h2>\n<ul>\n<li>Single EfficientDetD5 (Thanks to <a href=\"https://www.kaggle.com/shonenkov\" target=\"_blank\">@shonenkov</a> for his great notebook)</li>\n<li>40 epochs using full dataset (No CV)</li>\n<li>Image size: 512 * 512</li>\n<li>Augmentations: Random Crop, Random Cutout, Hue Saturation Value, Brightness Random Brightness Contrast, Random Horizontal and Vertical flips and random Cutmix.</li>\n<li>Training notebook: <a href=\"https://www.kaggle.com/kaushal2896/gwd-efficientdet-training-on-entire-dataset\" target=\"_blank\">https://www.kaggle.com/kaushal2896/gwd-efficientdet-training-on-entire-dataset</a></li>\n</ul>\n<h2>Pseudo Labeling</h2>\n<ul>\n<li>Pseudo labeled the above model with 10 epochs (Thanks to <a href=\"https://www.kaggle.com/nvnnghia\" target=\"_blank\">@nvnnghia</a> for his work)</li>\n<li>Used the same augmentations even while pseudo labeling: Random Crop, Random Cutout, Hue Saturation Value, Brightness Random Brightness Contrast, Random Horizontal and Vertical flips and random Cutmix.</li>\n<li>Same image size: 512 * 512.</li>\n<li>Used both TTA and WBF for final predictions.</li>\n<li>Pseudo Labeling notebook: <a href=\"https://www.kaggle.com/kaushal2896/efficientdet-pseudo-labeling-wbf-tta\" target=\"_blank\">https://www.kaggle.com/kaushal2896/efficientdet-pseudo-labeling-wbf-tta</a></li>\n</ul>\n<h2>What didn't work for us?</h2>\n<ul>\n<li>Custom augmentations like mixup.</li>\n<li>Training on larger image sizes without Random crop augmentation.</li>\n<li>Same solution with EfficientDetD6.</li>\n<li>Training on higher number of epochs.</li>\n<li>FasterRCNN with ResNet51 and ResNet101.</li>\n</ul>\n<p>Here are different approaches I've tried during this competition: <a href=\"https://github.com/Kaushal28/Global-Wheat-Detection\" target=\"_blank\">https://github.com/Kaushal28/Global-Wheat-Detection</a></p>",
      "rawMarkdown": "First of all Congratulation to all, especially to the prize winner and gold medalists and thanks to the organizers for this interesting competition!\n\nSo here is our solution to this competition (Very very basic):\n\n## Training\n\n- Single EfficientDetD5 (Thanks to @shonenkov for his great notebook)\n- 40 epochs using full dataset (No CV)\n- Image size: 512 * 512\n- Augmentations: Random Crop, Random Cutout, Hue Saturation Value, Brightness Random Brightness Contrast, Random Horizontal and Vertical flips and random Cutmix.\n- Training notebook: https://www.kaggle.com/kaushal2896/gwd-efficientdet-training-on-entire-dataset\n\n## Pseudo Labeling\n\n- Pseudo labeled the above model with 10 epochs (Thanks to @nvnnghia for his work)\n- Used the same augmentations even while pseudo labeling: Random Crop, Random Cutout, Hue Saturation Value, Brightness Random Brightness Contrast, Random Horizontal and Vertical flips and random Cutmix.\n- Same image size: 512 * 512.\n- Used both TTA and WBF for final predictions.\n- Pseudo Labeling notebook: https://www.kaggle.com/kaushal2896/efficientdet-pseudo-labeling-wbf-tta\n\n## What didn't work for us?\n\n- Custom augmentations like mixup.\n- Training on larger image sizes without Random crop augmentation.\n- Same solution with EfficientDetD6.\n- Training on higher number of epochs.\n- FasterRCNN with ResNet51 and ResNet101.\n\n\nHere are different approaches I've tried during this competition: https://github.com/Kaushal28/Global-Wheat-Detection",
      "votes": null
    },
    {
      "id": "978264",
      "postDate": "08/20/2020 04:12:22",
      "content": "<p>Thanks for sharing and congrats <a href=\"https://www.kaggle.com/kaushal2896\" target=\"_blank\">@kaushal2896</a>.</p>\n<p>May I ask something your solution?</p>\n<ol>\n<li><code>Is it single model using pseudo labeling?</code></li>\n<li><code>What is main different from his great baseline?</code> <a href=\"https://www.kaggle.com/shonenkov\" target=\"_blank\">@shonenkov</a> </li>\n<li>`Did you clean dataset? (e.g. some hug or too small bboxs)</li>\n</ol>\n<p>Anyway, Congrats again!</p>",
      "rawMarkdown": "Thanks for sharing and congrats @kaushal2896.\n\nMay I ask something your solution?\n1. `Is it single model using pseudo labeling?`\n2. `What is main different from his great baseline?` @shonenkov \n3. `Did you clean dataset? (e.g. some hug or too small bboxs)\n\nAnyway, Congrats again!",
      "votes": null
    },
    {
      "id": "978273",
      "postDate": "08/20/2020 04:26:39",
      "content": "<p><a href=\"https://www.kaggle.com/piantic\" target=\"_blank\">@piantic</a> Thanks!</p>\n<p>Yes it was single model PL. The baseline was really good and I didn't change it much. I just trained on entire dataset as I wanted to use it in PL. The main change I did was in PL training though. I used same augmentations which I used in training (changing augmentations reduced my score).  And even no data cleaning! So I think model might be underfitting the training data but generalized comparatively well. P.S This was my first object detection competition and this was completely unexpected!</p>",
      "rawMarkdown": "piantic Thanks!\n\nYes it was single model PL. The baseline was really good and I didn't change it much. I just trained on entire dataset as I wanted to use it in PL. The main change I did was in PL training though. I used same augmentations which I used in training (changing augmentations reduced my score).  And even no data cleaning! So I think model might be underfitting the training data but generalized comparatively well. P.S This was my first object detection competition and this was completely unexpected!",
      "votes": null
    },
    {
      "id": "978541",
      "postDate": "08/20/2020 08:39:09",
      "content": "<p>Nice work <a href=\"https://www.kaggle.com/kaushal2896\" target=\"_blank\">@kaushal2896</a> , <br>\nThis is the first solution which I am seeing without an ensemble. Your single model did a great job and that too with 512x512 is awesome.</p>\n<p>Good luck for your future comps. </p>",
      "rawMarkdown": "Nice work @kaushal2896 , \nThis is the first solution which I am seeing without an ensemble. Your single model did a great job and that too with 512x512 is awesome.\n\nGood luck for your future comps.",
      "votes": null
    },
    {
      "id": "978867",
      "postDate": "08/20/2020 13:10:11",
      "content": "<p>Nice one !!!! Keep sharing </p>",
      "rawMarkdown": "Nice one !!!! Keep sharing",
      "votes": null
    },
    {
      "id": "979146",
      "postDate": "08/20/2020 16:50:07",
      "content": "<p>Great job. Could you please share your notebook</p>",
      "rawMarkdown": "Great job. Could you please share your notebook",
      "votes": null
    },
    {
      "id": "979393",
      "postDate": "08/20/2020 19:47:23",
      "content": "<p>Congratulations on 36th place!</p>",
      "rawMarkdown": "Congratulations on 36th place!",
      "votes": null
    },
    {
      "id": "979672",
      "postDate": "08/21/2020 03:46:35",
      "content": "<p>Sure! I've updated the description with links to public notebooks.</p>",
      "rawMarkdown": "Sure! I've updated the description with links to public notebooks.",
      "votes": null
    },
    {
      "id": "980324",
      "postDate": "08/21/2020 14:09:03",
      "content": "<p><a href=\"https://www.kaggle.com/kaushal2896\" target=\"_blank\">@kaushal2896</a> Congrats on your high placement!</p>",
      "rawMarkdown": "kaushal2896 Congrats on your high placement!",
      "votes": null
    },
    {
      "id": "980554",
      "postDate": "08/21/2020 17:21:03",
      "content": "<p><a href=\"https://www.kaggle.com/brendan45774\" target=\"_blank\">@brendan45774</a> Thanks!</p>",
      "rawMarkdown": "brendan45774 Thanks!",
      "votes": null
    },
    {
      "id": "980557",
      "postDate": "08/21/2020 17:21:15",
      "content": "<p><a href=\"https://www.kaggle.com/brandonnova\" target=\"_blank\">@brandonnova</a> Thanks!</p>",
      "rawMarkdown": "brandonnova Thanks!",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 978264,
      "author_name": "piantic",
      "author_url": "",
      "post_date": "08/20/2020 04:12:22",
      "content": "<p>Thanks for sharing and congrats <a href=\"https://www.kaggle.com/kaushal2896\" target=\"_blank\">@kaushal2896</a>.</p>\n<p>May I ask something your solution?</p>\n<ol>\n<li><code>Is it single model using pseudo labeling?</code></li>\n<li><code>What is main different from his great baseline?</code> <a href=\"https://www.kaggle.com/shonenkov\" target=\"_blank\">@shonenkov</a> </li>\n<li>`Did you clean dataset? (e.g. some hug or too small bboxs)</li>\n</ol>\n<p>Anyway, Congrats again!</p>",
      "votes": null,
      "replies": [
        {
          "id": 978273,
          "author_name": "kaushal2896",
          "author_url": "",
          "post_date": "08/20/2020 04:26:39",
          "content": "<p><a href=\"https://www.kaggle.com/piantic\" target=\"_blank\">@piantic</a> Thanks!</p>\n<p>Yes it was single model PL. The baseline was really good and I didn't change it much. I just trained on entire dataset as I wanted to use it in PL. The main change I did was in PL training though. I used same augmentations which I used in training (changing augmentations reduced my score).  And even no data cleaning! So I think model might be underfitting the training data but generalized comparatively well. P.S This was my first object detection competition and this was completely unexpected!</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 978541,
          "author_name": "nitindatta",
          "author_url": "",
          "post_date": "08/20/2020 08:39:09",
          "content": "<p>Nice work <a href=\"https://www.kaggle.com/kaushal2896\" target=\"_blank\">@kaushal2896</a> , <br>\nThis is the first solution which I am seeing without an ensemble. Your single model did a great job and that too with 512x512 is awesome.</p>\n<p>Good luck for your future comps. </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 979146,
      "author_name": "ahmmadrashid",
      "author_url": "",
      "post_date": "08/20/2020 16:50:07",
      "content": "<p>Great job. Could you please share your notebook</p>",
      "votes": null,
      "replies": [
        {
          "id": 979672,
          "author_name": "kaushal2896",
          "author_url": "",
          "post_date": "08/21/2020 03:46:35",
          "content": "<p>Sure! I've updated the description with links to public notebooks.</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 980324,
      "author_name": "brendan45774",
      "author_url": "",
      "post_date": "08/21/2020 14:09:03",
      "content": "<p><a href=\"https://www.kaggle.com/kaushal2896\" target=\"_blank\">@kaushal2896</a> Congrats on your high placement!</p>",
      "votes": null,
      "replies": [
        {
          "id": 980554,
          "author_name": "kaushal2896",
          "author_url": "",
          "post_date": "08/21/2020 17:21:03",
          "content": "<p><a href=\"https://www.kaggle.com/brendan45774\" target=\"_blank\">@brendan45774</a> Thanks!</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 978867,
      "author_name": "sudarshanpatil",
      "author_url": "",
      "post_date": "08/20/2020 13:10:11",
      "content": "<p>Nice one !!!! Keep sharing </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 979393,
      "author_name": "brandonnova",
      "author_url": "",
      "post_date": "08/20/2020 19:47:23",
      "content": "<p>Congratulations on 36th place!</p>",
      "votes": null,
      "replies": [
        {
          "id": 980557,
          "author_name": "kaushal2896",
          "author_url": "",
          "post_date": "08/21/2020 17:21:15",
          "content": "<p><a href=\"https://www.kaggle.com/brandonnova\" target=\"_blank\">@brandonnova</a> Thanks!</p>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "978258": "First of all Congratulation to all, especially to the prize winner and gold medalists and thanks to the organizers for this interesting competition!\n\nSo here is our solution to this competition (Very very basic):\n\n## Training\n\n- Single EfficientDetD5 (Thanks to @shonenkov for his great notebook)\n- 40 epochs using full dataset (No CV)\n- Image size: 512 * 512\n- Augmentations: Random Crop, Random Cutout, Hue Saturation Value, Brightness Random Brightness Contrast, Random Horizontal and Vertical flips and random Cutmix.\n- Training notebook: https://www.kaggle.com/kaushal2896/gwd-efficientdet-training-on-entire-dataset\n\n## Pseudo Labeling\n\n- Pseudo labeled the above model with 10 epochs (Thanks to @nvnnghia for his work)\n- Used the same augmentations even while pseudo labeling: Random Crop, Random Cutout, Hue Saturation Value, Brightness Random Brightness Contrast, Random Horizontal and Vertical flips and random Cutmix.\n- Same image size: 512 * 512.\n- Used both TTA and WBF for final predictions.\n- Pseudo Labeling notebook: https://www.kaggle.com/kaushal2896/efficientdet-pseudo-labeling-wbf-tta\n\n## What didn't work for us?\n\n- Custom augmentations like mixup.\n- Training on larger image sizes without Random crop augmentation.\n- Same solution with EfficientDetD6.\n- Training on higher number of epochs.\n- FasterRCNN with ResNet51 and ResNet101.\n\n\nHere are different approaches I've tried during this competition: https://github.com/Kaushal28/Global-Wheat-Detection",
    "978264": "Thanks for sharing and congrats @kaushal2896.\n\nMay I ask something your solution?\n1. `Is it single model using pseudo labeling?`\n2. `What is main different from his great baseline?` @shonenkov \n3. `Did you clean dataset? (e.g. some hug or too small bboxs)\n\nAnyway, Congrats again!",
    "978273": "piantic Thanks!\n\nYes it was single model PL. The baseline was really good and I didn't change it much. I just trained on entire dataset as I wanted to use it in PL. The main change I did was in PL training though. I used same augmentations which I used in training (changing augmentations reduced my score).  And even no data cleaning! So I think model might be underfitting the training data but generalized comparatively well. P.S This was my first object detection competition and this was completely unexpected!",
    "978541": "Nice work @kaushal2896 , \nThis is the first solution which I am seeing without an ensemble. Your single model did a great job and that too with 512x512 is awesome.\n\nGood luck for your future comps.",
    "978867": "Nice one !!!! Keep sharing",
    "979146": "Great job. Could you please share your notebook",
    "979393": "Congratulations on 36th place!",
    "979672": "Sure! I've updated the description with links to public notebooks.",
    "980324": "kaushal2896 Congrats on your high placement!",
    "980554": "brendan45774 Thanks!",
    "980557": "brandonnova Thanks!"
  },
  "source": "meta"
}