{
  "id": 646942,
  "title": "10th Place Solution: YOLOv8n with Pseudo Ensembling",
  "url": "/competitions/the-3lc-cotton-weed-detection-challenge/writeups/10th-place-solution-yolov8n-with-pseudo-ensemblin",
  "author_name": "",
  "post_date": "2025-11-30T19:47:59.853Z",
  "votes": 4,
  "comment_count": 1,
  "views": 0,
  "content": "<h2>Overview</h2>\n<p>This solution finished <strong>10th Place</strong> by focusing on robust model tuning and ensembling strategies within the strict YOLOv8n architecture constraints. The main idea was to create model diversity through hyperparameter search and then combine predictions using <strong>Weighted Boxes Fusion (WBF)</strong> to build a stronger detector than any single model.</p>\n<hr>\n<h2>Label Cleaning with 3LC</h2>\n<p>Before training the final models, I cleaned the CottonWeedDet3 labels using the <strong>3LC dashboard</strong>. I first trained a plain YOLOv8n model on the original labels and uploaded the run to 3LC, following the official hard-hat tutorial (<a href=\"https://docs.3lc.ai/3lc/latest/tutorials/hard-hat.html\" target=\"_blank\">3LC Guide</a>). In the dashboard, I used IoU and confidence filters to surface high-confidence, low-IoU predictions that indicated missing boxes, as well as mid-IoU predictions that revealed misaligned or poorly sized boxes; these were batch-added or replaced as new ground truth. For class errors, I focused on confusion between <strong>Carpetweed</strong>, <strong>Morningglory</strong>, and <strong>Palmer Amaranth</strong> and compared doubtful plants against external weed-identification resources (<a href=\"https://weedid.missouri.edu/weedinfo.cfm?weed_id=179\" target=\"_blank\">Missouri WeedID – Carpetweed</a>, <a href=\"https://www.ontario.ca/document/weed-identification-guide-ontario-crops/carpetweed\" target=\"_blank\">Ontario Carpetweed guide</a>, <a href=\"https://cals.cornell.edu/weed-science/weed-profiles/morningglories\" target=\"_blank\">Cornell Morningglories</a>, <a href=\"https://extension.umd.edu/resource/keys-identifying-palmer-amaranth-and-waterhemp-fs-2023-0653/\" target=\"_blank\">UMD key for Palmer Amaranth vs Waterhemp</a>, <a href=\"https://cals.cornell.edu/weed-science/weed-identification/pigweed-identification/palmer-amaranth\" target=\"_blank\">Cornell Palmer Amaranth</a>, <a href=\"https://www.extension.purdue.edu/extmedia/ws/ws-51-w.pdf\" target=\"_blank\">Purdue WS-51 guide</a>). Palmer Amaranth was particularly difficult to identify at the seedling stage because it often looks like waterhemp, so I only relabeled plants when the traits clearly matched and otherwise left them unchanged or removed them from training. After several passes through these FP/FN and confusion views, I exported the corrected labels from 3LC as CSV files, converted them back to YOLO TXT format, and trained all YOLOv8n models <strong>only on this revised label set</strong>.</p>\n<hr>\n<h2>Training Strategy &amp; Model Diversity</h2>\n<p>To make the most of the lightweight YOLOv8n model, I trained multiple model variations to introduce diversity in the ensemble. I used the <code>ultralytics</code> library and performed hyperparameter searching with <code>model.tune()</code>, varying optimizers (<code>AdamW</code> vs <code>SGD</code>), training durations (roughly 150–900 epochs), and augmentation intensities (different strengths of Mosaic, Mixup, and Copy-Paste).</p>\n<hr>\n<h2>Inference &amp; Pseudo Ensembling (WBF)</h2>\n<p>Instead of standard Non-Maximum Suppression (NMS), I used <strong>Weighted Boxes Fusion (WBF)</strong> based on <em><a href=\"https://arxiv.org/abs/1910.13302\" target=\"_blank\">Weighted boxes fusion: Ensembling boxes from different object detection models</a></em>. This made it possible to combine predictions from several models in a more consistent way.</p>\n<ul>\n<li><strong>Ensemble Structure:</strong> Predictions from the different YOLOv8n variants were merged into a single set of boxes.  </li>\n<li><strong>WBF Configuration:</strong><ul>\n<li><code>IoU Threshold</code>: 0.45  </li>\n<li><code>Skip Box Threshold</code>: 0.01  </li>\n<li><code>Weights</code>: Higher weights were given to models that performed more reliably on the validation set.</li></ul></li>\n</ul>\n<p>This approach produced cleaner final boxes and improved mAP compared to using any of the individual models alone.</p>\n<hr>\n<h2>Results</h2>\n<ul>\n<li><strong>Public Score:</strong> 0.87430  </li>\n<li><strong>Private Score:</strong> 0.82953  </li>\n</ul>\n<hr>\n<h2>Resources</h2>\n<ul>\n<li><strong>Solution Notebook:</strong> <a href=\"https://www.kaggle.com/code/nishantvalvi1504/the-3lc-cotton-weed-detection-challenge\" target=\"_blank\">Notebook Link</a>  </li>\n<li><strong>Trained Models:</strong> <a href=\"https://www.kaggle.com/models/nishantvalvi1504/3cl-cotton-weed-det-yolov8n-models\" target=\"_blank\">Kaggle Models</a>  </li>\n<li><strong>Corrected Labels Dataset:</strong> <a href=\"https://www.kaggle.com/datasets/nishantvalvi1504/3cl-cotton-weed-det-final-labels\" target=\"_blank\">Dataset Link</a>  </li>\n</ul>\n<hr>\n<h2>Acknowledgements</h2>\n<p>I’m grateful to the <strong>3LC team</strong> and competition organizers for designing a challenge that encourages working on label quality and practical edge deployment instead of just scaling model size. The competition setup made it a very useful exercise in combining annotation tools, model training, and evaluation.</p>\n<p>Thanks as well to the broader <strong>YOLOv8 and 3LC community</strong> for the tools, examples, and documentation that made it easier to experiment with different training and labeling workflows.</p>\n<hr>\n<h2>References</h2>\n<ul>\n<li><p><strong>3LC Guide:</strong>  </p>\n<ul>\n<li><a href=\"https://docs.3lc.ai/3lc/latest/tutorials/hard-hat.html\" target=\"_blank\">Improving models by fixing object detection labels (hard-hat tutorial)</a></li></ul></li>\n<li><p><strong>Weed Identification:</strong>  </p>\n<ul>\n<li><a href=\"https://weedid.missouri.edu/weedinfo.cfm?weed_id=179\" target=\"_blank\">Missouri WeedID – Carpetweed</a>  </li>\n<li><a href=\"https://www.ontario.ca/document/weed-identification-guide-ontario-crops/carpetweed\" target=\"_blank\">Ontario – Carpetweed, Weed Identification Guide</a>  </li>\n<li><a href=\"https://cals.cornell.edu/weed-science/weed-profiles/morningglories\" target=\"_blank\">Cornell – Morningglories</a>  </li>\n<li><a href=\"https://extension.umd.edu/resource/keys-identifying-palmer-amaranth-and-waterhemp-fs-2023-0653/\" target=\"_blank\">UMD Extension – Keys to Identifying Palmer Amaranth and Waterhemp</a>  </li>\n<li><a href=\"https://cals.cornell.edu/weed-science/weed-identification/pigweed-identification/palmer-amaranth\" target=\"_blank\">Cornell – Palmer Amaranth (Pigweed Identification)</a>  </li>\n<li><a href=\"https://www.extension.purdue.edu/extmedia/ws/ws-51-w.pdf\" target=\"_blank\">Purdue – WS-51 Weed Identification Guide</a></li></ul></li>\n<li><p><strong>Ensembling:</strong>  </p>\n<ul>\n<li><a href=\"https://arxiv.org/abs/1910.13302\" target=\"_blank\">Weighted Boxes Fusion: Ensembling boxes from different object detection models</a></li></ul></li>\n</ul>",
  "messages": [
    {
      "id": "3356093",
      "postDate": "11/30/2025 19:45:35",
      "content": "<h2>Overview</h2>\n<p>This solution finished <strong>10th Place</strong> by focusing on robust model tuning and ensembling strategies within the strict YOLOv8n architecture constraints. The main idea was to create model diversity through hyperparameter search and then combine predictions using <strong>Weighted Boxes Fusion (WBF)</strong> to build a stronger detector than any single model.</p>\n<hr>\n<h2>Label Cleaning with 3LC</h2>\n<p>Before training the final models, I cleaned the CottonWeedDet3 labels using the <strong>3LC dashboard</strong>. I first trained a plain YOLOv8n model on the original labels and uploaded the run to 3LC, following the official hard-hat tutorial (<a href=\"https://docs.3lc.ai/3lc/latest/tutorials/hard-hat.html\" target=\"_blank\">3LC Guide</a>). In the dashboard, I used IoU and confidence filters to surface high-confidence, low-IoU predictions that indicated missing boxes, as well as mid-IoU predictions that revealed misaligned or poorly sized boxes; these were batch-added or replaced as new ground truth. For class errors, I focused on confusion between <strong>Carpetweed</strong>, <strong>Morningglory</strong>, and <strong>Palmer Amaranth</strong> and compared doubtful plants against external weed-identification resources (<a href=\"https://weedid.missouri.edu/weedinfo.cfm?weed_id=179\" target=\"_blank\">Missouri WeedID – Carpetweed</a>, <a href=\"https://www.ontario.ca/document/weed-identification-guide-ontario-crops/carpetweed\" target=\"_blank\">Ontario Carpetweed guide</a>, <a href=\"https://cals.cornell.edu/weed-science/weed-profiles/morningglories\" target=\"_blank\">Cornell Morningglories</a>, <a href=\"https://extension.umd.edu/resource/keys-identifying-palmer-amaranth-and-waterhemp-fs-2023-0653/\" target=\"_blank\">UMD key for Palmer Amaranth vs Waterhemp</a>, <a href=\"https://cals.cornell.edu/weed-science/weed-identification/pigweed-identification/palmer-amaranth\" target=\"_blank\">Cornell Palmer Amaranth</a>, <a href=\"https://www.extension.purdue.edu/extmedia/ws/ws-51-w.pdf\" target=\"_blank\">Purdue WS-51 guide</a>). Palmer Amaranth was particularly difficult to identify at the seedling stage because it often looks like waterhemp, so I only relabeled plants when the traits clearly matched and otherwise left them unchanged or removed them from training. After several passes through these FP/FN and confusion views, I exported the corrected labels from 3LC as CSV files, converted them back to YOLO TXT format, and trained all YOLOv8n models <strong>only on this revised label set</strong>.</p>\n<hr>\n<h2>Training Strategy &amp; Model Diversity</h2>\n<p>To make the most of the lightweight YOLOv8n model, I trained multiple model variations to introduce diversity in the ensemble. I used the <code>ultralytics</code> library and performed hyperparameter searching with <code>model.tune()</code>, varying optimizers (<code>AdamW</code> vs <code>SGD</code>), training durations (roughly 150–900 epochs), and augmentation intensities (different strengths of Mosaic, Mixup, and Copy-Paste).</p>\n<hr>\n<h2>Inference &amp; Pseudo Ensembling (WBF)</h2>\n<p>Instead of standard Non-Maximum Suppression (NMS), I used <strong>Weighted Boxes Fusion (WBF)</strong> based on <em><a href=\"https://arxiv.org/abs/1910.13302\" target=\"_blank\">Weighted boxes fusion: Ensembling boxes from different object detection models</a></em>. This made it possible to combine predictions from several models in a more consistent way.</p>\n<ul>\n<li><strong>Ensemble Structure:</strong> Predictions from the different YOLOv8n variants were merged into a single set of boxes.  </li>\n<li><strong>WBF Configuration:</strong><ul>\n<li><code>IoU Threshold</code>: 0.45  </li>\n<li><code>Skip Box Threshold</code>: 0.01  </li>\n<li><code>Weights</code>: Higher weights were given to models that performed more reliably on the validation set.</li></ul></li>\n</ul>\n<p>This approach produced cleaner final boxes and improved mAP compared to using any of the individual models alone.</p>\n<hr>\n<h2>Results</h2>\n<ul>\n<li><strong>Public Score:</strong> 0.87430  </li>\n<li><strong>Private Score:</strong> 0.82953  </li>\n</ul>\n<hr>\n<h2>Resources</h2>\n<ul>\n<li><strong>Solution Notebook:</strong> <a href=\"https://www.kaggle.com/code/nishantvalvi1504/the-3lc-cotton-weed-detection-challenge\" target=\"_blank\">Notebook Link</a>  </li>\n<li><strong>Trained Models:</strong> <a href=\"https://www.kaggle.com/models/nishantvalvi1504/3cl-cotton-weed-det-yolov8n-models\" target=\"_blank\">Kaggle Models</a>  </li>\n<li><strong>Corrected Labels Dataset:</strong> <a href=\"https://www.kaggle.com/datasets/nishantvalvi1504/3cl-cotton-weed-det-final-labels\" target=\"_blank\">Dataset Link</a>  </li>\n</ul>\n<hr>\n<h2>Acknowledgements</h2>\n<p>I’m grateful to the <strong>3LC team</strong> and competition organizers for designing a challenge that encourages working on label quality and practical edge deployment instead of just scaling model size. The competition setup made it a very useful exercise in combining annotation tools, model training, and evaluation.</p>\n<p>Thanks as well to the broader <strong>YOLOv8 and 3LC community</strong> for the tools, examples, and documentation that made it easier to experiment with different training and labeling workflows.</p>\n<hr>\n<h2>References</h2>\n<ul>\n<li><p><strong>3LC Guide:</strong>  </p>\n<ul>\n<li><a href=\"https://docs.3lc.ai/3lc/latest/tutorials/hard-hat.html\" target=\"_blank\">Improving models by fixing object detection labels (hard-hat tutorial)</a></li></ul></li>\n<li><p><strong>Weed Identification:</strong>  </p>\n<ul>\n<li><a href=\"https://weedid.missouri.edu/weedinfo.cfm?weed_id=179\" target=\"_blank\">Missouri WeedID – Carpetweed</a>  </li>\n<li><a href=\"https://www.ontario.ca/document/weed-identification-guide-ontario-crops/carpetweed\" target=\"_blank\">Ontario – Carpetweed, Weed Identification Guide</a>  </li>\n<li><a href=\"https://cals.cornell.edu/weed-science/weed-profiles/morningglories\" target=\"_blank\">Cornell – Morningglories</a>  </li>\n<li><a href=\"https://extension.umd.edu/resource/keys-identifying-palmer-amaranth-and-waterhemp-fs-2023-0653/\" target=\"_blank\">UMD Extension – Keys to Identifying Palmer Amaranth and Waterhemp</a>  </li>\n<li><a href=\"https://cals.cornell.edu/weed-science/weed-identification/pigweed-identification/palmer-amaranth\" target=\"_blank\">Cornell – Palmer Amaranth (Pigweed Identification)</a>  </li>\n<li><a href=\"https://www.extension.purdue.edu/extmedia/ws/ws-51-w.pdf\" target=\"_blank\">Purdue – WS-51 Weed Identification Guide</a></li></ul></li>\n<li><p><strong>Ensembling:</strong>  </p>\n<ul>\n<li><a href=\"https://arxiv.org/abs/1910.13302\" target=\"_blank\">Weighted Boxes Fusion: Ensembling boxes from different object detection models</a></li></ul></li>\n</ul>",
      "rawMarkdown": "## Overview\n\nThis solution finished **10th Place** by focusing on robust model tuning and ensembling strategies within the strict YOLOv8n architecture constraints. The main idea was to create model diversity through hyperparameter search and then combine predictions using **Weighted Boxes Fusion (WBF)** to build a stronger detector than any single model.\n\n---\n\n## Label Cleaning with 3LC\n\nBefore training the final models, I cleaned the CottonWeedDet3 labels using the **3LC dashboard**. I first trained a plain YOLOv8n model on the original labels and uploaded the run to 3LC, following the official hard-hat tutorial ([3LC Guide](https://docs.3lc.ai/3lc/latest/tutorials/hard-hat.html)). In the dashboard, I used IoU and confidence filters to surface high-confidence, low-IoU predictions that indicated missing boxes, as well as mid-IoU predictions that revealed misaligned or poorly sized boxes; these were batch-added or replaced as new ground truth. For class errors, I focused on confusion between **Carpetweed**, **Morningglory**, and **Palmer Amaranth** and compared doubtful plants against external weed-identification resources ([Missouri WeedID – Carpetweed](https://weedid.missouri.edu/weedinfo.cfm?weed_id=179), [Ontario Carpetweed guide](https://www.ontario.ca/document/weed-identification-guide-ontario-crops/carpetweed), [Cornell Morningglories](https://cals.cornell.edu/weed-science/weed-profiles/morningglories), [UMD key for Palmer Amaranth vs Waterhemp](https://extension.umd.edu/resource/keys-identifying-palmer-amaranth-and-waterhemp-fs-2023-0653/), [Cornell Palmer Amaranth](https://cals.cornell.edu/weed-science/weed-identification/pigweed-identification/palmer-amaranth), [Purdue WS-51 guide](https://www.extension.purdue.edu/extmedia/ws/ws-51-w.pdf)). Palmer Amaranth was particularly difficult to identify at the seedling stage because it often looks like waterhemp, so I only relabeled plants when the traits clearly matched and otherwise left them unchanged or removed them from training. After several passes through these FP/FN and confusion views, I exported the corrected labels from 3LC as CSV files, converted them back to YOLO TXT format, and trained all YOLOv8n models **only on this revised label set**.\n\n---\n\n## Training Strategy & Model Diversity\n\nTo make the most of the lightweight YOLOv8n model, I trained multiple model variations to introduce diversity in the ensemble. I used the `ultralytics` library and performed hyperparameter searching with `model.tune()`, varying optimizers (`AdamW` vs `SGD`), training durations (roughly 150–900 epochs), and augmentation intensities (different strengths of Mosaic, Mixup, and Copy-Paste).\n\n---\n\n## Inference & Pseudo Ensembling (WBF)\n\nInstead of standard Non-Maximum Suppression (NMS), I used **Weighted Boxes Fusion (WBF)** based on *[Weighted boxes fusion: Ensembling boxes from different object detection models](https://arxiv.org/abs/1910.13302)*. This made it possible to combine predictions from several models in a more consistent way.\n\n- **Ensemble Structure:** Predictions from the different YOLOv8n variants were merged into a single set of boxes.  \n- **WBF Configuration:**\n  - `IoU Threshold`: 0.45  \n  - `Skip Box Threshold`: 0.01  \n  - `Weights`: Higher weights were given to models that performed more reliably on the validation set.\n\nThis approach produced cleaner final boxes and improved mAP compared to using any of the individual models alone.\n\n---\n\n## Results\n\n- **Public Score:** 0.87430  \n- **Private Score:** 0.82953  \n\n---\n\n## Resources\n\n- **Solution Notebook:** [Notebook Link](https://www.kaggle.com/code/nishantvalvi1504/the-3lc-cotton-weed-detection-challenge)  \n- **Trained Models:** [Kaggle Models](https://www.kaggle.com/models/nishantvalvi1504/3cl-cotton-weed-det-yolov8n-models)  \n- **Corrected Labels Dataset:** [Dataset Link](https://www.kaggle.com/datasets/nishantvalvi1504/3cl-cotton-weed-det-final-labels)  \n\n---\n\n## Acknowledgements\n\nI’m grateful to the **3LC team** and competition organizers for designing a challenge that encourages working on label quality and practical edge deployment instead of just scaling model size. The competition setup made it a very useful exercise in combining annotation tools, model training, and evaluation.\n\nThanks as well to the broader **YOLOv8 and 3LC community** for the tools, examples, and documentation that made it easier to experiment with different training and labeling workflows.\n\n---\n\n## References\n\n- **3LC Guide:**  \n  - [Improving models by fixing object detection labels (hard-hat tutorial)](https://docs.3lc.ai/3lc/latest/tutorials/hard-hat.html)\n\n- **Weed Identification:**  \n  - [Missouri WeedID – Carpetweed](https://weedid.missouri.edu/weedinfo.cfm?weed_id=179)  \n  - [Ontario – Carpetweed, Weed Identification Guide](https://www.ontario.ca/document/weed-identification-guide-ontario-crops/carpetweed)  \n  - [Cornell – Morningglories](https://cals.cornell.edu/weed-science/weed-profiles/morningglories)  \n  - [UMD Extension – Keys to Identifying Palmer Amaranth and Waterhemp](https://extension.umd.edu/resource/keys-identifying-palmer-amaranth-and-waterhemp-fs-2023-0653/)  \n  - [Cornell – Palmer Amaranth (Pigweed Identification)](https://cals.cornell.edu/weed-science/weed-identification/pigweed-identification/palmer-amaranth)  \n  - [Purdue – WS-51 Weed Identification Guide](https://www.extension.purdue.edu/extmedia/ws/ws-51-w.pdf)\n\n- **Ensembling:**  \n  - [Weighted Boxes Fusion: Ensembling boxes from different object detection models](https://arxiv.org/abs/1910.13302)",
      "votes": null
    },
    {
      "id": "3356298",
      "postDate": "11/30/2025 21:52:52",
      "content": "<p>Hi, thanks for the solution. But it seems ensembles and WBF are banned in this competition.</p>",
      "rawMarkdown": "Hi, thanks for the solution. But it seems ensembles and WBF are banned in this competition.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 3356298,
      "author_name": "antonoof",
      "author_url": "",
      "post_date": "11/30/2025 21:52:52",
      "content": "<p>Hi, thanks for the solution. But it seems ensembles and WBF are banned in this competition.</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "3356093": "## Overview\n\nThis solution finished **10th Place** by focusing on robust model tuning and ensembling strategies within the strict YOLOv8n architecture constraints. The main idea was to create model diversity through hyperparameter search and then combine predictions using **Weighted Boxes Fusion (WBF)** to build a stronger detector than any single model.\n\n---\n\n## Label Cleaning with 3LC\n\nBefore training the final models, I cleaned the CottonWeedDet3 labels using the **3LC dashboard**. I first trained a plain YOLOv8n model on the original labels and uploaded the run to 3LC, following the official hard-hat tutorial ([3LC Guide](https://docs.3lc.ai/3lc/latest/tutorials/hard-hat.html)). In the dashboard, I used IoU and confidence filters to surface high-confidence, low-IoU predictions that indicated missing boxes, as well as mid-IoU predictions that revealed misaligned or poorly sized boxes; these were batch-added or replaced as new ground truth. For class errors, I focused on confusion between **Carpetweed**, **Morningglory**, and **Palmer Amaranth** and compared doubtful plants against external weed-identification resources ([Missouri WeedID – Carpetweed](https://weedid.missouri.edu/weedinfo.cfm?weed_id=179), [Ontario Carpetweed guide](https://www.ontario.ca/document/weed-identification-guide-ontario-crops/carpetweed), [Cornell Morningglories](https://cals.cornell.edu/weed-science/weed-profiles/morningglories), [UMD key for Palmer Amaranth vs Waterhemp](https://extension.umd.edu/resource/keys-identifying-palmer-amaranth-and-waterhemp-fs-2023-0653/), [Cornell Palmer Amaranth](https://cals.cornell.edu/weed-science/weed-identification/pigweed-identification/palmer-amaranth), [Purdue WS-51 guide](https://www.extension.purdue.edu/extmedia/ws/ws-51-w.pdf)). Palmer Amaranth was particularly difficult to identify at the seedling stage because it often looks like waterhemp, so I only relabeled plants when the traits clearly matched and otherwise left them unchanged or removed them from training. After several passes through these FP/FN and confusion views, I exported the corrected labels from 3LC as CSV files, converted them back to YOLO TXT format, and trained all YOLOv8n models **only on this revised label set**.\n\n---\n\n## Training Strategy & Model Diversity\n\nTo make the most of the lightweight YOLOv8n model, I trained multiple model variations to introduce diversity in the ensemble. I used the `ultralytics` library and performed hyperparameter searching with `model.tune()`, varying optimizers (`AdamW` vs `SGD`), training durations (roughly 150–900 epochs), and augmentation intensities (different strengths of Mosaic, Mixup, and Copy-Paste).\n\n---\n\n## Inference & Pseudo Ensembling (WBF)\n\nInstead of standard Non-Maximum Suppression (NMS), I used **Weighted Boxes Fusion (WBF)** based on *[Weighted boxes fusion: Ensembling boxes from different object detection models](https://arxiv.org/abs/1910.13302)*. This made it possible to combine predictions from several models in a more consistent way.\n\n- **Ensemble Structure:** Predictions from the different YOLOv8n variants were merged into a single set of boxes.  \n- **WBF Configuration:**\n  - `IoU Threshold`: 0.45  \n  - `Skip Box Threshold`: 0.01  \n  - `Weights`: Higher weights were given to models that performed more reliably on the validation set.\n\nThis approach produced cleaner final boxes and improved mAP compared to using any of the individual models alone.\n\n---\n\n## Results\n\n- **Public Score:** 0.87430  \n- **Private Score:** 0.82953  \n\n---\n\n## Resources\n\n- **Solution Notebook:** [Notebook Link](https://www.kaggle.com/code/nishantvalvi1504/the-3lc-cotton-weed-detection-challenge)  \n- **Trained Models:** [Kaggle Models](https://www.kaggle.com/models/nishantvalvi1504/3cl-cotton-weed-det-yolov8n-models)  \n- **Corrected Labels Dataset:** [Dataset Link](https://www.kaggle.com/datasets/nishantvalvi1504/3cl-cotton-weed-det-final-labels)  \n\n---\n\n## Acknowledgements\n\nI’m grateful to the **3LC team** and competition organizers for designing a challenge that encourages working on label quality and practical edge deployment instead of just scaling model size. The competition setup made it a very useful exercise in combining annotation tools, model training, and evaluation.\n\nThanks as well to the broader **YOLOv8 and 3LC community** for the tools, examples, and documentation that made it easier to experiment with different training and labeling workflows.\n\n---\n\n## References\n\n- **3LC Guide:**  \n  - [Improving models by fixing object detection labels (hard-hat tutorial)](https://docs.3lc.ai/3lc/latest/tutorials/hard-hat.html)\n\n- **Weed Identification:**  \n  - [Missouri WeedID – Carpetweed](https://weedid.missouri.edu/weedinfo.cfm?weed_id=179)  \n  - [Ontario – Carpetweed, Weed Identification Guide](https://www.ontario.ca/document/weed-identification-guide-ontario-crops/carpetweed)  \n  - [Cornell – Morningglories](https://cals.cornell.edu/weed-science/weed-profiles/morningglories)  \n  - [UMD Extension – Keys to Identifying Palmer Amaranth and Waterhemp](https://extension.umd.edu/resource/keys-identifying-palmer-amaranth-and-waterhemp-fs-2023-0653/)  \n  - [Cornell – Palmer Amaranth (Pigweed Identification)](https://cals.cornell.edu/weed-science/weed-identification/pigweed-identification/palmer-amaranth)  \n  - [Purdue – WS-51 Weed Identification Guide](https://www.extension.purdue.edu/extmedia/ws/ws-51-w.pdf)\n\n- **Ensembling:**  \n  - [Weighted Boxes Fusion: Ensembling boxes from different object detection models](https://arxiv.org/abs/1910.13302)",
    "3356298": "Hi, thanks for the solution. But it seems ensembles and WBF are banned in this competition."
  },
  "source": "meta"
}