{
  "id": 561405,
  "title": "62th Solution: 5.19 MB ResNet18 2D to 3D UNet , 0.740/0.735",
  "url": "/competitions/czii-cryo-et-object-identification/writeups/int-object-is-not-iterable-62th-solution-5-19-mb-r",
  "author_name": "",
  "post_date": "2025-02-06T02:18:46.277Z",
  "votes": 17,
  "comment_count": 3,
  "views": 0,
  "content": "<p><strong>References</strong></p>\n<p><a href=\"https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/545221\" target=\"_blank\">[lb0.748] experiment resuts on cyroET foundation model build with synthetic data</a></p>\n<p><a href=\"https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/547350\" target=\"_blank\">if you are stuck below the benchmark.csv, read this!</a></p>\n<p><a href=\"https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/555247\" target=\"_blank\">Has Anyone Been Successful With Anything But Denoised Data?</a></p>\n<p><a href=\"https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/556103\" target=\"_blank\">Does anyone have results with the 10441 external dataset works?</a></p>\n<p>Thanks to autors for their insights.</p>\n<p><a href=\"https://www.kaggle.com/code/sacuscreed/czii-2dto3d-exp\" target=\"_blank\"><strong>Training</strong></a></p>\n<p>7 fold CV with experimental data only (0.808)</p>\n<p>Normalization between 1 and 99 percentiles</p>\n<p>64x128x128 voxels with hard masks at .5 particle radius</p>\n<p>Augmentations: yz Rot90, contrast, brigthness and yz flips</p>\n<p>Loss: Unweighted <a href=\"https://github.com/shuaizzZ/Dice-Loss-PyTorch/blob/master/dice_loss.py\" target=\"_blank\">Zhang Shuai</a> Dice Loss. It has a small bug on weights implementation (the multiplication should be outside dtype check). </p>\n<p>This initially led to 0.741/0.733, one more epoch of <a href=\"https://www.kaggle.com/code/sacuscreed/czii-2dto3d-ft\" target=\"_blank\">fine tune</a> with weights [2,1,2,1,2,1] led to 0.740/0.735 (I'm not sure what to think about that)</p>\n<p><a href=\"https://www.kaggle.com/code/sacuscreed/czii-submission-2dto3d\" target=\"_blank\"><strong>Inference</strong></a></p>\n<p>A rotatory scan through the seven folds of 64x640x640 voxels each 16 slices so overlaps get 1,2,3,4,4,3,2,1 different rotation readings.</p>\n<p><strong>What didn't worked</strong></p>\n<p><a href=\"https://www.kaggle.com/code/sacuscreed/czii-2d-to-3d-synthetic-data-pretraining\" target=\"_blank\">Synthetic data</a></p>\n<p><a href=\"https://www.kaggle.com/code/sacuscreed/czii-synth-denoiset\" target=\"_blank\">Denoise synthetic data</a> by training DenoisET that feeds freezed models already trained on experimental data.</p>\n<p><a href=\"https://www.kaggle.com/code/sacuscreed/czii-realmask-2dto3d-synth\" target=\"_blank\">Synthetic denoised data with real masks</a></p>\n<p><a href=\"https://www.kaggle.com/code/sacuscreed/czii-2d-to-3d-homemade-data-training\" target=\"_blank\">Home made</a> data by folding different small voxels into a bigger one masking inter-voxel particles</p>\n<p>Augmentations: Fliping z or omelette rotation and free yz rotations</p>\n<p>Pseudo relabel some false positives as positives trying to emulate beta at same time than correct possible wrong annotations</p>\n<p>Post processing: Filter by voxel_counts or discriminate false positves</p>\n<p><a href=\"https://www.kaggle.com/code/sacuscreed/translating-metric-into-a-loss\" target=\"_blank\">Try to emulate F-Beta metric in loss</a></p>\n<p><strong>Final Curiosity</strong></p>\n<p>I knew the data was already highly standardized, but that surprised me.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8722753%2Febebff60b5fa6262a84b8ec226e3d2ec%2F8825c21d-308d-4322-8878-41a5b3c33439.png?generation=1738803362204041&amp;alt=media\" alt=\"\"></p>",
  "messages": [
    {
      "id": "3116441",
      "postDate": "02/06/2025 00:56:12",
      "content": "<p><strong>References</strong></p>\n<p><a href=\"https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/545221\" target=\"_blank\">[lb0.748] experiment resuts on cyroET foundation model build with synthetic data</a></p>\n<p><a href=\"https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/547350\" target=\"_blank\">if you are stuck below the benchmark.csv, read this!</a></p>\n<p><a href=\"https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/555247\" target=\"_blank\">Has Anyone Been Successful With Anything But Denoised Data?</a></p>\n<p><a href=\"https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/556103\" target=\"_blank\">Does anyone have results with the 10441 external dataset works?</a></p>\n<p>Thanks to autors for their insights.</p>\n<p><a href=\"https://www.kaggle.com/code/sacuscreed/czii-2dto3d-exp\" target=\"_blank\"><strong>Training</strong></a></p>\n<p>7 fold CV with experimental data only (0.808)</p>\n<p>Normalization between 1 and 99 percentiles</p>\n<p>64x128x128 voxels with hard masks at .5 particle radius</p>\n<p>Augmentations: yz Rot90, contrast, brigthness and yz flips</p>\n<p>Loss: Unweighted <a href=\"https://github.com/shuaizzZ/Dice-Loss-PyTorch/blob/master/dice_loss.py\" target=\"_blank\">Zhang Shuai</a> Dice Loss. It has a small bug on weights implementation (the multiplication should be outside dtype check). </p>\n<p>This initially led to 0.741/0.733, one more epoch of <a href=\"https://www.kaggle.com/code/sacuscreed/czii-2dto3d-ft\" target=\"_blank\">fine tune</a> with weights [2,1,2,1,2,1] led to 0.740/0.735 (I'm not sure what to think about that)</p>\n<p><a href=\"https://www.kaggle.com/code/sacuscreed/czii-submission-2dto3d\" target=\"_blank\"><strong>Inference</strong></a></p>\n<p>A rotatory scan through the seven folds of 64x640x640 voxels each 16 slices so overlaps get 1,2,3,4,4,3,2,1 different rotation readings.</p>\n<p><strong>What didn't worked</strong></p>\n<p><a href=\"https://www.kaggle.com/code/sacuscreed/czii-2d-to-3d-synthetic-data-pretraining\" target=\"_blank\">Synthetic data</a></p>\n<p><a href=\"https://www.kaggle.com/code/sacuscreed/czii-synth-denoiset\" target=\"_blank\">Denoise synthetic data</a> by training DenoisET that feeds freezed models already trained on experimental data.</p>\n<p><a href=\"https://www.kaggle.com/code/sacuscreed/czii-realmask-2dto3d-synth\" target=\"_blank\">Synthetic denoised data with real masks</a></p>\n<p><a href=\"https://www.kaggle.com/code/sacuscreed/czii-2d-to-3d-homemade-data-training\" target=\"_blank\">Home made</a> data by folding different small voxels into a bigger one masking inter-voxel particles</p>\n<p>Augmentations: Fliping z or omelette rotation and free yz rotations</p>\n<p>Pseudo relabel some false positives as positives trying to emulate beta at same time than correct possible wrong annotations</p>\n<p>Post processing: Filter by voxel_counts or discriminate false positves</p>\n<p><a href=\"https://www.kaggle.com/code/sacuscreed/translating-metric-into-a-loss\" target=\"_blank\">Try to emulate F-Beta metric in loss</a></p>\n<p><strong>Final Curiosity</strong></p>\n<p>I knew the data was already highly standardized, but that surprised me.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8722753%2Febebff60b5fa6262a84b8ec226e3d2ec%2F8825c21d-308d-4322-8878-41a5b3c33439.png?generation=1738803362204041&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "**References**\n\n[[lb0.748] experiment resuts on cyroET foundation model build with synthetic data](https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/545221)\n\n[if you are stuck below the benchmark.csv, read this!](https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/547350)\n\n[Has Anyone Been Successful With Anything But Denoised Data?](https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/555247)\n\n[Does anyone have results with the 10441 external dataset works?](https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/556103)\n\nThanks to autors for their insights.\n\n[**Training**](https://www.kaggle.com/code/sacuscreed/czii-2dto3d-exp)\n\n7 fold CV with experimental data only (0.808)\n\nNormalization between 1 and 99 percentiles\n\n64x128x128 voxels with hard masks at .5 particle radius\n\nAugmentations: yz Rot90, contrast, brigthness and yz flips\n\nLoss: Unweighted [Zhang Shuai](https://github.com/shuaizzZ/Dice-Loss-PyTorch/blob/master/dice_loss.py) Dice Loss. It has a small bug on weights implementation (the multiplication should be outside dtype check). \n\nThis initially led to 0.741/0.733, one more epoch of [fine tune](https://www.kaggle.com/code/sacuscreed/czii-2dto3d-ft) with weights [2,1,2,1,2,1] led to 0.740/0.735 (I'm not sure what to think about that)\n\n[**Inference**](https://www.kaggle.com/code/sacuscreed/czii-submission-2dto3d)\n\nA rotatory scan through the seven folds of 64x640x640 voxels each 16 slices so overlaps get 1,2,3,4,4,3,2,1 different rotation readings.\n\n**What didn't worked**\n\n[Synthetic data](https://www.kaggle.com/code/sacuscreed/czii-2d-to-3d-synthetic-data-pretraining)\n\n[Denoise synthetic data](https://www.kaggle.com/code/sacuscreed/czii-synth-denoiset) by training DenoisET that feeds freezed models already trained on experimental data.\n\n[Synthetic denoised data with real masks](https://www.kaggle.com/code/sacuscreed/czii-realmask-2dto3d-synth)\n\n[Home made](https://www.kaggle.com/code/sacuscreed/czii-2d-to-3d-homemade-data-training) data by folding different small voxels into a bigger one masking inter-voxel particles\n\nAugmentations: Fliping z or omelette rotation and free yz rotations\n\nPseudo relabel some false positives as positives trying to emulate beta at same time than correct possible wrong annotations\n\nPost processing: Filter by voxel_counts or discriminate false positves\n\n[Try to emulate F-Beta metric in loss](https://www.kaggle.com/code/sacuscreed/translating-metric-into-a-loss)\n\n**Final Curiosity**\n\nI knew the data was already highly standardized, but that surprised me.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8722753%2Febebff60b5fa6262a84b8ec226e3d2ec%2F8825c21d-308d-4322-8878-41a5b3c33439.png?generation=1738803362204041&alt=media)",
      "votes": null
    },
    {
      "id": "3116744",
      "postDate": "02/06/2025 09:08:20",
      "content": "<p>Congratulations! We couldn't get any benefit from synthetic data too. </p>",
      "rawMarkdown": "Congratulations! We couldn't get any benefit from synthetic data too.",
      "votes": null
    },
    {
      "id": "3116869",
      "postDate": "02/06/2025 11:50:01",
      "content": "<p>Did you used 3D encoders? I've seen many teams that got profit with synthetic with 3D UNets  May was that the difference.</p>",
      "rawMarkdown": "Did you used 3D encoders? I've seen many teams that got profit with synthetic with 3D UNets  May was that the difference.",
      "votes": null
    },
    {
      "id": "3116896",
      "postDate": "02/06/2025 12:21:20",
      "content": "<p>Yes, we used 3D unets from monai. I am not sure either but maybe it was due to our setup. </p>",
      "rawMarkdown": "Yes, we used 3D unets from monai. I am not sure either but maybe it was due to our setup.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 3116744,
      "author_name": "snnclsr",
      "author_url": "",
      "post_date": "02/06/2025 09:08:20",
      "content": "<p>Congratulations! We couldn't get any benefit from synthetic data too. </p>",
      "votes": null,
      "replies": [
        {
          "id": 3116869,
          "author_name": "sacuscreed",
          "author_url": "",
          "post_date": "02/06/2025 11:50:01",
          "content": "<p>Did you used 3D encoders? I've seen many teams that got profit with synthetic with 3D UNets  May was that the difference.</p>",
          "votes": null,
          "replies": [
            {
              "id": 3116896,
              "author_name": "snnclsr",
              "author_url": "",
              "post_date": "02/06/2025 12:21:20",
              "content": "<p>Yes, we used 3D unets from monai. I am not sure either but maybe it was due to our setup. </p>",
              "votes": null,
              "replies": []
            }
          ]
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "3116441": "**References**\n\n[[lb0.748] experiment resuts on cyroET foundation model build with synthetic data](https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/545221)\n\n[if you are stuck below the benchmark.csv, read this!](https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/547350)\n\n[Has Anyone Been Successful With Anything But Denoised Data?](https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/555247)\n\n[Does anyone have results with the 10441 external dataset works?](https://www.kaggle.com/competitions/czii-cryo-et-object-identification/discussion/556103)\n\nThanks to autors for their insights.\n\n[**Training**](https://www.kaggle.com/code/sacuscreed/czii-2dto3d-exp)\n\n7 fold CV with experimental data only (0.808)\n\nNormalization between 1 and 99 percentiles\n\n64x128x128 voxels with hard masks at .5 particle radius\n\nAugmentations: yz Rot90, contrast, brigthness and yz flips\n\nLoss: Unweighted [Zhang Shuai](https://github.com/shuaizzZ/Dice-Loss-PyTorch/blob/master/dice_loss.py) Dice Loss. It has a small bug on weights implementation (the multiplication should be outside dtype check). \n\nThis initially led to 0.741/0.733, one more epoch of [fine tune](https://www.kaggle.com/code/sacuscreed/czii-2dto3d-ft) with weights [2,1,2,1,2,1] led to 0.740/0.735 (I'm not sure what to think about that)\n\n[**Inference**](https://www.kaggle.com/code/sacuscreed/czii-submission-2dto3d)\n\nA rotatory scan through the seven folds of 64x640x640 voxels each 16 slices so overlaps get 1,2,3,4,4,3,2,1 different rotation readings.\n\n**What didn't worked**\n\n[Synthetic data](https://www.kaggle.com/code/sacuscreed/czii-2d-to-3d-synthetic-data-pretraining)\n\n[Denoise synthetic data](https://www.kaggle.com/code/sacuscreed/czii-synth-denoiset) by training DenoisET that feeds freezed models already trained on experimental data.\n\n[Synthetic denoised data with real masks](https://www.kaggle.com/code/sacuscreed/czii-realmask-2dto3d-synth)\n\n[Home made](https://www.kaggle.com/code/sacuscreed/czii-2d-to-3d-homemade-data-training) data by folding different small voxels into a bigger one masking inter-voxel particles\n\nAugmentations: Fliping z or omelette rotation and free yz rotations\n\nPseudo relabel some false positives as positives trying to emulate beta at same time than correct possible wrong annotations\n\nPost processing: Filter by voxel_counts or discriminate false positves\n\n[Try to emulate F-Beta metric in loss](https://www.kaggle.com/code/sacuscreed/translating-metric-into-a-loss)\n\n**Final Curiosity**\n\nI knew the data was already highly standardized, but that surprised me.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8722753%2Febebff60b5fa6262a84b8ec226e3d2ec%2F8825c21d-308d-4322-8878-41a5b3c33439.png?generation=1738803362204041&alt=media)",
    "3116744": "Congratulations! We couldn't get any benefit from synthetic data too.",
    "3116869": "Did you used 3D encoders? I've seen many teams that got profit with synthetic with 3D UNets  May was that the difference.",
    "3116896": "Yes, we used 3D unets from monai. I am not sure either but maybe it was due to our setup."
  },
  "source": "meta"
}