{
  "id": 226565,
  "title": "17th place with 16 submissions :)",
  "url": "/competitions/ranzcr-clip-catheter-line-classification/writeups/kun-hao-yeh-17th-place-with-16-submissions",
  "author_name": "",
  "post_date": "2021-03-17T01:07:18.143Z",
  "votes": 49,
  "comment_count": 15,
  "views": 0,
  "content": "<p><strong>Thanks to the competition host and Kaggle for this competition! Congrats to all winners!</strong></p>\n<h4><strong>[Solution Overview]</strong></h4>\n<p><strong>1. Validation Split:</strong> </p>\n<ul>\n<li>Used patient id to split train-validation set for both train and annotation csv files to create cv folds for later steps. </li>\n</ul>\n<p><strong>2. Make use of partial annotation images:</strong></p>\n<ul>\n<li>I train a efficientnet-b4 segmentation model to predict the location of 4 kinds of tubs + backgrounds at <strong>pixel-level</strong>: ETT, NGT, CVC, and Swan Ganz Catheter</li>\n</ul>\n<p><strong>3. Train diverse classification models</strong></p>\n<ul>\n<li>Models: resnet200d, seresnet200d, efficient b5, </li>\n<li>Use the out-of-fold predictions from step2 as extra 5 channels, merge with the original image to be 6-channels input (+0.005 cv)</li>\n<li>Use multihead approach from <a href=\"https://www.kaggle.com/ttahara\" target=\"_blank\">@ttahara</a> (+0.002 cv)</li>\n<li>Use pretrained good starting points from <a href=\"https://www.kaggle.com/ammarali32\" target=\"_blank\">@ammarali32</a> (+0.005 cv)</li>\n<li>Use img size 640</li>\n</ul>\n<p><strong>4. Simple average</strong></p>\n<h4><strong>[Base Model Performances (cv/public lb/private lb)]</strong></h4>\n<ul>\n<li>resnet200d-640 with tube predictions, heavy aug: 0.96386/0.969/0.970</li>\n<li>seresnet152d-640 with tube predictions, heavy aug: 0.96158/0.967/0.969</li>\n<li>effficentnetb5-640 with tube predictions, heavy aug: 0.96136/0.964/0.968</li>\n<li>resnet200d-640 without with tube predictions, light aug: 0.9614/0.959/0.967</li>\n<li>blend of 4 above model: 0.968/0.971/0.973</li>\n</ul>\n<h4><strong>[What does not work]</strong></h4>\n<ul>\n<li>Predict 11 labels + backgrounds in segmentation model and add to step 3. as multichannel input</li>\n</ul>",
  "messages": [
    {
      "id": "1241230",
      "postDate": "03/17/2021 00:43:42",
      "content": "<p><strong>Thanks to the competition host and Kaggle for this competition! Congrats to all winners!</strong></p>\n<h4><strong>[Solution Overview]</strong></h4>\n<p><strong>1. Validation Split:</strong> </p>\n<ul>\n<li>Used patient id to split train-validation set for both train and annotation csv files to create cv folds for later steps. </li>\n</ul>\n<p><strong>2. Make use of partial annotation images:</strong></p>\n<ul>\n<li>I train a efficientnet-b4 segmentation model to predict the location of 4 kinds of tubs + backgrounds at <strong>pixel-level</strong>: ETT, NGT, CVC, and Swan Ganz Catheter</li>\n</ul>\n<p><strong>3. Train diverse classification models</strong></p>\n<ul>\n<li>Models: resnet200d, seresnet200d, efficient b5, </li>\n<li>Use the out-of-fold predictions from step2 as extra 5 channels, merge with the original image to be 6-channels input (+0.005 cv)</li>\n<li>Use multihead approach from <a href=\"https://www.kaggle.com/ttahara\" target=\"_blank\">@ttahara</a> (+0.002 cv)</li>\n<li>Use pretrained good starting points from <a href=\"https://www.kaggle.com/ammarali32\" target=\"_blank\">@ammarali32</a> (+0.005 cv)</li>\n<li>Use img size 640</li>\n</ul>\n<p><strong>4. Simple average</strong></p>\n<h4><strong>[Base Model Performances (cv/public lb/private lb)]</strong></h4>\n<ul>\n<li>resnet200d-640 with tube predictions, heavy aug: 0.96386/0.969/0.970</li>\n<li>seresnet152d-640 with tube predictions, heavy aug: 0.96158/0.967/0.969</li>\n<li>effficentnetb5-640 with tube predictions, heavy aug: 0.96136/0.964/0.968</li>\n<li>resnet200d-640 without with tube predictions, light aug: 0.9614/0.959/0.967</li>\n<li>blend of 4 above model: 0.968/0.971/0.973</li>\n</ul>\n<h4><strong>[What does not work]</strong></h4>\n<ul>\n<li>Predict 11 labels + backgrounds in segmentation model and add to step 3. as multichannel input</li>\n</ul>",
      "rawMarkdown": "**Thanks to the competition host and Kaggle for this competition! Congrats to all winners!**\n\n\n\n#### **[Solution Overview]**\n**1. Validation Split:** \n- Used patient id to split train-validation set for both train and annotation csv files to create cv folds for later steps. \n\n**2. Make use of partial annotation images:**\n- I train a efficientnet-b4 segmentation model to predict the location of 4 kinds of tubs + backgrounds at **pixel-level**: ETT, NGT, CVC, and Swan Ganz Catheter\n\n**3. Train diverse classification models**\n- Models: resnet200d, seresnet200d, efficient b5, \n- Use the out-of-fold predictions from step2 as extra 5 channels, merge with the original image to be 6-channels input (+0.005 cv)\n- Use multihead approach from @ttahara (+0.002 cv)\n- Use pretrained good starting points from @ammarali32 (+0.005 cv)\n- Use img size 640\n\n**4. Simple average**\n\n#### **[Base Model Performances (cv/public lb/private lb)]**\n- resnet200d-640 with tube predictions, heavy aug: 0.96386/0.969/0.970\n- seresnet152d-640 with tube predictions, heavy aug: 0.96158/0.967/0.969\n- effficentnetb5-640 with tube predictions, heavy aug: 0.96136/0.964/0.968\n- resnet200d-640 without with tube predictions, light aug: 0.9614/0.959/0.967\n- blend of 4 above model: 0.968/0.971/0.973\n\n#### **[What does not work]**\n- Predict 11 labels + backgrounds in segmentation model and add to step 3. as multichannel input",
      "votes": null
    },
    {
      "id": "1241244",
      "postDate": "03/17/2021 00:52:38",
      "content": "<p>thanks for the writeup. this is interesting<br>\n\"effficentnetb5-640: 0.96136/0.964/0.968\"</p>\n<p>i wonder if the efficiennet actually works, but it just that the public LB set shows lower score?</p>",
      "rawMarkdown": "thanks for the writeup. this is interesting\n\"effficentnetb5-640: 0.96136/0.964/0.968\"\n\ni wonder if the efficiennet actually works, but it just that the public LB set shows lower score?",
      "votes": null
    },
    {
      "id": "1241254",
      "postDate": "03/17/2021 01:00:43",
      "content": "<p>Thanks <a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> </p>\n<p>Here is my submission and experiment records:</p>\n<ul>\n<li>effficentnetb5-640 with tube prediction: 0.96136/0.964/0.968</li>\n<li>resnet200d-640 without tube prediction: 0.9614/0.959/0.967</li>\n<li>efficientnetb3-512 with tube prediction: 0.955/0.959/0.964</li>\n</ul>\n<p>2 models (effficentnetb5-640 and resnet200d-640) have almost the same cv but 0.005 difference in LB, maybe due to there are only 14k*0.25=3.5k images on public LB… Still better to trust the cv if cv split makes sense :)</p>\n<p>2 efficientnet models seems to work on my side, maybe I used tube prediction that guides the training process. Did not submit the efficientnet model without tube predictions, so I could not compare from my side. </p>",
      "rawMarkdown": "Thanks @hengck23 \n\nHere is my submission and experiment records:\n- effficentnetb5-640 with tube prediction: 0.96136/0.964/0.968\n- resnet200d-640 without tube prediction: 0.9614/0.959/0.967\n- efficientnetb3-512 with tube prediction: 0.955/0.959/0.964\n\n2 models (effficentnetb5-640 and resnet200d-640) have almost the same cv but 0.005 difference in LB, maybe due to there are only 14k*0.25=3.5k images on public LB... Still better to trust the cv if cv split makes sense :)\n\n2 efficientnet models seems to work on my side, maybe I used tube prediction that guides the training process. Did not submit the efficientnet model without tube predictions, so I could not compare from my side.",
      "votes": null
    },
    {
      "id": "1241323",
      "postDate": "03/17/2021 02:03:33",
      "content": "<p><a href=\"https://www.kaggle.com/khyeh0719\" target=\"_blank\">@khyeh0719</a> Congratulations on Solo Silver with just 16 submission and thanks for the writeup </p>",
      "rawMarkdown": "khyeh0719 Congratulations on Solo Silver with just 16 submission and thanks for the writeup",
      "votes": null
    },
    {
      "id": "1241328",
      "postDate": "03/17/2021 02:06:12",
      "content": "<p>Wow Thats so impressive solution and submission ,solo guy</p>",
      "rawMarkdown": "Wow Thats so impressive solution and submission ,solo guy",
      "votes": null
    },
    {
      "id": "1241380",
      "postDate": "03/17/2021 02:42:27",
      "content": "<p>Congrats on strongly finish with few submission and thanks for sharing your solution <a href=\"https://www.kaggle.com/khyeh0719\" target=\"_blank\">@khyeh0719</a> </p>",
      "rawMarkdown": "Congrats on strongly finish with few submission and thanks for sharing your solution @khyeh0719",
      "votes": null
    },
    {
      "id": "1241477",
      "postDate": "03/17/2021 04:12:10",
      "content": "<p>Congratulations impressive))</p>",
      "rawMarkdown": "Congratulations impressive))",
      "votes": null
    },
    {
      "id": "1241517",
      "postDate": "03/17/2021 04:41:27",
      "content": "<p>Congratulations! Great work. Thank you for sharing your solution.</p>",
      "rawMarkdown": "Congratulations! Great work. Thank you for sharing your solution.",
      "votes": null
    },
    {
      "id": "1241835",
      "postDate": "03/17/2021 08:20:37",
      "content": "<p>Congrats!! I hope there be one LB cleanup so that you can update your title with '16th place with 16 submissions' 😁</p>",
      "rawMarkdown": "Congrats!! I hope there be one LB cleanup so that you can update your title with '16th place with 16 submissions' 😁",
      "votes": null
    },
    {
      "id": "1242692",
      "postDate": "03/17/2021 18:36:51",
      "content": "<p>Impressive, congratz ! </p>\n<p>Did you refrain from submitting on purpose or did you join too late to spam the leaderboard ?</p>",
      "rawMarkdown": "Impressive, congratz ! \n\nDid you refrain from submitting on purpose or did you join too late to spam the leaderboard ?",
      "votes": null
    },
    {
      "id": "1242936",
      "postDate": "03/17/2021 23:08:27",
      "content": "<p>I joined late and need to go through important ideas only…</p>",
      "rawMarkdown": "I joined late and need to go through important ideas only...",
      "votes": null
    },
    {
      "id": "1243472",
      "postDate": "03/18/2021 08:34:38",
      "content": "<p>That's even more impressive, with a couple more days you could've been even higher :)</p>",
      "rawMarkdown": "That's even more impressive, with a couple more days you could've been even higher :)",
      "votes": null
    },
    {
      "id": "1243826",
      "postDate": "03/18/2021 14:14:40",
      "content": "<p>I will definitely meet some plateau I believe…</p>",
      "rawMarkdown": "I will definitely meet some plateau I believe...",
      "votes": null
    },
    {
      "id": "1243936",
      "postDate": "03/18/2021 15:41:31",
      "content": "<p>There is indeed a pretty huge barrier at some point. 0.972 --&gt; 0.975ish on public LB was very hard.</p>",
      "rawMarkdown": "There is indeed a pretty huge barrier at some point. 0.972 --> 0.975ish on public LB was very hard.",
      "votes": null
    },
    {
      "id": "1243985",
      "postDate": "03/18/2021 16:28:19",
      "content": "<p>Great job Kun Hao and thanks for sharing!</p>",
      "rawMarkdown": "Great job Kun Hao and thanks for sharing!",
      "votes": null
    },
    {
      "id": "1243988",
      "postDate": "03/18/2021 16:31:13",
      "content": "<p>Thanks! You do an amazing work!</p>",
      "rawMarkdown": "Thanks! You do an amazing work!",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 1241244,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "03/17/2021 00:52:38",
      "content": "<p>thanks for the writeup. this is interesting<br>\n\"effficentnetb5-640: 0.96136/0.964/0.968\"</p>\n<p>i wonder if the efficiennet actually works, but it just that the public LB set shows lower score?</p>",
      "votes": null,
      "replies": [
        {
          "id": 1241254,
          "author_name": "khyeh0719",
          "author_url": "",
          "post_date": "03/17/2021 01:00:43",
          "content": "<p>Thanks <a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> </p>\n<p>Here is my submission and experiment records:</p>\n<ul>\n<li>effficentnetb5-640 with tube prediction: 0.96136/0.964/0.968</li>\n<li>resnet200d-640 without tube prediction: 0.9614/0.959/0.967</li>\n<li>efficientnetb3-512 with tube prediction: 0.955/0.959/0.964</li>\n</ul>\n<p>2 models (effficentnetb5-640 and resnet200d-640) have almost the same cv but 0.005 difference in LB, maybe due to there are only 14k*0.25=3.5k images on public LB… Still better to trust the cv if cv split makes sense :)</p>\n<p>2 efficientnet models seems to work on my side, maybe I used tube prediction that guides the training process. Did not submit the efficientnet model without tube predictions, so I could not compare from my side. </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1241323,
      "author_name": "usharengaraju",
      "author_url": "",
      "post_date": "03/17/2021 02:03:33",
      "content": "<p><a href=\"https://www.kaggle.com/khyeh0719\" target=\"_blank\">@khyeh0719</a> Congratulations on Solo Silver with just 16 submission and thanks for the writeup </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1241328,
      "author_name": "morizin",
      "author_url": "",
      "post_date": "03/17/2021 02:06:12",
      "content": "<p>Wow Thats so impressive solution and submission ,solo guy</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1241380,
      "author_name": "duykhanh99",
      "author_url": "",
      "post_date": "03/17/2021 02:42:27",
      "content": "<p>Congrats on strongly finish with few submission and thanks for sharing your solution <a href=\"https://www.kaggle.com/khyeh0719\" target=\"_blank\">@khyeh0719</a> </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1241477,
      "author_name": "ammarali32",
      "author_url": "",
      "post_date": "03/17/2021 04:12:10",
      "content": "<p>Congratulations impressive))</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1241517,
      "author_name": "yoshitaka1105",
      "author_url": "",
      "post_date": "03/17/2021 04:41:27",
      "content": "<p>Congratulations! Great work. Thank you for sharing your solution.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1241835,
      "author_name": "bibek777",
      "author_url": "",
      "post_date": "03/17/2021 08:20:37",
      "content": "<p>Congrats!! I hope there be one LB cleanup so that you can update your title with '16th place with 16 submissions' 😁</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1242692,
      "author_name": "theoviel",
      "author_url": "",
      "post_date": "03/17/2021 18:36:51",
      "content": "<p>Impressive, congratz ! </p>\n<p>Did you refrain from submitting on purpose or did you join too late to spam the leaderboard ?</p>",
      "votes": null,
      "replies": [
        {
          "id": 1242936,
          "author_name": "khyeh0719",
          "author_url": "",
          "post_date": "03/17/2021 23:08:27",
          "content": "<p>I joined late and need to go through important ideas only…</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1243472,
          "author_name": "theoviel",
          "author_url": "",
          "post_date": "03/18/2021 08:34:38",
          "content": "<p>That's even more impressive, with a couple more days you could've been even higher :)</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1243826,
          "author_name": "khyeh0719",
          "author_url": "",
          "post_date": "03/18/2021 14:14:40",
          "content": "<p>I will definitely meet some plateau I believe…</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1243936,
          "author_name": "philippsinger",
          "author_url": "",
          "post_date": "03/18/2021 15:41:31",
          "content": "<p>There is indeed a pretty huge barrier at some point. 0.972 --&gt; 0.975ish on public LB was very hard.</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1243985,
      "author_name": "philippsinger",
      "author_url": "",
      "post_date": "03/18/2021 16:28:19",
      "content": "<p>Great job Kun Hao and thanks for sharing!</p>",
      "votes": null,
      "replies": [
        {
          "id": 1243988,
          "author_name": "khyeh0719",
          "author_url": "",
          "post_date": "03/18/2021 16:31:13",
          "content": "<p>Thanks! You do an amazing work!</p>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "1241230": "**Thanks to the competition host and Kaggle for this competition! Congrats to all winners!**\n\n\n\n#### **[Solution Overview]**\n**1. Validation Split:** \n- Used patient id to split train-validation set for both train and annotation csv files to create cv folds for later steps. \n\n**2. Make use of partial annotation images:**\n- I train a efficientnet-b4 segmentation model to predict the location of 4 kinds of tubs + backgrounds at **pixel-level**: ETT, NGT, CVC, and Swan Ganz Catheter\n\n**3. Train diverse classification models**\n- Models: resnet200d, seresnet200d, efficient b5, \n- Use the out-of-fold predictions from step2 as extra 5 channels, merge with the original image to be 6-channels input (+0.005 cv)\n- Use multihead approach from @ttahara (+0.002 cv)\n- Use pretrained good starting points from @ammarali32 (+0.005 cv)\n- Use img size 640\n\n**4. Simple average**\n\n#### **[Base Model Performances (cv/public lb/private lb)]**\n- resnet200d-640 with tube predictions, heavy aug: 0.96386/0.969/0.970\n- seresnet152d-640 with tube predictions, heavy aug: 0.96158/0.967/0.969\n- effficentnetb5-640 with tube predictions, heavy aug: 0.96136/0.964/0.968\n- resnet200d-640 without with tube predictions, light aug: 0.9614/0.959/0.967\n- blend of 4 above model: 0.968/0.971/0.973\n\n#### **[What does not work]**\n- Predict 11 labels + backgrounds in segmentation model and add to step 3. as multichannel input",
    "1241244": "thanks for the writeup. this is interesting\n\"effficentnetb5-640: 0.96136/0.964/0.968\"\n\ni wonder if the efficiennet actually works, but it just that the public LB set shows lower score?",
    "1241254": "Thanks @hengck23 \n\nHere is my submission and experiment records:\n- effficentnetb5-640 with tube prediction: 0.96136/0.964/0.968\n- resnet200d-640 without tube prediction: 0.9614/0.959/0.967\n- efficientnetb3-512 with tube prediction: 0.955/0.959/0.964\n\n2 models (effficentnetb5-640 and resnet200d-640) have almost the same cv but 0.005 difference in LB, maybe due to there are only 14k*0.25=3.5k images on public LB... Still better to trust the cv if cv split makes sense :)\n\n2 efficientnet models seems to work on my side, maybe I used tube prediction that guides the training process. Did not submit the efficientnet model without tube predictions, so I could not compare from my side.",
    "1241323": "khyeh0719 Congratulations on Solo Silver with just 16 submission and thanks for the writeup",
    "1241328": "Wow Thats so impressive solution and submission ,solo guy",
    "1241380": "Congrats on strongly finish with few submission and thanks for sharing your solution @khyeh0719",
    "1241477": "Congratulations impressive))",
    "1241517": "Congratulations! Great work. Thank you for sharing your solution.",
    "1241835": "Congrats!! I hope there be one LB cleanup so that you can update your title with '16th place with 16 submissions' 😁",
    "1242692": "Impressive, congratz ! \n\nDid you refrain from submitting on purpose or did you join too late to spam the leaderboard ?",
    "1242936": "I joined late and need to go through important ideas only...",
    "1243472": "That's even more impressive, with a couple more days you could've been even higher :)",
    "1243826": "I will definitely meet some plateau I believe...",
    "1243936": "There is indeed a pretty huge barrier at some point. 0.972 --> 0.975ish on public LB was very hard.",
    "1243985": "Great job Kun Hao and thanks for sharing!",
    "1243988": "Thanks! You do an amazing work!"
  },
  "source": "meta"
}