{
  "id": 670685,
  "title": "How we approached the problem?",
  "url": "/competitions/csiro-biomass/writeups/how-we-approached-the-problem",
  "author_name": "",
  "post_date": "2026-01-29T06:53:16.840Z",
  "votes": 5,
  "comment_count": 1,
  "views": 0,
  "content": "<p>Ok we failed 🫠 but I feel there is some interesting stuff here:</p>\n<ul>\n<li>Use Depth model to get depth per pixel, then scale it by height to get height for each pixel. This didn't improve results whatever way we used it (extract stats, use to scale targets, use as additional input,…) we spent quite a lot of time on this but no gains.</li>\n<li>Divide targets by height, to get per pixel volume. Then make a separate model for it. Didn't work.</li>\n<li>represent targets as Sigmoid(Cover)XDensityXHeight, which makes sense, but didn't work well.</li>\n<li>Amjad used banana pro to convert all images to Dead, then for targets we make Dead = Green + clover + dead, and zero everything else. Training on this made results worse, we tried to use it as an additional validation fold for dead to assess public models and ensemble them. Fun thing we realized the models do very very bad on it and realized almost all our models area overfitting.</li>\n<li>We tried to frame the problem via UNet where input is the image and output is a feature map that should be summed to give dead, green, clover separately (3 channels), much worse results.</li>\n<li>divide green clover dead by total to make them fractions then use kld loss. failed as well</li>\n<li>Use PlantCLEF2024 model as backbone, didn't improve results and didn't help in ensembling.</li>\n<li>I found a constant formula that segmented green and dead. Used that to find fraction of green and things in each image. Then applied random cropping 224x224 where target is fractionXtargets, then sliding window for inference. Didn't gave better results. </li>\n</ul>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F7311816%2F8e1f522bfdec57c14084c259385cf96a%2FWhatsApp%20Image%202026-01-29%20at%209.47.56%20AM.jpeg?generation=1769669434427825&amp;alt=media\" alt=\"\"></p>",
  "messages": [
    {
      "id": "3398448",
      "postDate": "01/29/2026 06:51:22",
      "content": "<p>Ok we failed 🫠 but I feel there is some interesting stuff here:</p>\n<ul>\n<li>Use Depth model to get depth per pixel, then scale it by height to get height for each pixel. This didn't improve results whatever way we used it (extract stats, use to scale targets, use as additional input,…) we spent quite a lot of time on this but no gains.</li>\n<li>Divide targets by height, to get per pixel volume. Then make a separate model for it. Didn't work.</li>\n<li>represent targets as Sigmoid(Cover)XDensityXHeight, which makes sense, but didn't work well.</li>\n<li>Amjad used banana pro to convert all images to Dead, then for targets we make Dead = Green + clover + dead, and zero everything else. Training on this made results worse, we tried to use it as an additional validation fold for dead to assess public models and ensemble them. Fun thing we realized the models do very very bad on it and realized almost all our models area overfitting.</li>\n<li>We tried to frame the problem via UNet where input is the image and output is a feature map that should be summed to give dead, green, clover separately (3 channels), much worse results.</li>\n<li>divide green clover dead by total to make them fractions then use kld loss. failed as well</li>\n<li>Use PlantCLEF2024 model as backbone, didn't improve results and didn't help in ensembling.</li>\n<li>I found a constant formula that segmented green and dead. Used that to find fraction of green and things in each image. Then applied random cropping 224x224 where target is fractionXtargets, then sliding window for inference. Didn't gave better results. </li>\n</ul>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F7311816%2F8e1f522bfdec57c14084c259385cf96a%2FWhatsApp%20Image%202026-01-29%20at%209.47.56%20AM.jpeg?generation=1769669434427825&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "Ok we failed 🫠 but I feel there is some interesting stuff here:\n\n- Use Depth model to get depth per pixel, then scale it by height to get height for each pixel. This didn't improve results whatever way we used it (extract stats, use to scale targets, use as additional input,...) we spent quite a lot of time on this but no gains.\n- Divide targets by height, to get per pixel volume. Then make a separate model for it. Didn't work.\n- represent targets as Sigmoid(Cover)XDensityXHeight, which makes sense, but didn't work well.\n- Amjad used banana pro to convert all images to Dead, then for targets we make Dead = Green + clover + dead, and zero everything else. Training on this made results worse, we tried to use it as an additional validation fold for dead to assess public models and ensemble them. Fun thing we realized the models do very very bad on it and realized almost all our models area overfitting.\n- We tried to frame the problem via UNet where input is the image and output is a feature map that should be summed to give dead, green, clover separately (3 channels), much worse results.\n- divide green clover dead by total to make them fractions then use kld loss. failed as well\n- Use PlantCLEF2024 model as backbone, didn't improve results and didn't help in ensembling.\n- I found a constant formula that segmented green and dead. Used that to find fraction of green and things in each image. Then applied random cropping 224x224 where target is fractionXtargets, then sliding window for inference. Didn't gave better results. \n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F7311816%2F8e1f522bfdec57c14084c259385cf96a%2FWhatsApp%20Image%202026-01-29%20at%209.47.56%20AM.jpeg?generation=1769669434427825&alt=media)",
      "votes": null
    },
    {
      "id": "3398711",
      "postDate": "01/29/2026 15:27:33",
      "content": "<p>i think reason banana pro approach wouldn't work, like in case of synthetic generation of images, because the way the diffusion models generate these image, they may look same however texture difference, lighting etc are present that confuses the model more  instead acting as new data.overall segmentation approach is cool.</p>",
      "rawMarkdown": "i think reason banana pro approach wouldn't work, like in case of synthetic generation of images, because the way the diffusion models generate these image, they may look same however texture difference, lighting etc are present that confuses the model more  instead acting as new data.overall segmentation approach is cool.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 3398711,
      "author_name": "rajraman83",
      "author_url": "",
      "post_date": "01/29/2026 15:27:33",
      "content": "<p>i think reason banana pro approach wouldn't work, like in case of synthetic generation of images, because the way the diffusion models generate these image, they may look same however texture difference, lighting etc are present that confuses the model more  instead acting as new data.overall segmentation approach is cool.</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "3398448": "Ok we failed 🫠 but I feel there is some interesting stuff here:\n\n- Use Depth model to get depth per pixel, then scale it by height to get height for each pixel. This didn't improve results whatever way we used it (extract stats, use to scale targets, use as additional input,...) we spent quite a lot of time on this but no gains.\n- Divide targets by height, to get per pixel volume. Then make a separate model for it. Didn't work.\n- represent targets as Sigmoid(Cover)XDensityXHeight, which makes sense, but didn't work well.\n- Amjad used banana pro to convert all images to Dead, then for targets we make Dead = Green + clover + dead, and zero everything else. Training on this made results worse, we tried to use it as an additional validation fold for dead to assess public models and ensemble them. Fun thing we realized the models do very very bad on it and realized almost all our models area overfitting.\n- We tried to frame the problem via UNet where input is the image and output is a feature map that should be summed to give dead, green, clover separately (3 channels), much worse results.\n- divide green clover dead by total to make them fractions then use kld loss. failed as well\n- Use PlantCLEF2024 model as backbone, didn't improve results and didn't help in ensembling.\n- I found a constant formula that segmented green and dead. Used that to find fraction of green and things in each image. Then applied random cropping 224x224 where target is fractionXtargets, then sliding window for inference. Didn't gave better results. \n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F7311816%2F8e1f522bfdec57c14084c259385cf96a%2FWhatsApp%20Image%202026-01-29%20at%209.47.56%20AM.jpeg?generation=1769669434427825&alt=media)",
    "3398711": "i think reason banana pro approach wouldn't work, like in case of synthetic generation of images, because the way the diffusion models generate these image, they may look same however texture difference, lighting etc are present that confuses the model more  instead acting as new data.overall segmentation approach is cool."
  },
  "source": "meta"
}