{
  "id": 464768,
  "title": "A Video to Simply Explain the LB0.847 Model (for SenNet Novices, but Not Segmentation Novices)",
  "url": "/competitions/blood-vessel-segmentation/discussion/464768",
  "author_name": "yoyobar",
  "post_date": "2024-01-01T12:42:49.402000",
  "votes": 55,
  "comment_count": 10,
  "views": 0,
  "content": "<p>Hello everyone! I am really excited about the best published 2D model because I didn't expect it to be the best! <br>\nTherefore, I made a video to simply explain these notebooks. <br>\nThis video includes the training and inference notebooks, and the changes that made the 2D model to achieve LB0.847, and a few points that we can work on in the future.<br>\nHowever, this video is in Chinese, so it may not be suitable for English users. But don't worry, I have added subtitles for you :D</p>\n\n<p><a href=\"https://www.bilibili.com/video/BV1JT4y1W7Nq/?vd_source=2d2dc64a0751ecd488424cc2a497dd16\" target=\"_blank\">https://www.bilibili.com/video/BV1JT4y1W7Nq/?vd_source=2d2dc64a0751ecd488424cc2a497dd16</a></p>\n<p>Happy New Year🎉🥳</p>",
  "messages": [
    {
      "id": 2582181,
      "postDate": "2024-01-01T12:42:49.403Z",
      "content": "<p>Hello everyone! I am really excited about the best published 2D model because I didn't expect it to be the best! <br>\nTherefore, I made a video to simply explain these notebooks. <br>\nThis video includes the training and inference notebooks, and the changes that made the 2D model to achieve LB0.847, and a few points that we can work on in the future.<br>\nHowever, this video is in Chinese, so it may not be suitable for English users. But don't worry, I have added subtitles for you :D</p>\n\n<p><a href=\"https://www.bilibili.com/video/BV1JT4y1W7Nq/?vd_source=2d2dc64a0751ecd488424cc2a497dd16\" target=\"_blank\">https://www.bilibili.com/video/BV1JT4y1W7Nq/?vd_source=2d2dc64a0751ecd488424cc2a497dd16</a></p>\n<p>Happy New Year🎉🥳</p>",
      "rawMarkdown": "Hello everyone! I am really excited about the best published 2D model because I didn't expect it to be the best! \nTherefore, I made a video to simply explain these notebooks. \nThis video includes the training and inference notebooks, and the changes that made the 2D model to achieve LB0.847, and a few points that we can work on in the future.\nHowever, this video is in Chinese, so it may not be suitable for English users. But don't worry, I have added subtitles for you :D\n\n<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/dfSMtOZaFWs?si=HkgnbuZSYmULrTkb\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen></iframe>\n\nhttps://www.bilibili.com/video/BV1JT4y1W7Nq/?vd_source=2d2dc64a0751ecd488424cc2a497dd16\n\nHappy New Year🎉🥳\n",
      "votes": 55
    },
    {
      "id": 2582922,
      "postDate": "2024-01-02T00:06:11.053Z",
      "content": "<p>i watch your yourtube, my comments:</p>\n<p>(1) often, when i publish my notebook or methods, i am usually surprised that others can get better results even using the same code or methods with my work. it can be just a simple change of parameters that you missed </p>\n<p>(this is the beauty of sharing, you are given a chance to out performce yourself and setp out of your box)</p>\n<hr>\n<p>(2) the threshold is based on percentile. this can be a dangerous approach . you can verify with your local cv on different fold (and different kidney) to see if you get <strong>consistent</strong> optimum percentile.</p>\n<p>if this is not optimum, you have to think of better <strong>consistent</strong> threshold method</p>\n<p>(hence anyone that uses your notebook as it is will not score better than you in private)</p>\n<hr>\n<p>(3) i don't think the top results are from ensmble. my single model is 0.863.</p>\n<hr>\n<p>(4) let my explain why your notebook work:</p>\n<ul>\n<li>in normal case, we do data augmentation in train</li>\n<li>due to lack of train data, this is not enough</li>\n<li>the other way is to do do test augmentation (hopefully there is at least some detection in one of the test augmentation)</li>\n<li>for heavy TTA to work, FP has to be low. (that is why setting to very low percentile threshold work (and does not work))</li>\n</ul>\n<p>there is a limit to this apporach, as it easily misses the very rare cases (the small vessel, which is the key of winning. but the private data may not have this problem becuase of the different resolution)</p>",
      "rawMarkdown": "i watch your yourtube, my comments:\n\n(1) often, when i publish my notebook or methods, i am usually surprised that others can get better results even using the same code or methods with my work. it can be just a simple change of parameters that you missed \n\n(this is the beauty of sharing, you are given a chance to out performce yourself and setp out of your box)\n\n---\n\n(2) the threshold is based on percentile. this can be a dangerous approach . you can verify with your local cv on different fold (and different kidney) to see if you get **consistent** optimum percentile.\n\nif this is not optimum, you have to think of better **consistent** threshold method\n\n(hence anyone that uses your notebook as it is will not score better than you in private)\n\n---\n\n(3) i don't think the top results are from ensmble. my single model is 0.863.\n\n---\n\n(4) let my explain why your notebook work:\n\n- in normal case, we do data augmentation in train\n- due to lack of train data, this is not enough\n- the other way is to do do test augmentation (hopefully there is at least some detection in one of the test augmentation)\n- for heavy TTA to work, FP has to be low. (that is why setting to very low percentile threshold work (and does not work))\n\nthere is a limit to this apporach, as it easily misses the very rare cases (the small vessel, which is the key of winning. but the private data may not have this problem becuase of the different resolution)",
      "votes": 12,
      "replies": [
        {
          "id": 2583470,
          "postDate": "2024-01-02T08:53:56.320Z",
          "content": "<blockquote>\n  <p>(3) i don't think the top results are from ensmble. my single model is 0.863.</p>\n</blockquote>\n<p>May I ask if this score is from a 2D/2.5D/3D CNN? Thank you.</p>",
          "rawMarkdown": "> (3) i don't think the top results are from ensmble. my single model is 0.863.\n>\n\n\nMay I ask if this score is from a 2D/2.5D/3D CNN? Thank you.",
          "votes": 3
        },
        {
          "id": 2586262,
          "postDate": "2024-01-04T05:04:58.130Z",
          "content": "<p>Yes, my method is slightly modified based on your method and ideas. My consistent threshold submission will cause OOM.</p>",
          "rawMarkdown": "Yes, my method is slightly modified based on your method and ideas. My consistent threshold submission will cause OOM."
        }
      ]
    },
    {
      "id": 2588720,
      "postDate": "2024-01-05T17:07:27.083Z",
      "content": "<p>i do not use your code. <br>\nbut i confirm the seresnext50_32x4d as encoder unet can get 0.864 using single model in my training/inference framework.</p>\n<pre><code>self.encoder = timm.create_model(, =, =3)\n</code></pre>",
      "rawMarkdown": "i do not use your code. \nbut i confirm the seresnext50_32x4d as encoder unet can get 0.864 using single model in my training/inference framework.\n\n```\nself.encoder = timm.create_model('seresnext50_32x4d', pretrained=True, in_chans=3)\n```",
      "votes": 5,
      "replies": [
        {
          "id": 2590034,
          "postDate": "2024-01-06T20:50:53.673Z",
          "content": "<p>For label do you use <br>\n     y=y[index+self.in_chans//2 <br>\n or y=y[index+self.in_chans ?</p>\n<pre><code>x=x[index:index+self.in_chans   ,   x_index:x_index+self.image_size,   y_index:y_index+self.image_size]\ny=y[index+self.in_chans//   ,      x_index:x_index+self.image_size,   y_index:y_index+self.image_size]\n</code></pre>",
          "rawMarkdown": "For label do you use \n     y=y[index+self.in_chans//2 \n or y=y[index+self.in_chans ?\n\n\n```python\nx=x[index:index+self.in_chans   ,   x_index:x_index+self.image_size,   y_index:y_index+self.image_size]\ny=y[index+self.in_chans//2   ,      x_index:x_index+self.image_size,   y_index:y_index+self.image_size]\n```",
          "votes": 1
        }
      ]
    },
    {
      "id": 2582224,
      "postDate": "2024-01-01T13:05:00.980Z",
      "content": "<p>Great work, but it's putting a lot of pressure on me.🥳</p>",
      "rawMarkdown": "Great work, but it's putting a lot of pressure on me.🥳",
      "votes": 5
    },
    {
      "id": 2584284,
      "postDate": "2024-01-02T19:23:54.213Z",
      "content": "<br>\n<a href=\"https://www.youtube.com/watch?v=eSKaZTKzecY\" target=\"_blank\">https://www.youtube.com/watch?v=eSKaZTKzecY</a><p></p>",
      "rawMarkdown": "![English speaker voice](https://www.youtube.com/watch?v=eSKaZTKzecY)\nhttps://www.youtube.com/watch?v=eSKaZTKzecY",
      "votes": 4
    },
    {
      "id": 2582364,
      "postDate": "2024-01-01T15:01:04.830Z",
      "content": "<p>That is an excellent explanation for me!!!😄</p>",
      "rawMarkdown": "That is an excellent explanation for me!!!😄",
      "votes": 2
    },
    {
      "id": 2594505,
      "postDate": "2024-01-09T23:29:27.190Z",
      "rawMarkdown": "",
      "isDeleted": true
    },
    {
      "id": 2585294,
      "postDate": "2024-01-03T14:01:02.790Z",
      "rawMarkdown": "",
      "votes": 1,
      "isDeleted": true
    }
  ],
  "comments": [
    {
      "id": 2582922,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2024-01-02T00:06:11.053000",
      "content": "<p>i watch your yourtube, my comments:</p>\n<p>(1) often, when i publish my notebook or methods, i am usually surprised that others can get better results even using the same code or methods with my work. it can be just a simple change of parameters that you missed </p>\n<p>(this is the beauty of sharing, you are given a chance to out performce yourself and setp out of your box)</p>\n<hr>\n<p>(2) the threshold is based on percentile. this can be a dangerous approach . you can verify with your local cv on different fold (and different kidney) to see if you get <strong>consistent</strong> optimum percentile.</p>\n<p>if this is not optimum, you have to think of better <strong>consistent</strong> threshold method</p>\n<p>(hence anyone that uses your notebook as it is will not score better than you in private)</p>\n<hr>\n<p>(3) i don't think the top results are from ensmble. my single model is 0.863.</p>\n<hr>\n<p>(4) let my explain why your notebook work:</p>\n<ul>\n<li>in normal case, we do data augmentation in train</li>\n<li>due to lack of train data, this is not enough</li>\n<li>the other way is to do do test augmentation (hopefully there is at least some detection in one of the test augmentation)</li>\n<li>for heavy TTA to work, FP has to be low. (that is why setting to very low percentile threshold work (and does not work))</li>\n</ul>\n<p>there is a limit to this apporach, as it easily misses the very rare cases (the small vessel, which is the key of winning. but the private data may not have this problem becuase of the different resolution)</p>",
      "votes": 12,
      "replies": [
        {
          "id": 2583470,
          "author_name": "binga",
          "author_url": "",
          "post_date": "2024-01-02T08:53:56.320000",
          "content": "<blockquote>\n  <p>(3) i don't think the top results are from ensmble. my single model is 0.863.</p>\n</blockquote>\n<p>May I ask if this score is from a 2D/2.5D/3D CNN? Thank you.</p>",
          "votes": 3,
          "replies": []
        },
        {
          "id": 2586262,
          "author_name": "ynhuhu",
          "author_url": "",
          "post_date": "2024-01-04T05:04:58.130000",
          "content": "<p>Yes, my method is slightly modified based on your method and ideas. My consistent threshold submission will cause OOM.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 2588720,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2024-01-05T17:07:27.083000",
      "content": "<p>i do not use your code. <br>\nbut i confirm the seresnext50_32x4d as encoder unet can get 0.864 using single model in my training/inference framework.</p>\n<pre><code>self.encoder = timm.create_model(, =, =3)\n</code></pre>",
      "votes": 5,
      "replies": [
        {
          "id": 2590034,
          "author_name": "",
          "author_url": "",
          "post_date": "2024-01-06T20:50:53.673000",
          "content": "<p>For label do you use <br>\n     y=y[index+self.in_chans//2 <br>\n or y=y[index+self.in_chans ?</p>\n<pre><code>x=x[index:index+self.in_chans   ,   x_index:x_index+self.image_size,   y_index:y_index+self.image_size]\ny=y[index+self.in_chans//   ,      x_index:x_index+self.image_size,   y_index:y_index+self.image_size]\n</code></pre>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 2582224,
      "author_name": "Huang Jin Feng",
      "author_url": "",
      "post_date": "2024-01-01T13:05:00.980000",
      "content": "<p>Great work, but it's putting a lot of pressure on me.🥳</p>",
      "votes": 5,
      "replies": []
    },
    {
      "id": 2584284,
      "author_name": "",
      "author_url": "",
      "post_date": "2024-01-02T19:23:54.213000",
      "content": "<br>\n<a href=\"https://www.youtube.com/watch?v=eSKaZTKzecY\" target=\"_blank\">https://www.youtube.com/watch?v=eSKaZTKzecY</a><p></p>",
      "votes": 4,
      "replies": []
    },
    {
      "id": 2582364,
      "author_name": "Donghui Zhang",
      "author_url": "",
      "post_date": "2024-01-01T15:01:04.830000",
      "content": "<p>That is an excellent explanation for me!!!😄</p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 2594505,
      "author_name": "",
      "author_url": "",
      "post_date": "2024-01-09T23:29:27.190000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 2585294,
      "author_name": "",
      "author_url": "",
      "post_date": "2024-01-03T14:01:02.790000",
      "content": "",
      "votes": 1,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "2582181": "Hello everyone! I am really excited about the best published 2D model because I didn't expect it to be the best! \nTherefore, I made a video to simply explain these notebooks. \nThis video includes the training and inference notebooks, and the changes that made the 2D model to achieve LB0.847, and a few points that we can work on in the future.\nHowever, this video is in Chinese, so it may not be suitable for English users. But don't worry, I have added subtitles for you :D\n\n<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/dfSMtOZaFWs?si=HkgnbuZSYmULrTkb\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen></iframe>\n\nhttps://www.bilibili.com/video/BV1JT4y1W7Nq/?vd_source=2d2dc64a0751ecd488424cc2a497dd16\n\nHappy New Year🎉🥳\n",
    "2582922": "i watch your yourtube, my comments:\n\n(1) often, when i publish my notebook or methods, i am usually surprised that others can get better results even using the same code or methods with my work. it can be just a simple change of parameters that you missed \n\n(this is the beauty of sharing, you are given a chance to out performce yourself and setp out of your box)\n\n---\n\n(2) the threshold is based on percentile. this can be a dangerous approach . you can verify with your local cv on different fold (and different kidney) to see if you get **consistent** optimum percentile.\n\nif this is not optimum, you have to think of better **consistent** threshold method\n\n(hence anyone that uses your notebook as it is will not score better than you in private)\n\n---\n\n(3) i don't think the top results are from ensmble. my single model is 0.863.\n\n---\n\n(4) let my explain why your notebook work:\n\n- in normal case, we do data augmentation in train\n- due to lack of train data, this is not enough\n- the other way is to do do test augmentation (hopefully there is at least some detection in one of the test augmentation)\n- for heavy TTA to work, FP has to be low. (that is why setting to very low percentile threshold work (and does not work))\n\nthere is a limit to this apporach, as it easily misses the very rare cases (the small vessel, which is the key of winning. but the private data may not have this problem becuase of the different resolution)",
    "2588720": "i do not use your code. \nbut i confirm the seresnext50_32x4d as encoder unet can get 0.864 using single model in my training/inference framework.\n\n```\nself.encoder = timm.create_model('seresnext50_32x4d', pretrained=True, in_chans=3)\n```",
    "2582224": "Great work, but it's putting a lot of pressure on me.🥳",
    "2584284": "![English speaker voice](https://www.youtube.com/watch?v=eSKaZTKzecY)\nhttps://www.youtube.com/watch?v=eSKaZTKzecY",
    "2582364": "That is an excellent explanation for me!!!😄",
    "2594505": "",
    "2585294": ""
  }
}