{
  "id": 561417,
  "title": "3rd Place Solution",
  "url": "/competitions/czii-cryo-et-object-identification/discussion/561417",
  "author_name": "soso",
  "post_date": "2025-02-06T02:43:32.872000",
  "votes": 53,
  "comment_count": 32,
  "views": 0,
  "content": "<p>Thanks kaggle&amp;host for this interesting competition. <br>\nWhat I like for this competition is that the host give out a baseline(especially for data processing), it is very helpful for people like me who has no knowledge with this domain.<br>\nAnother reason I join this competition was that I want to writing training code based on the library accelerate(I use pure pytorch before). <br>\nSince I am on the top, I will think there is no critical bug in my training code.</p>\n<h1>Summary</h1>\n<p>Before I start this competition I thought it was a OD task not a segmentation task untile <a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> publish his good <a href=\"https://www.kaggle.com/code/hengck23/3d-unet-using-2d-image-encoder\" target=\"_blank\">notebook</a>.<br>\nMy solution is based on 3D unet with post processing using cc3d. Cross Entropy loss is used with all the 7 particles.<br>\nMy best solution is 4 fold(7 KF) average ensemble of backbone res101.<br>\nOne thing I want to mention is that my best solution has same score(0.783) on both Public and Private LB.</p>\n<h1>models</h1>\n<p>I use the code from <a href=\"https://github.com/ZFTurbo/segmentation_models_pytorch_3d\" target=\"_blank\">segmentation_models_pytorch_3d</a>.<br>\nThe best solution is Unet + resnet101.<br>\nI also try different architecture with different backbones, but unet+resnet101 is the best on public LB.<br>\nI did not dig much of the code, so mostly default parameters was used for these models.</p>\n<h1>train</h1>\n<p>I use EMA because it is easier to handle than SWA, although I remember there is saying SWA is better than EMA.<br>\nI train the model with input size (64, 128, 128), but inference with (64, 256, 256), which give 0.001 improvement on public LB.<br>\nI use half of the original radius during training, considering how the evaluation score is calculated, which is also best based on my experiment.</p>\n<h1>Augmentation</h1>\n<p>It is obvious data augmentation will help a lot for this competition considering the rare data we have.<br>\nWhat I used:</p>\n<ul>\n<li>flip on axis x, y, z</li>\n<li>switch axis x and y</li>\n<li>different algos: \"denoised\", \"wbp\", \"ctfdeconvolved\", \"isonetcorrected</li>\n<li>simple copy past</li>\n<li>mixup</li>\n</ul>\n<h1>TTA</h1>\n<p>2 tta was used, output is averaged with original:</p>\n<ul>\n<li>flip x, y, z</li>\n<li>rot90 for x, y</li>\n</ul>\n<h1>ensemble</h1>\n<ul>\n<li>4 fold of 7KF average ensemble</li>\n</ul>\n<h1>Failures</h1>\n<ul>\n<li>Try to pretrain on the external data provided by host</li>\n<li>ensemble unet with different backbone like resnet34 and resnet10</li>\n</ul>",
  "messages": [
    {
      "id": 3116482,
      "postDate": "2025-02-06T02:43:32.873Z",
      "content": "<p>Thanks kaggle&amp;host for this interesting competition. <br>\nWhat I like for this competition is that the host give out a baseline(especially for data processing), it is very helpful for people like me who has no knowledge with this domain.<br>\nAnother reason I join this competition was that I want to writing training code based on the library accelerate(I use pure pytorch before). <br>\nSince I am on the top, I will think there is no critical bug in my training code.</p>\n<h1>Summary</h1>\n<p>Before I start this competition I thought it was a OD task not a segmentation task untile <a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> publish his good <a href=\"https://www.kaggle.com/code/hengck23/3d-unet-using-2d-image-encoder\" target=\"_blank\">notebook</a>.<br>\nMy solution is based on 3D unet with post processing using cc3d. Cross Entropy loss is used with all the 7 particles.<br>\nMy best solution is 4 fold(7 KF) average ensemble of backbone res101.<br>\nOne thing I want to mention is that my best solution has same score(0.783) on both Public and Private LB.</p>\n<h1>models</h1>\n<p>I use the code from <a href=\"https://github.com/ZFTurbo/segmentation_models_pytorch_3d\" target=\"_blank\">segmentation_models_pytorch_3d</a>.<br>\nThe best solution is Unet + resnet101.<br>\nI also try different architecture with different backbones, but unet+resnet101 is the best on public LB.<br>\nI did not dig much of the code, so mostly default parameters was used for these models.</p>\n<h1>train</h1>\n<p>I use EMA because it is easier to handle than SWA, although I remember there is saying SWA is better than EMA.<br>\nI train the model with input size (64, 128, 128), but inference with (64, 256, 256), which give 0.001 improvement on public LB.<br>\nI use half of the original radius during training, considering how the evaluation score is calculated, which is also best based on my experiment.</p>\n<h1>Augmentation</h1>\n<p>It is obvious data augmentation will help a lot for this competition considering the rare data we have.<br>\nWhat I used:</p>\n<ul>\n<li>flip on axis x, y, z</li>\n<li>switch axis x and y</li>\n<li>different algos: \"denoised\", \"wbp\", \"ctfdeconvolved\", \"isonetcorrected</li>\n<li>simple copy past</li>\n<li>mixup</li>\n</ul>\n<h1>TTA</h1>\n<p>2 tta was used, output is averaged with original:</p>\n<ul>\n<li>flip x, y, z</li>\n<li>rot90 for x, y</li>\n</ul>\n<h1>ensemble</h1>\n<ul>\n<li>4 fold of 7KF average ensemble</li>\n</ul>\n<h1>Failures</h1>\n<ul>\n<li>Try to pretrain on the external data provided by host</li>\n<li>ensemble unet with different backbone like resnet34 and resnet10</li>\n</ul>",
      "rawMarkdown": "\nThanks kaggle&host for this interesting competition. \nWhat I like for this competition is that the host give out a baseline(especially for data processing), it is very helpful for people like me who has no knowledge with this domain.\nAnother reason I join this competition was that I want to writing training code based on the library accelerate(I use pure pytorch before). \nSince I am on the top, I will think there is no critical bug in my training code.\n\n\n# Summary\nBefore I start this competition I thought it was a OD task not a segmentation task untile @hengck23 publish his good [notebook](https://www.kaggle.com/code/hengck23/3d-unet-using-2d-image-encoder).\nMy solution is based on 3D unet with post processing using cc3d. Cross Entropy loss is used with all the 7 particles.\nMy best solution is 4 fold(7 KF) average ensemble of backbone res101.\n\nOne thing I want to mention is that my best solution has same score(0.783) on both Public and Private LB.\n\n# models\nI use the code from [segmentation_models_pytorch_3d](https://github.com/ZFTurbo/segmentation_models_pytorch_3d).\nThe best solution is Unet + resnet101.\nI also try different architecture with different backbones, but unet+resnet101 is the best on public LB.\nI did not dig much of the code, so mostly default parameters was used for these models.\n\n# train\n\nI use EMA because it is easier to handle than SWA, although I remember there is saying SWA is better than EMA.\nI train the model with input size (64, 128, 128), but inference with (64, 256, 256), which give 0.001 improvement on public LB.\nI use half of the original radius during training, considering how the evaluation score is calculated, which is also best based on my experiment.\n\n# Augmentation\nIt is obvious data augmentation will help a lot for this competition considering the rare data we have.\nWhat I used:\n- flip on axis x, y, z\n- switch axis x and y\n- different algos: \"denoised\", \"wbp\", \"ctfdeconvolved\", \"isonetcorrected\n- simple copy past\n- mixup\n\n# TTA\n2 tta was used, output is averaged with original:\n- flip x, y, z\n- rot90 for x, y\n  \n# ensemble\n- 4 fold of 7KF average ensemble\n\n# Failures\n- Try to pretrain on the external data provided by host\n- ensemble unet with different backbone like resnet34 and resnet10",
      "votes": 53
    },
    {
      "id": 3116536,
      "postDate": "2025-02-06T04:01:16.997Z",
      "content": "<p>Congratulations! Nice solution，simple and efficient!</p>",
      "rawMarkdown": "Congratulations! Nice solution，simple and efficient!\n",
      "votes": 1
    },
    {
      "id": 3142227,
      "postDate": "2025-03-06T08:15:33.030Z",
      "content": "<p>Congrats! Wondering what GPU you used for training?</p>",
      "rawMarkdown": "Congrats! Wondering what GPU you used for training?"
    },
    {
      "id": 3122396,
      "postDate": "2025-02-12T15:31:27.023Z",
      "content": "<p>nice solution</p>",
      "rawMarkdown": "nice solution"
    },
    {
      "id": 3122116,
      "postDate": "2025-02-12T09:41:46.417Z",
      "content": "<p>nice and efficient solution</p>",
      "rawMarkdown": "nice and efficient solution"
    },
    {
      "id": 3120976,
      "postDate": "2025-02-11T05:53:30.467Z",
      "content": "<p>Hi, thank you very much for publishing the solution!</p>\n<p>As far as I am concerned, you \"train the model with input size (64, 128, 128), but inference with (64, 256, 256)\". May I ask <strong>what effect will it bring up to have different size for training and inference? How should we understand it in this situation</strong> ?</p>\n<p>Best<br>\nLeo</p>",
      "rawMarkdown": "Hi, thank you very much for publishing the solution!\n\nAs far as I am concerned, you \"train the model with input size (64, 128, 128), but inference with (64, 256, 256)\". May I ask **what effect will it bring up to have different size for training and inference? How should we understand it in this situation** ?\n\nBest\nLeo",
      "replies": [
        {
          "id": 3120988,
          "postDate": "2025-02-11T06:07:09.167Z",
          "content": "<p>Because it worked in public LB. <br>\nI think when  split it with small patch there will be more border pixels which is hard for the model to predict!</p>",
          "rawMarkdown": "Because it worked in public LB. \nI think when  split it with small patch there will be more border pixels which is hard for the model to predict!",
          "replies": [
            {
              "id": 3121786,
              "postDate": "2025-02-12T00:51:19.330Z",
              "content": "<p>Thanks for replying. I am very interested by this case. May I ask more questions?</p>\n<p>Supposed we change the input size for inference, will the results be affected in a bad way? <br>\nFor example, what if we input a 2048*2048 pixel resolution image, Can it still segmentation correctly ? </p>",
              "rawMarkdown": "Thanks for replying. I am very interested by this case. May I ask more questions?\n\nSupposed we change the input size for inference, will the results be affected in a bad way? \nFor example, what if we input a 2048*2048 pixel resolution image, Can it still segmentation correctly ? \n"
            },
            {
              "id": 3121813,
              "postDate": "2025-02-12T01:54:02.697Z",
              "content": "<ol>\n<li>with bigger input size in inference, it have bigger difference compare to train, this should decrease performance. Remember for a convolution models the receptive field is fixed, when input size bigger than receptive field, there should be no more decrease.</li>\n<li>with bigger input size, you get more context information, this should increase the performance. Same as above about the receptive field</li>\n<li>with bigger input size, you have less border pixels, this should increase the performance</li>\n</ol>\n<p>So there must be some balance.</p>",
              "rawMarkdown": "1. with bigger input size in inference, it have bigger difference compare to train, this should decrease performance. Remember for a convolution models the receptive field is fixed, when input size bigger than receptive field, there should be no more decrease.\n2. with bigger input size, you get more context information, this should increase the performance. Same as above about the receptive field\n3. with bigger input size, you have less border pixels, this should increase the performance\n\nSo there must be some balance.\n"
            },
            {
              "id": 3121834,
              "postDate": "2025-02-12T02:35:05.080Z",
              "content": "<p>thx! I will take something to digest these insights.</p>",
              "rawMarkdown": "thx! I will take something to digest these insights."
            }
          ]
        }
      ]
    },
    {
      "id": 3120405,
      "postDate": "2025-02-10T13:44:14.970Z",
      "content": "<p>Nice and effficient solution</p>",
      "rawMarkdown": "Nice and effficient solution\n"
    },
    {
      "id": 3116967,
      "postDate": "2025-02-06T13:31:35.110Z",
      "content": "<p>Would you mind sharing the single model performance in the final four models?</p>",
      "rawMarkdown": "Would you mind sharing the single model performance in the final four models?",
      "replies": [
        {
          "id": 3117366,
          "postDate": "2025-02-06T23:09:35.847Z",
          "content": "<p><a href=\"https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/561417#3116504\" target=\"_blank\">https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/561417#3116504</a></p>",
          "rawMarkdown": "https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/561417#3116504"
        }
      ]
    },
    {
      "id": 3116856,
      "postDate": "2025-02-06T11:31:00.357Z",
      "content": "<p>Nice and effficient solution</p>",
      "rawMarkdown": "Nice and effficient solution"
    },
    {
      "id": 3116750,
      "postDate": "2025-02-06T09:12:59.640Z",
      "content": "<p>Huge congrats! Are you planning to share your final code as well? </p>",
      "rawMarkdown": "Huge congrats! Are you planning to share your final code as well? "
    },
    {
      "id": 3116675,
      "postDate": "2025-02-06T07:35:26.630Z",
      "content": "<p>Hi! Congratulations on your results, especially considering the fact that you did not use the external dataset provided by the host. It would very helpful if you could provided the training code you used to train the model. Thanks!!</p>",
      "rawMarkdown": "Hi! Congratulations on your results, especially considering the fact that you did not use the external dataset provided by the host. It would very helpful if you could provided the training code you used to train the model. Thanks!!"
    },
    {
      "id": 3116561,
      "postDate": "2025-02-06T04:27:32.693Z",
      "content": "<p>Congrats <a href=\"https://www.kaggle.com/tangtang1999\" target=\"_blank\">@tangtang1999</a>. May I know the improvement of using heavy augmentation like different algo, mixup and copypaste?</p>",
      "rawMarkdown": "Congrats @tangtang1999. May I know the improvement of using heavy augmentation like different algo, mixup and copypaste?",
      "replies": [
        {
          "id": 3116709,
          "postDate": "2025-02-06T08:38:29.907Z",
          "content": "<p>Unfortunately I did not find the logs(When have too much logs, notebook will become too slow, I deleted some logs 😅).<br>\nWhat I remember is:</p>\n<ol>\n<li>When I increase aug algo prob from 0.5 to 0.75 it did not give me better CV</li>\n<li>For copy past and mixup both did not improve CV but improve public LB. I only submit one fold(5KF for early experiment), because I am a lazy people</li>\n<li>For others I do not remember the number but I only keep when have better CV.</li>\n</ol>\n<p>Remember for this competition we have too less training data, so we can not always trust the local CV</p>",
          "rawMarkdown": "Unfortunately I did not find the logs(When have too much logs, notebook will become too slow, I deleted some logs 😅).\nWhat I remember is:\n\n1. When I increase aug algo prob from 0.5 to 0.75 it did not give me better CV\n2. For copy past and mixup both did not improve CV but improve public LB. I only submit one fold(5KF for early experiment), because I am a lazy people\n3. For others I do not remember the number but I only keep when have better CV.\n\nRemember for this competition we have too less training data, so we can not always trust the local CV\n\n"
        }
      ]
    },
    {
      "id": 3116519,
      "postDate": "2025-02-06T03:37:44.937Z",
      "content": "<p>Looking forward to Brother's complete code, which will help me learn more</p>",
      "rawMarkdown": "Looking forward to Brother's complete code, which will help me learn more",
      "replies": [
        {
          "id": 3117371,
          "postDate": "2025-02-06T23:28:06.767Z",
          "content": "<p>Sorry, I do not have plan to open source the code</p>",
          "rawMarkdown": "Sorry, I do not have plan to open source the code"
        }
      ]
    },
    {
      "id": 3116494,
      "postDate": "2025-02-06T03:03:07.807Z",
      "content": "<p>Congrats. </p>\n<p>different algos: \"denoised\", \"wbp\", \"ctfdeconvolved\", \"isonetcorrected\" I didn't even thought in that. Good point.</p>",
      "rawMarkdown": "Congrats. \n\ndifferent algos: \"denoised\", \"wbp\", \"ctfdeconvolved\", \"isonetcorrected\" I didn't even thought in that. Good point."
    },
    {
      "id": 3116491,
      "postDate": "2025-02-06T02:56:50.767Z",
      "content": "<p>Congratulations on winning the gold medal! It's impressive that you achieved comparable results to our seven-model ensemble using only four models. Could you kindly share the public and private scores for each of your models?</p>",
      "rawMarkdown": "Congratulations on winning the gold medal! It's impressive that you achieved comparable results to our seven-model ensemble using only four models. Could you kindly share the public and private scores for each of your models?",
      "replies": [
        {
          "id": 3116504,
          "postDate": "2025-02-06T03:18:57.740Z",
          "content": "<p>There is one model which has 0.773 public, 0.770 private.</p>",
          "rawMarkdown": "There is one model which has 0.773 public, 0.770 private.",
          "votes": 3
        }
      ]
    },
    {
      "id": 3116486,
      "postDate": "2025-02-06T02:50:48.007Z",
      "content": "<p>Congrats on the great performance! And thanks for sharing the great solution. <br>\nWhat kind of radius did you use to create the segmentation masks?</p>",
      "rawMarkdown": "Congrats on the great performance! And thanks for sharing the great solution. \nWhat kind of radius did you use to create the segmentation masks?",
      "replies": [
        {
          "id": 3116490,
          "postDate": "2025-02-06T02:55:32.790Z",
          "content": "<p>half of the original</p>",
          "rawMarkdown": "half of the original",
          "votes": 1,
          "replies": [
            {
              "id": 3116598,
              "postDate": "2025-02-06T05:47:57.933Z",
              "content": "<p>how much time will it take to for compelete solution.Waiting for it .Thanks in adavance </p>",
              "rawMarkdown": "how much time will it take to for compelete solution.Waiting for it .Thanks in adavance "
            },
            {
              "id": 3116698,
              "postDate": "2025-02-06T08:18:54.463Z",
              "content": "<p>less than 4 hours to train the 7 folds of res101 with 4090</p>",
              "rawMarkdown": "less than 4 hours to train the 7 folds of res101 with 4090"
            }
          ]
        }
      ]
    },
    {
      "id": 3116704,
      "postDate": "2025-02-06T08:27:23.540Z",
      "rawMarkdown": "",
      "isDeleted": true
    },
    {
      "id": 3116578,
      "postDate": "2025-02-06T05:00:15.793Z",
      "rawMarkdown": "",
      "isDeleted": true,
      "replies": [
        {
          "id": 3116585,
          "postDate": "2025-02-06T05:14:58.757Z",
          "content": "<p>I copy EMA code from timm library</p>",
          "rawMarkdown": "I copy EMA code from timm library",
          "votes": 2
        }
      ]
    },
    {
      "id": 3116558,
      "postDate": "2025-02-06T04:26:11.517Z",
      "rawMarkdown": "",
      "isDeleted": true
    },
    {
      "id": 3116559,
      "postDate": "2025-02-06T04:26:11.517Z",
      "rawMarkdown": "",
      "isDeleted": true
    },
    {
      "id": 3116515,
      "postDate": "2025-02-06T03:33:24.127Z",
      "content": "<p>Congratulations.<br>\n老哥666</p>",
      "rawMarkdown": "Congratulations.\n老哥666"
    }
  ],
  "comments": [
    {
      "id": 3116536,
      "author_name": "Roc",
      "author_url": "",
      "post_date": "2025-02-06T04:01:16.997000",
      "content": "<p>Congratulations! Nice solution，simple and efficient!</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 3142227,
      "author_name": "Zacchaeus",
      "author_url": "",
      "post_date": "2025-03-06T08:15:33.030000",
      "content": "<p>Congrats! Wondering what GPU you used for training?</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3122396,
      "author_name": "Komalmahajan09",
      "author_url": "",
      "post_date": "2025-02-12T15:31:27.023000",
      "content": "<p>nice solution</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3122116,
      "author_name": "Rkumar03",
      "author_url": "",
      "post_date": "2025-02-12T09:41:46.417000",
      "content": "<p>nice and efficient solution</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3120976,
      "author_name": "Leo Yang",
      "author_url": "",
      "post_date": "2025-02-11T05:53:30.467000",
      "content": "<p>Hi, thank you very much for publishing the solution!</p>\n<p>As far as I am concerned, you \"train the model with input size (64, 128, 128), but inference with (64, 256, 256)\". May I ask <strong>what effect will it bring up to have different size for training and inference? How should we understand it in this situation</strong> ?</p>\n<p>Best<br>\nLeo</p>",
      "votes": 0,
      "replies": [
        {
          "id": 3120988,
          "author_name": "soso",
          "author_url": "",
          "post_date": "2025-02-11T06:07:09.167000",
          "content": "<p>Because it worked in public LB. <br>\nI think when  split it with small patch there will be more border pixels which is hard for the model to predict!</p>",
          "votes": 0,
          "replies": [
            {
              "id": 3121786,
              "author_name": "Leo Yang",
              "author_url": "",
              "post_date": "2025-02-12T00:51:19.330000",
              "content": "<p>Thanks for replying. I am very interested by this case. May I ask more questions?</p>\n<p>Supposed we change the input size for inference, will the results be affected in a bad way? <br>\nFor example, what if we input a 2048*2048 pixel resolution image, Can it still segmentation correctly ? </p>",
              "votes": 0,
              "replies": []
            },
            {
              "id": 3121813,
              "author_name": "soso",
              "author_url": "",
              "post_date": "2025-02-12T01:54:02.697000",
              "content": "<ol>\n<li>with bigger input size in inference, it have bigger difference compare to train, this should decrease performance. Remember for a convolution models the receptive field is fixed, when input size bigger than receptive field, there should be no more decrease.</li>\n<li>with bigger input size, you get more context information, this should increase the performance. Same as above about the receptive field</li>\n<li>with bigger input size, you have less border pixels, this should increase the performance</li>\n</ol>\n<p>So there must be some balance.</p>",
              "votes": 0,
              "replies": []
            },
            {
              "id": 3121834,
              "author_name": "Leo Yang",
              "author_url": "",
              "post_date": "2025-02-12T02:35:05.080000",
              "content": "<p>thx! I will take something to digest these insights.</p>",
              "votes": 0,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 3120405,
      "author_name": "",
      "author_url": "",
      "post_date": "2025-02-10T13:44:14.970000",
      "content": "<p>Nice and effficient solution</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3116967,
      "author_name": "Ma Edward",
      "author_url": "",
      "post_date": "2025-02-06T13:31:35.110000",
      "content": "<p>Would you mind sharing the single model performance in the final four models?</p>",
      "votes": 0,
      "replies": [
        {
          "id": 3117366,
          "author_name": "soso",
          "author_url": "",
          "post_date": "2025-02-06T23:09:35.847000",
          "content": "<p><a href=\"https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/561417#3116504\" target=\"_blank\">https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/561417#3116504</a></p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 3116856,
      "author_name": "",
      "author_url": "",
      "post_date": "2025-02-06T11:31:00.357000",
      "content": "<p>Nice and effficient solution</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3116750,
      "author_name": "Sinan Calisir",
      "author_url": "",
      "post_date": "2025-02-06T09:12:59.640000",
      "content": "<p>Huge congrats! Are you planning to share your final code as well? </p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3116675,
      "author_name": "Success Moses",
      "author_url": "",
      "post_date": "2025-02-06T07:35:26.630000",
      "content": "<p>Hi! Congratulations on your results, especially considering the fact that you did not use the external dataset provided by the host. It would very helpful if you could provided the training code you used to train the model. Thanks!!</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3116561,
      "author_name": "Dive Deeper",
      "author_url": "",
      "post_date": "2025-02-06T04:27:32.693000",
      "content": "<p>Congrats <a href=\"https://www.kaggle.com/tangtang1999\" target=\"_blank\">@tangtang1999</a>. May I know the improvement of using heavy augmentation like different algo, mixup and copypaste?</p>",
      "votes": 0,
      "replies": [
        {
          "id": 3116709,
          "author_name": "soso",
          "author_url": "",
          "post_date": "2025-02-06T08:38:29.907000",
          "content": "<p>Unfortunately I did not find the logs(When have too much logs, notebook will become too slow, I deleted some logs 😅).<br>\nWhat I remember is:</p>\n<ol>\n<li>When I increase aug algo prob from 0.5 to 0.75 it did not give me better CV</li>\n<li>For copy past and mixup both did not improve CV but improve public LB. I only submit one fold(5KF for early experiment), because I am a lazy people</li>\n<li>For others I do not remember the number but I only keep when have better CV.</li>\n</ol>\n<p>Remember for this competition we have too less training data, so we can not always trust the local CV</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 3116519,
      "author_name": "Switch9527",
      "author_url": "",
      "post_date": "2025-02-06T03:37:44.937000",
      "content": "<p>Looking forward to Brother's complete code, which will help me learn more</p>",
      "votes": 0,
      "replies": [
        {
          "id": 3117371,
          "author_name": "soso",
          "author_url": "",
          "post_date": "2025-02-06T23:28:06.767000",
          "content": "<p>Sorry, I do not have plan to open source the code</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 3116494,
      "author_name": "Ángel Jacinto Sánchez Ruiz",
      "author_url": "",
      "post_date": "2025-02-06T03:03:07.807000",
      "content": "<p>Congrats. </p>\n<p>different algos: \"denoised\", \"wbp\", \"ctfdeconvolved\", \"isonetcorrected\" I didn't even thought in that. Good point.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3116491,
      "author_name": "AnnieGo",
      "author_url": "",
      "post_date": "2025-02-06T02:56:50.767000",
      "content": "<p>Congratulations on winning the gold medal! It's impressive that you achieved comparable results to our seven-model ensemble using only four models. Could you kindly share the public and private scores for each of your models?</p>",
      "votes": 0,
      "replies": [
        {
          "id": 3116504,
          "author_name": "soso",
          "author_url": "",
          "post_date": "2025-02-06T03:18:57.740000",
          "content": "<p>There is one model which has 0.773 public, 0.770 private.</p>",
          "votes": 3,
          "replies": []
        }
      ]
    },
    {
      "id": 3116486,
      "author_name": "Ma Edward",
      "author_url": "",
      "post_date": "2025-02-06T02:50:48.007000",
      "content": "<p>Congrats on the great performance! And thanks for sharing the great solution. <br>\nWhat kind of radius did you use to create the segmentation masks?</p>",
      "votes": 0,
      "replies": [
        {
          "id": 3116490,
          "author_name": "soso",
          "author_url": "",
          "post_date": "2025-02-06T02:55:32.790000",
          "content": "<p>half of the original</p>",
          "votes": 1,
          "replies": [
            {
              "id": 3116598,
              "author_name": "",
              "author_url": "",
              "post_date": "2025-02-06T05:47:57.933000",
              "content": "<p>how much time will it take to for compelete solution.Waiting for it .Thanks in adavance </p>",
              "votes": 0,
              "replies": []
            },
            {
              "id": 3116698,
              "author_name": "soso",
              "author_url": "",
              "post_date": "2025-02-06T08:18:54.463000",
              "content": "<p>less than 4 hours to train the 7 folds of res101 with 4090</p>",
              "votes": 0,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 3116704,
      "author_name": "",
      "author_url": "",
      "post_date": "2025-02-06T08:27:23.540000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3116578,
      "author_name": "",
      "author_url": "",
      "post_date": "2025-02-06T05:00:15.793000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 3116585,
          "author_name": "soso",
          "author_url": "",
          "post_date": "2025-02-06T05:14:58.757000",
          "content": "<p>I copy EMA code from timm library</p>",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 3116558,
      "author_name": "",
      "author_url": "",
      "post_date": "2025-02-06T04:26:11.517000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3116559,
      "author_name": "",
      "author_url": "",
      "post_date": "2025-02-06T04:26:11.517000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3116515,
      "author_name": "Switch9527",
      "author_url": "",
      "post_date": "2025-02-06T03:33:24.127000",
      "content": "<p>Congratulations.<br>\n老哥666</p>",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "3116482": "\nThanks kaggle&host for this interesting competition. \nWhat I like for this competition is that the host give out a baseline(especially for data processing), it is very helpful for people like me who has no knowledge with this domain.\nAnother reason I join this competition was that I want to writing training code based on the library accelerate(I use pure pytorch before). \nSince I am on the top, I will think there is no critical bug in my training code.\n\n\n# Summary\nBefore I start this competition I thought it was a OD task not a segmentation task untile @hengck23 publish his good [notebook](https://www.kaggle.com/code/hengck23/3d-unet-using-2d-image-encoder).\nMy solution is based on 3D unet with post processing using cc3d. Cross Entropy loss is used with all the 7 particles.\nMy best solution is 4 fold(7 KF) average ensemble of backbone res101.\n\nOne thing I want to mention is that my best solution has same score(0.783) on both Public and Private LB.\n\n# models\nI use the code from [segmentation_models_pytorch_3d](https://github.com/ZFTurbo/segmentation_models_pytorch_3d).\nThe best solution is Unet + resnet101.\nI also try different architecture with different backbones, but unet+resnet101 is the best on public LB.\nI did not dig much of the code, so mostly default parameters was used for these models.\n\n# train\n\nI use EMA because it is easier to handle than SWA, although I remember there is saying SWA is better than EMA.\nI train the model with input size (64, 128, 128), but inference with (64, 256, 256), which give 0.001 improvement on public LB.\nI use half of the original radius during training, considering how the evaluation score is calculated, which is also best based on my experiment.\n\n# Augmentation\nIt is obvious data augmentation will help a lot for this competition considering the rare data we have.\nWhat I used:\n- flip on axis x, y, z\n- switch axis x and y\n- different algos: \"denoised\", \"wbp\", \"ctfdeconvolved\", \"isonetcorrected\n- simple copy past\n- mixup\n\n# TTA\n2 tta was used, output is averaged with original:\n- flip x, y, z\n- rot90 for x, y\n  \n# ensemble\n- 4 fold of 7KF average ensemble\n\n# Failures\n- Try to pretrain on the external data provided by host\n- ensemble unet with different backbone like resnet34 and resnet10",
    "3116536": "Congratulations! Nice solution，simple and efficient!\n",
    "3142227": "Congrats! Wondering what GPU you used for training?",
    "3122396": "nice solution",
    "3122116": "nice and efficient solution",
    "3120976": "Hi, thank you very much for publishing the solution!\n\nAs far as I am concerned, you \"train the model with input size (64, 128, 128), but inference with (64, 256, 256)\". May I ask **what effect will it bring up to have different size for training and inference? How should we understand it in this situation** ?\n\nBest\nLeo",
    "3120405": "Nice and effficient solution\n",
    "3116967": "Would you mind sharing the single model performance in the final four models?",
    "3116856": "Nice and effficient solution",
    "3116750": "Huge congrats! Are you planning to share your final code as well? ",
    "3116675": "Hi! Congratulations on your results, especially considering the fact that you did not use the external dataset provided by the host. It would very helpful if you could provided the training code you used to train the model. Thanks!!",
    "3116561": "Congrats @tangtang1999. May I know the improvement of using heavy augmentation like different algo, mixup and copypaste?",
    "3116519": "Looking forward to Brother's complete code, which will help me learn more",
    "3116494": "Congrats. \n\ndifferent algos: \"denoised\", \"wbp\", \"ctfdeconvolved\", \"isonetcorrected\" I didn't even thought in that. Good point.",
    "3116491": "Congratulations on winning the gold medal! It's impressive that you achieved comparable results to our seven-model ensemble using only four models. Could you kindly share the public and private scores for each of your models?",
    "3116486": "Congrats on the great performance! And thanks for sharing the great solution. \nWhat kind of radius did you use to create the segmentation masks?",
    "3116704": "",
    "3116578": "",
    "3116558": "",
    "3116559": "",
    "3116515": "Congratulations.\n老哥666"
  }
}