{
  "id": 172522,
  "title": "[From 447 to 135th place Solution] EfficientDet Ensemble",
  "url": "/competitions/global-wheat-detection/writeups/fares-fourati-from-447-to-135th-place-solution-eff",
  "author_name": "",
  "post_date": "2020-08-19T22:50:39.883Z",
  "votes": 12,
  "comment_count": 8,
  "views": 0,
  "content": "<p>Congratulations to all the winners and to all the players that learnt new things!</p>\n<p>Since the start of the competition we have used FasterRCNN then Shifted to EfficientDet then Shifted to YOLOv5. Then used a combination of both EfficientDet+YOLOv5. When we knew that YOLOv5 is prohibited we turned back to EfficientDet and kept optimizing it.</p>\n<p><strong>Training</strong><br>\nData Cleaning: </p>\n<ul>\n<li>Deleted tiny bounding boxes (width or height under a certain threshold)</li>\n<li>Deleted hunge bounding boxes (width or height over a certain threshold)</li>\n</ul>\n<p>Data Augmentation: </p>\n<ul>\n<li>Online Augmentations</li>\n<li>Flips &amp; Rotations (90 multiples)</li>\n<li>Crop &amp; Resize</li>\n<li>Hue Saturation Contrast Brightness </li>\n<li>Moving Blur </li>\n<li>Noise Injection (Gaussian Noise)</li>\n<li>Cutout (Made different versions of that) </li>\n<li>Cutmix </li>\n</ul>\n<p>Training Process: </p>\n<ul>\n<li>Used EfficientDet5 (&amp; EfficientDet7)</li>\n<li>Used both 512x512  and 1024x1024 images</li>\n<li>Startified 5 Folds Splitting </li>\n<li>By Source Splitting (for some Fine Tuning)</li>\n<li>Manual tweaks when training the models (&amp; Early Stopping)</li>\n<li>Change Augmentation distributions every certain number of epochs</li>\n</ul>\n<p><strong>Inference</strong><br>\nA picture is worth a thousand words:</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1739631%2F7dffedb28611b84b7c76165e8873215d%2Fstar.png?generation=1596624192299446&amp;alt=media\" alt=\"\"></p>\n<p>Here you find my inference <a href=\"https://www.kaggle.com/ffares/ensemble-models-tta-efficientdet-512-1024\" target=\"_blank\">kernel</a>, please upvote the notebook if you like it, and most imprtantly feel free to give your feedback so I can learn from my mistakes. </p>\n<p>I want to thank the hosts of this competition, kaggle and all the participants who submitted compliant solutions. Special thanks goes for <a href=\"https://www.kaggle.com/shonenkov\" target=\"_blank\">@shonenkov</a> <a href=\"https://www.kaggle.com/nvnnghia\" target=\"_blank\">@nvnnghia</a> <a href=\"https://www.kaggle.com/pestipeti\" target=\"_blank\">@pestipeti</a> and many others who kept sharing during the competition.</p>\n<p>We will update with further details.</p>",
  "messages": [
    {
      "id": "959138",
      "postDate": "08/05/2020 11:25:57",
      "content": "<p>Congratulations to all the winners and to all the players that learnt new things!</p>\n<p>Since the start of the competition we have used FasterRCNN then Shifted to EfficientDet then Shifted to YOLOv5. Then used a combination of both EfficientDet+YOLOv5. When we knew that YOLOv5 is prohibited we turned back to EfficientDet and kept optimizing it.</p>\n<p><strong>Training</strong><br>\nData Cleaning: </p>\n<ul>\n<li>Deleted tiny bounding boxes (width or height under a certain threshold)</li>\n<li>Deleted hunge bounding boxes (width or height over a certain threshold)</li>\n</ul>\n<p>Data Augmentation: </p>\n<ul>\n<li>Online Augmentations</li>\n<li>Flips &amp; Rotations (90 multiples)</li>\n<li>Crop &amp; Resize</li>\n<li>Hue Saturation Contrast Brightness </li>\n<li>Moving Blur </li>\n<li>Noise Injection (Gaussian Noise)</li>\n<li>Cutout (Made different versions of that) </li>\n<li>Cutmix </li>\n</ul>\n<p>Training Process: </p>\n<ul>\n<li>Used EfficientDet5 (&amp; EfficientDet7)</li>\n<li>Used both 512x512  and 1024x1024 images</li>\n<li>Startified 5 Folds Splitting </li>\n<li>By Source Splitting (for some Fine Tuning)</li>\n<li>Manual tweaks when training the models (&amp; Early Stopping)</li>\n<li>Change Augmentation distributions every certain number of epochs</li>\n</ul>\n<p><strong>Inference</strong><br>\nA picture is worth a thousand words:</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1739631%2F7dffedb28611b84b7c76165e8873215d%2Fstar.png?generation=1596624192299446&amp;alt=media\" alt=\"\"></p>\n<p>Here you find my inference <a href=\"https://www.kaggle.com/ffares/ensemble-models-tta-efficientdet-512-1024\" target=\"_blank\">kernel</a>, please upvote the notebook if you like it, and most imprtantly feel free to give your feedback so I can learn from my mistakes. </p>\n<p>I want to thank the hosts of this competition, kaggle and all the participants who submitted compliant solutions. Special thanks goes for <a href=\"https://www.kaggle.com/shonenkov\" target=\"_blank\">@shonenkov</a> <a href=\"https://www.kaggle.com/nvnnghia\" target=\"_blank\">@nvnnghia</a> <a href=\"https://www.kaggle.com/pestipeti\" target=\"_blank\">@pestipeti</a> and many others who kept sharing during the competition.</p>\n<p>We will update with further details.</p>",
      "rawMarkdown": "Congratulations to all the winners and to all the players that learnt new things!\n\nSince the start of the competition we have used FasterRCNN then Shifted to EfficientDet then Shifted to YOLOv5. Then used a combination of both EfficientDet+YOLOv5. When we knew that YOLOv5 is prohibited we turned back to EfficientDet and kept optimizing it.\n\n\n**Training**\nData Cleaning: \n* Deleted tiny bounding boxes (width or height under a certain threshold)\n* Deleted hunge bounding boxes (width or height over a certain threshold)\n\nData Augmentation: \n* Online Augmentations\n* Flips &amp; Rotations (90 multiples)\n* Crop &amp; Resize\n* Hue Saturation Contrast Brightness \n* Moving Blur \n* Noise Injection (Gaussian Noise)\n* Cutout (Made different versions of that) \n* Cutmix \n\nTraining Process: \n* Used EfficientDet5 (&amp; EfficientDet7)\n* Used both 512x512  and 1024x1024 images\n* Startified 5 Folds Splitting \n* By Source Splitting (for some Fine Tuning)\n* Manual tweaks when training the models (&amp; Early Stopping)\n* Change Augmentation distributions every certain number of epochs\n\n\n**Inference**\nA picture is worth a thousand words:\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1739631%2F7dffedb28611b84b7c76165e8873215d%2Fstar.png?generation=1596624192299446&amp;alt=media)\n\nHere you find my inference [kernel](https://www.kaggle.com/ffares/ensemble-models-tta-efficientdet-512-1024), please upvote the notebook if you like it, and most imprtantly feel free to give your feedback so I can learn from my mistakes. \n\nI want to thank the hosts of this competition, kaggle and all the participants who submitted compliant solutions. Special thanks goes for @shonenkov @nvnnghia @pestipeti and many others who kept sharing during the competition.\n\nWe will update with further details.",
      "votes": null
    },
    {
      "id": "959149",
      "postDate": "08/05/2020 11:39:56",
      "content": "<p>keep up the good work 👍 </p>",
      "rawMarkdown": "keep up the good work 👍",
      "votes": null
    },
    {
      "id": "959185",
      "postDate": "08/05/2020 12:05:56",
      "content": "<p><a href=\"/nvnnghia\">@nvnnghia</a> thanks :D</p>",
      "rawMarkdown": "nvnnghia thanks :D",
      "votes": null
    },
    {
      "id": "959884",
      "postDate": "08/06/2020 02:06:11",
      "content": "<p>Congrats.\nOn the 1024, may I ask what batch you were using on what kind of gpu ?</p>",
      "rawMarkdown": "Congrats.\nOn the 1024, may I ask what batch you were using on what kind of gpu ?",
      "votes": null
    },
    {
      "id": "960046",
      "postDate": "08/06/2020 05:26:47",
      "content": "<p>Thanks for sharing! \n<a href=\"/ffares\">@ffares</a> </p>",
      "rawMarkdown": "Thanks for sharing! \n@ffares",
      "votes": null
    },
    {
      "id": "960428",
      "postDate": "08/06/2020 11:50:02",
      "content": "<p>Thanks! \nI used batch 1  and Google Colab (P100).</p>",
      "rawMarkdown": "Thanks! \nI used batch 1  and Google Colab (P100).",
      "votes": null
    },
    {
      "id": "962281",
      "postDate": "08/08/2020 01:59:47",
      "content": "<p><a href=\"/ffares\">@ffares</a>  Wow, you explained the whole concept in a very naive way... Looking forward to check your notebooks.</p>",
      "rawMarkdown": "ffares  Wow, you explained the whole concept in a very naive way... Looking forward to check your notebooks.",
      "votes": null
    },
    {
      "id": "962379",
      "postDate": "08/08/2020 05:09:06",
      "content": "<p>Thank you for sharing your analysis <a href=\"https://www.kaggle.com/ffares\" target=\"_blank\">@ffares</a> </p>",
      "rawMarkdown": "Thank you for sharing your analysis @ffares",
      "votes": null
    },
    {
      "id": "962826",
      "postDate": "08/08/2020 13:13:41",
      "content": "<p>Thanks, you're welcome :D</p>",
      "rawMarkdown": "Thanks, you're welcome :D",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 962379,
      "author_name": "subham07",
      "author_url": "",
      "post_date": "08/08/2020 05:09:06",
      "content": "<p>Thank you for sharing your analysis <a href=\"https://www.kaggle.com/ffares\" target=\"_blank\">@ffares</a> </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 959149,
      "author_name": "nvnnghia",
      "author_url": "",
      "post_date": "08/05/2020 11:39:56",
      "content": "<p>keep up the good work 👍 </p>",
      "votes": null,
      "replies": [
        {
          "id": 959185,
          "author_name": "ffares",
          "author_url": "",
          "post_date": "08/05/2020 12:05:56",
          "content": "<p><a href=\"/nvnnghia\">@nvnnghia</a> thanks :D</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 959884,
      "author_name": "chabir",
      "author_url": "",
      "post_date": "08/06/2020 02:06:11",
      "content": "<p>Congrats.\nOn the 1024, may I ask what batch you were using on what kind of gpu ?</p>",
      "votes": null,
      "replies": [
        {
          "id": 960428,
          "author_name": "ffares",
          "author_url": "",
          "post_date": "08/06/2020 11:50:02",
          "content": "<p>Thanks! \nI used batch 1  and Google Colab (P100).</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 960046,
      "author_name": "piantic",
      "author_url": "",
      "post_date": "08/06/2020 05:26:47",
      "content": "<p>Thanks for sharing! \n<a href=\"/ffares\">@ffares</a> </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 962281,
      "author_name": "vin1234",
      "author_url": "",
      "post_date": "08/08/2020 01:59:47",
      "content": "<p><a href=\"/ffares\">@ffares</a>  Wow, you explained the whole concept in a very naive way... Looking forward to check your notebooks.</p>",
      "votes": null,
      "replies": [
        {
          "id": 962826,
          "author_name": "ffares",
          "author_url": "",
          "post_date": "08/08/2020 13:13:41",
          "content": "<p>Thanks, you're welcome :D</p>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "959138": "Congratulations to all the winners and to all the players that learnt new things!\n\nSince the start of the competition we have used FasterRCNN then Shifted to EfficientDet then Shifted to YOLOv5. Then used a combination of both EfficientDet+YOLOv5. When we knew that YOLOv5 is prohibited we turned back to EfficientDet and kept optimizing it.\n\n\n**Training**\nData Cleaning: \n* Deleted tiny bounding boxes (width or height under a certain threshold)\n* Deleted hunge bounding boxes (width or height over a certain threshold)\n\nData Augmentation: \n* Online Augmentations\n* Flips &amp; Rotations (90 multiples)\n* Crop &amp; Resize\n* Hue Saturation Contrast Brightness \n* Moving Blur \n* Noise Injection (Gaussian Noise)\n* Cutout (Made different versions of that) \n* Cutmix \n\nTraining Process: \n* Used EfficientDet5 (&amp; EfficientDet7)\n* Used both 512x512  and 1024x1024 images\n* Startified 5 Folds Splitting \n* By Source Splitting (for some Fine Tuning)\n* Manual tweaks when training the models (&amp; Early Stopping)\n* Change Augmentation distributions every certain number of epochs\n\n\n**Inference**\nA picture is worth a thousand words:\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1739631%2F7dffedb28611b84b7c76165e8873215d%2Fstar.png?generation=1596624192299446&amp;alt=media)\n\nHere you find my inference [kernel](https://www.kaggle.com/ffares/ensemble-models-tta-efficientdet-512-1024), please upvote the notebook if you like it, and most imprtantly feel free to give your feedback so I can learn from my mistakes. \n\nI want to thank the hosts of this competition, kaggle and all the participants who submitted compliant solutions. Special thanks goes for @shonenkov @nvnnghia @pestipeti and many others who kept sharing during the competition.\n\nWe will update with further details.",
    "959149": "keep up the good work 👍",
    "959185": "nvnnghia thanks :D",
    "959884": "Congrats.\nOn the 1024, may I ask what batch you were using on what kind of gpu ?",
    "960046": "Thanks for sharing! \n@ffares",
    "960428": "Thanks! \nI used batch 1  and Google Colab (P100).",
    "962281": "ffares  Wow, you explained the whole concept in a very naive way... Looking forward to check your notebooks.",
    "962379": "Thank you for sharing your analysis @ffares",
    "962826": "Thanks, you're welcome :D"
  },
  "source": "meta"
}