{
  "id": 456118,
  "title": "[lb0.870 !!!] experiment results, hopefully open gold solution till 21-jan-2024",
  "url": "/competitions/blood-vessel-segmentation/discussion/456118",
  "author_name": "hengck23",
  "post_date": "2023-11-18T05:54:29.641000",
  "votes": 122,
  "comment_count": 215,
  "views": 0,
  "content": "<p>more to come later ‎‏…. ㅤㅤㅤㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ㅤ ㅤㅤㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ‎‏</p>\n<p>🦟 nov-21:</p>\n<ul>\n<li>a simple baseline notebook to check reading of images and model inferenceㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ㅤ<br>\n<a href=\"https://www.kaggle.com/code/hengck23/lb0-534-baseline-simple-unet-seresnext26d-32x4\" target=\"_blank\">https://www.kaggle.com/code/hengck23/lb0-534-baseline-simple-unet-seresnext26d-32x4</a></li>\n</ul>\n<p>🦟 nov-28:</p>\n<ul>\n<li>advanced baseline with more augmentation and 3d post-processing ㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ㅤ<br>\n<a href=\"https://www.kaggle.com/code/hengck23/lb0-808-resnet50-cc3d2d-unet-xy-zy-zx-cc3d\" target=\"_blank\">https://www.kaggle.com/code/hengck23/lb0-808-resnet50-cc3d2d-unet-xy-zy-zx-cc3d</a></li>\n<li>this concluded my one-week feasibility study:<ul>\n<li>estimated upperbound: lb 0.93</li>\n<li>identified key problems: miss (broken large vessels, missing small vessels), fp (noise, sometimes out of kidney volume)</li>\n<li>solutions: multiscale and 3d model (i think 3d transformer/hybrid/cnn should work well, need long range attention)</li></ul></li>\n</ul>\n<p>i am obviously? overfitting the public LB data …</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F9d2a1890f2fb71476d7f68beb7c6bbfe%2FSelection_999(4173).png?generation=1701417195707587&amp;alt=media\" alt=\"\"></p>\n<hr>\n<p>here is a visualization of the target vessel we are segmenting:<br>\n <img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fb10649f7ef86cac4a3a7fd5b8d72126d%2FSelection_999(4053).png?generation=1700993033873139&amp;alt=media\" alt=\"\"></p>\n<p>obviously, 3d segmentation will get better results. you probably can't just rely on deep net, and need some very smart 3d image post processing to win.</p>",
  "messages": [
    {
      "id": 2529318,
      "postDate": "2023-11-18T05:54:29.643Z",
      "content": "<p>more to come later ‎‏…. ㅤㅤㅤㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ㅤ ㅤㅤㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ‎‏</p>\n<p>🦟 nov-21:</p>\n<ul>\n<li>a simple baseline notebook to check reading of images and model inferenceㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ㅤ<br>\n<a href=\"https://www.kaggle.com/code/hengck23/lb0-534-baseline-simple-unet-seresnext26d-32x4\" target=\"_blank\">https://www.kaggle.com/code/hengck23/lb0-534-baseline-simple-unet-seresnext26d-32x4</a></li>\n</ul>\n<p>🦟 nov-28:</p>\n<ul>\n<li>advanced baseline with more augmentation and 3d post-processing ㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ㅤ<br>\n<a href=\"https://www.kaggle.com/code/hengck23/lb0-808-resnet50-cc3d2d-unet-xy-zy-zx-cc3d\" target=\"_blank\">https://www.kaggle.com/code/hengck23/lb0-808-resnet50-cc3d2d-unet-xy-zy-zx-cc3d</a></li>\n<li>this concluded my one-week feasibility study:<ul>\n<li>estimated upperbound: lb 0.93</li>\n<li>identified key problems: miss (broken large vessels, missing small vessels), fp (noise, sometimes out of kidney volume)</li>\n<li>solutions: multiscale and 3d model (i think 3d transformer/hybrid/cnn should work well, need long range attention)</li></ul></li>\n</ul>\n<p>i am obviously? overfitting the public LB data …</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F9d2a1890f2fb71476d7f68beb7c6bbfe%2FSelection_999(4173).png?generation=1701417195707587&amp;alt=media\" alt=\"\"></p>\n<hr>\n<p>here is a visualization of the target vessel we are segmenting:<br>\n <img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fb10649f7ef86cac4a3a7fd5b8d72126d%2FSelection_999(4053).png?generation=1700993033873139&amp;alt=media\" alt=\"\"></p>\n<p>obviously, 3d segmentation will get better results. you probably can't just rely on deep net, and need some very smart 3d image post processing to win.</p>",
      "rawMarkdown": "more to come later ‎‏.... ㅤㅤㅤㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ㅤ ㅤㅤㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ‎‏\n\n🦟 nov-21:\n- a simple baseline notebook to check reading of images and model inferenceㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ㅤ\nhttps://www.kaggle.com/code/hengck23/lb0-534-baseline-simple-unet-seresnext26d-32x4\n\n🦟 nov-28:\n- advanced baseline with more augmentation and 3d post-processing ㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ㅤ\nhttps://www.kaggle.com/code/hengck23/lb0-808-resnet50-cc3d2d-unet-xy-zy-zx-cc3d\n- this concluded my one-week feasibility study:\n   - estimated upperbound: lb 0.93\n   - identified key problems: miss (broken large vessels, missing small vessels), fp (noise, sometimes out of kidney volume)\n   - solutions: multiscale and 3d model (i think 3d transformer/hybrid/cnn should work well, need long range attention)\n\n\n\ni am obviously? overfitting the public LB data ...\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F9d2a1890f2fb71476d7f68beb7c6bbfe%2FSelection_999(4173).png?generation=1701417195707587&alt=media)\n\n\n---\n\nhere is a visualization of the target vessel we are segmenting:\n ![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fb10649f7ef86cac4a3a7fd5b8d72126d%2FSelection_999(4053).png?generation=1700993033873139&alt=media)\n\nobviously, 3d segmentation will get better results. you probably can't just rely on deep net, and need some very smart 3d image post processing to win.\n",
      "votes": 122
    },
    {
      "id": 2583472,
      "postDate": "2024-01-02T08:56:51.607Z",
      "content": "<p>i realize something important.<br>\ni checked the fast surface dice loss and i think we can directly optimize this loss in gradient descent!</p>\n<p>i) use 3 channel input and predict 3 channel output<br>\nii) refer to the fast surface dice code by <a href=\"https://www.kaggle.com/junkoda\" target=\"_blank\">@junkoda</a> . you can apply same marching cube algorithm (2x2x2) to compute soft surface dice loss</p>\n<p>instead of unfold 3d conv with 256 kernels may be slightly faster</p>\n<hr>\n<p>this may be important because i realize the reason for missing small vessel is annotation error (even for the 100% dense label, not all smallest vessel are annotated). this causes the following</p>\n<ol>\n<li>surface dice metric is fluctuating up and down during the training iteration</li>\n<li>3d, 2.5d results are poorer than pure 2d</li>\n<li>confidence for smallest vessel are the worst (because of inconsistent label). At first i thought is this because of the small area (since deep learning minimize BCE loss for largest area first), but then i think inconsistent label has a larger effect.</li>\n</ol>",
      "rawMarkdown": "i realize something important.\ni checked the fast surface dice loss and i think we can directly optimize this loss in gradient descent!\n\ni) use 3 channel input and predict 3 channel output\nii) refer to the fast surface dice code by @junkoda . you can apply same marching cube algorithm (2x2x2) to compute soft surface dice loss\n\ninstead of unfold 3d conv with 256 kernels may be slightly faster\n\n---\n\nthis may be important because i realize the reason for missing small vessel is annotation error (even for the 100% dense label, not all smallest vessel are annotated). this causes the following\n1. surface dice metric is fluctuating up and down during the training iteration\n2. 3d, 2.5d results are poorer than pure 2d\n3. confidence for smallest vessel are the worst (because of inconsistent label). At first i thought is this because of the small area (since deep learning minimize BCE loss for largest area first), but then i think inconsistent label has a larger effect.\n\n",
      "votes": 10,
      "replies": [
        {
          "id": 2583668,
          "postDate": "2024-01-02T11:35:28.340Z",
          "content": "<p>From my understanding the surface dice metric requires thresholding of predictions hence we cannot directly optimize it.<br>\nApplying the metric on probabilities does not seem to yield meaningful results but I did not dig very deeply nor look into the math.</p>",
          "rawMarkdown": "From my understanding the surface dice metric requires thresholding of predictions hence we cannot directly optimize it.\nApplying the metric on probabilities does not seem to yield meaningful results but I did not dig very deeply nor look into the math.",
          "replies": [
            {
              "id": 2584012,
              "postDate": "2024-01-02T16:26:24.097Z",
              "content": "<p>here is the trick:<br>\n(it works because we are using tolerance =0)</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Ffdd66c33bdd0f19d58d99d17f10ea6f2%2FSelection_999(4516).png?generation=1704212727502294&amp;alt=media\" alt=\"\"></p>\n<p>if tolerance is not zero, then we have to modify the softmax loss to KL divergence loss where the ground truth probabiliy = 1 - surface distance</p>",
              "rawMarkdown": "here is the trick:\n(it works because we are using tolerance =0)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Ffdd66c33bdd0f19d58d99d17f10ea6f2%2FSelection_999(4516).png?generation=1704212727502294&alt=media)\n\nif tolerance is not zero, then we have to modify the softmax loss to KL divergence loss where the ground truth probabiliy = 1 - surface distance",
              "votes": 3
            },
            {
              "id": 2584045,
              "postDate": "2024-01-02T16:39:31.320Z",
              "content": "<p>surface dice code</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F30564b4aee4a40bb179931f5e3eb4b0b%2FSelection_999(4517).png?generation=1704213554962565&amp;alt=media\" alt=\"\"></p>",
              "rawMarkdown": "surface dice code\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F30564b4aee4a40bb179931f5e3eb4b0b%2FSelection_999(4517).png?generation=1704213554962565&alt=media)",
              "votes": 3
            },
            {
              "id": 2584536,
              "postDate": "2024-01-03T02:53:58.090Z",
              "content": "<p>BCE is really a bad loss</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F36e00dcc86bbf8d48da4359f16e28de9%2FSelection_999(4519).png?generation=1704250434431272&amp;alt=media\" alt=\"\"></p>",
              "rawMarkdown": "BCE is really a bad loss\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F36e00dcc86bbf8d48da4359f16e28de9%2FSelection_999(4519).png?generation=1704250434431272&alt=media)",
              "votes": 2
            },
            {
              "id": 2584679,
              "postDate": "2024-01-03T05:41:01.507Z",
              "content": "<p>some other good boundary/surface loss from other papers:</p>\n<p>[1] Boundary loss for highly unbalanced segmentation<br>\n<a href=\"https://arxiv.org/pdf/1812.07032.pdf\" target=\"_blank\">https://arxiv.org/pdf/1812.07032.pdf</a><br>\n<a href=\"https://github.com/LIVIAETS/boundary-loss\" target=\"_blank\">https://github.com/LIVIAETS/boundary-loss</a></p>\n<p>[2] Boundary Difference Over Union Loss For Medical Image Segmentation<br>\n<a href=\"https://arxiv.org/pdf/2308.00220.pdf\" target=\"_blank\">https://arxiv.org/pdf/2308.00220.pdf</a><br>\n<a href=\"https://github.com/sunfan-bvb/BoundaryDoULoss\" target=\"_blank\">https://github.com/sunfan-bvb/BoundaryDoULoss</a></p>",
              "rawMarkdown": "some other good boundary/surface loss from other papers:\n\n[1] Boundary loss for highly unbalanced segmentation\nhttps://arxiv.org/pdf/1812.07032.pdf\nhttps://github.com/LIVIAETS/boundary-loss\n\n[2] Boundary Difference Over Union Loss For Medical Image Segmentation\nhttps://arxiv.org/pdf/2308.00220.pdf\nhttps://github.com/sunfan-bvb/BoundaryDoULoss",
              "votes": 3
            },
            {
              "id": 2584869,
              "postDate": "2024-01-03T08:10:56.550Z",
              "content": "<p>google new paper!!</p>\n<p>Boundary Attention: Learning to Find Faint Boundaries at Any Resolution<br>\n<a href=\"https://arxiv.org/pdf/2401.00935.pdf\" target=\"_blank\">https://arxiv.org/pdf/2401.00935.pdf</a></p>",
              "rawMarkdown": "google new paper!!\n\nBoundary Attention: Learning to Find Faint Boundaries at Any Resolution\nhttps://arxiv.org/pdf/2401.00935.pdf\n",
              "votes": 2
            },
            {
              "id": 2593073,
              "postDate": "2024-01-09T03:28:51.557Z",
              "content": "<p>Thanks for sharing, have you try  this loss （your surface dice code）, how effective was it?</p>",
              "rawMarkdown": "Thanks for sharing, have you try  this loss （your surface dice code）, how effective was it?"
            }
          ]
        }
      ]
    },
    {
      "id": 2537053,
      "postDate": "2023-11-24T17:39:09.587Z",
      "content": "<p>kidney mask dataset<br>\n<a href=\"https://www.kaggle.com/datasets/hengck23/blood-vessel-segmentation-kidney-mask\" target=\"_blank\">https://www.kaggle.com/datasets/hengck23/blood-vessel-segmentation-kidney-mask</a></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fbba65b5d04a0a7dbf4a797937bcbf624%2F0862.png?generation=1700847526884113&amp;alt=media\" alt=\"\"> <img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F87a1a0d4dd0605c9b9a4edfe22e1edea%2F0704.png?generation=1700847547606309&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "kidney mask dataset\nhttps://www.kaggle.com/datasets/hengck23/blood-vessel-segmentation-kidney-mask\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fbba65b5d04a0a7dbf4a797937bcbf624%2F0862.png?generation=1700847526884113&alt=media) ![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F87a1a0d4dd0605c9b9a4edfe22e1edea%2F0704.png?generation=1700847547606309&alt=media)",
      "votes": 9,
      "replies": [
        {
          "id": 2537345,
          "postDate": "2023-11-25T04:47:08.773Z",
          "content": "<p>Thanks for putting this together, I was just looking at doing something like this yesterday before getting pulled in to holiday shenanigans. I re-scaled the data back to the full image size, RLE encoded it, and saved it back to the training csv for anyone interested in using it without resizing on load: <a href=\"https://www.kaggle.com/datasets/squidinator/sennet-hoa-kidney-13-dense-full-kidney-masks\" target=\"_blank\">https://www.kaggle.com/datasets/squidinator/sennet-hoa-kidney-13-dense-full-kidney-masks</a></p>",
          "rawMarkdown": "Thanks for putting this together, I was just looking at doing something like this yesterday before getting pulled in to holiday shenanigans. I re-scaled the data back to the full image size, RLE encoded it, and saved it back to the training csv for anyone interested in using it without resizing on load: https://www.kaggle.com/datasets/squidinator/sennet-hoa-kidney-13-dense-full-kidney-masks",
          "votes": 2
        },
        {
          "id": 2537722,
          "postDate": "2023-11-25T12:40:51.590Z",
          "content": "<p>this is the code to get lb710+ using kidney mask</p>\n<pre><code>   vessel, kidney = 0,0\n        with torch.cuda.amp.autocast:\n            with torch.no_grad:\n                vm, km = net \n                vessel += vm\n                kidney += km\n\n                  TTA here \n\n        \n        vessel = vessel.float\n        kidney = kidney.float\n\n        _size = len\n        for b in range:\n            mk = kidney[b, 0]\n            mk = choose_biggest_object \n\n            mv = vessel[b, 0]\n            mv =  )\n            \n            p  =   \n            rle = rle_encode\n            df_data.append\n</code></pre>",
          "rawMarkdown": "this is the code to get lb710+ using kidney mask\n\n```\n   vessel, kidney = 0,0\n        with torch.cuda.amp.autocast(enabled=True):\n            with torch.no_grad():\n                vm, km = net(image) #net predict kidney and vessel mask\n                vessel += vm\n                kidney += km\n               \n                 ... TTA here ....\n \n        #print(i, image.shape, mask.shape)\n        vessel = vessel.float().data.cpu().numpy()\n        kidney = kidney.float().data.cpu().numpy()\n\n        batch_size = len(vessel)\n        for b in range(batch_size):\n            mk = kidney[b, 0]\n            mk = choose_biggest_object(mk, threshold=0.5) # return binary mask\n\n            mv = vessel[b, 0]\n            mv = ((mv > 0.10) ).astype(np.float32)\n            # mv = remove_small_objects(mv, min_size=8, threshold=0.1) #this now is not required because next line already remove false positive\n            p  = (mv*mk).astype(np.uint8)  \n            rle = rle_encode(p)\n            df_data.append({\n                'id': batch['id'][b],\n                'rle':rle,\n            })\n\n\n```",
          "votes": 2,
          "replies": [
            {
              "id": 2538038,
              "postDate": "2023-11-25T18:04:27.380Z",
              "content": "<p>What is TTA?</p>",
              "rawMarkdown": "What is TTA?"
            },
            {
              "id": 2538656,
              "postDate": "2023-11-26T10:56:20.430Z",
              "content": "<p>TTA is Test Time Augmentation. Best summary is in this paper: <a href=\"https://arxiv.org/abs/2011.11156\" target=\"_blank\">Better Aggregation in Test-Time Augmentation</a></p>\n<blockquote>\n  <p>Test-time augmentation -- the aggregation of predictions across transformed versions of a test input</p>\n</blockquote>\n<p>TL;DR: Make N augmentations of incoming test data and then combine them (e.g. taking average of the N outputs) to output the final results. It reduces variance in model output.</p>",
              "rawMarkdown": "TTA is Test Time Augmentation. Best summary is in this paper: [Better Aggregation in Test-Time Augmentation](https://arxiv.org/abs/2011.11156)\n\n> Test-time augmentation -- the aggregation of predictions across transformed versions of a test input\n\nTL;DR: Make N augmentations of incoming test data and then combine them (e.g. taking average of the N outputs) to output the final results. It reduces variance in model output."
            }
          ]
        },
        {
          "id": 2538673,
          "postDate": "2023-11-26T11:26:38.900Z",
          "content": "<p>Can you please explain this a bit? What are these masks for? In the train datasets, don't we already have dense masks for kidney 1 &amp; 3? Please excuse me if this is mundane. I'm just starting out.</p>",
          "rawMarkdown": "Can you please explain this a bit? What are these masks for? In the train datasets, don't we already have dense masks for kidney 1 & 3? Please excuse me if this is mundane. I'm just starting out.",
          "votes": 1
        },
        {
          "id": 2544657,
          "postDate": "2023-12-01T02:18:16.403Z",
          "content": "<p>Thanks for Sharing. How you create this kidney mask dataset？</p>",
          "rawMarkdown": "Thanks for Sharing. How you create this kidney mask dataset？",
          "votes": 1
        }
      ]
    },
    {
      "id": 2568510,
      "postDate": "2023-12-20T15:35:22.913Z",
      "content": "<p>20-dec:</p>\n<p>recepie for LB 0.848</p>\n<ul>\n<li>use transformer  (e.g. nextVIT base)</li>\n<li>use train =  kidney1/dense + kidney3/dense</li>\n<li>use validate = kidney2 </li>\n<li>just normal unet2d (with a additional encoder layer for H,W and H/2,w/2)</li>\n<li>infer with the usual xy,zx,zy + 5 TTA</li>\n</ul>\n<p>details at  the other posts below ….</p>\n<hr>\n<p>i am surprised that it can get LB 0.862 by training for long iterations (but CV does not reflect the change … maybe because of wrong annotation on kidney2 and the segmentation sparsity (i.e. incomplete label)</p>\n<p>i.e. there is probably no reliable local validation set in this competition</p>",
      "rawMarkdown": "20-dec:\n\nrecepie for LB 0.848\n- use transformer  (e.g. nextVIT base)\n- use train =  kidney1/dense + kidney3/dense\n- use validate = kidney2 \n- just normal unet2d (with a additional encoder layer for H,W and H/2,w/2)\n- infer with the usual xy,zx,zy + 5 TTA\n\ndetails at  the other posts below ....\n\n---\n\ni am surprised that it can get LB 0.862 by training for long iterations (but CV does not reflect the change ... maybe because of wrong annotation on kidney2 and the segmentation sparsity (i.e. incomplete label)\n\ni.e. there is probably no reliable local validation set in this competition",
      "votes": 7,
      "replies": [
        {
          "id": 2568889,
          "postDate": "2023-12-21T00:10:57.317Z",
          "content": "<p>maybe i missed it, but any reason just normal unet2d would be suffice? any thoughts on 3D approach?</p>",
          "rawMarkdown": "maybe i missed it, but any reason just normal unet2d would be suffice? any thoughts on 3D approach?"
        },
        {
          "id": 2575634,
          "postDate": "2023-12-27T03:24:57.123Z",
          "content": "<p>Hi, I don't understand what does xy,zx,zy mean，could you please explain it, thanks!</p>",
          "rawMarkdown": "Hi, I don't understand what does xy,zx,zy mean，could you please explain it, thanks!",
          "votes": 2,
          "replies": [
            {
              "id": 2576362,
              "postDate": "2023-12-27T16:50:12.083Z",
              "content": "<p>As you are dealing with 3d images, you can view them at different sides, so there are XY, ZX and ZY. Think of that as a cube which you can look at from different angles.</p>",
              "rawMarkdown": "As you are dealing with 3d images, you can view them at different sides, so there are XY, ZX and ZY. Think of that as a cube which you can look at from different angles.",
              "votes": 3
            },
            {
              "id": 2576585,
              "postDate": "2023-12-27T22:33:40.620Z",
              "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa096d4423afdf74a85957f917ed604f5%2FSelection_999(4450).png?generation=1703716412990283&amp;alt=media\" alt=\"\"></p>\n<p>more infor</p>",
              "rawMarkdown": "![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa096d4423afdf74a85957f917ed604f5%2FSelection_999(4450).png?generation=1703716412990283&alt=media)\n\nmore infor",
              "votes": 3
            }
          ]
        },
        {
          "id": 2582421,
          "postDate": "2024-01-01T15:19:38.600Z",
          "content": "<p>did you try using a combination of these strats, or did you get excellent results trying each of them individually?</p>",
          "rawMarkdown": "did you try using a combination of these strats, or did you get excellent results trying each of them individually?"
        }
      ]
    },
    {
      "id": 2565193,
      "postDate": "2023-12-17T18:47:04.473Z",
      "content": "<p>correct way to do validation:</p>\n<ul>\n<li>just validate on kidney3 is not enough.</li>\n<li>another test (just test only, don't use it to true hyper-parameters) on kidney2 is probably more accurate</li>\n<li>low fp seems to be the key for good LB score. for me fp=0.05 is optimal for LB.</li>\n<li>transformer seems to be a \"much\" better model (maybe more rubust against salt noise,etc see segformer paper)</li>\n</ul>\n<p>NOTE: </p>\n<ul>\n<li>all models below have local CV of 0.90 for kidney3 (dense). But when it comes to kidney2, results are different, as hsown in the table below.</li>\n<li>all models are trained on kidney1 (dense) only</li>\n<li>top upper half of kidney2 has annotation error (shift) … see anotehr post below</li>\n</ul>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F1c0c51894ac5dfa54adf769e3819685a%2FSelection_999(4439).png?generation=1702839533752331&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "correct way to do validation:\n- just validate on kidney3 is not enough.\n- another test (just test only, don't use it to true hyper-parameters) on kidney2 is probably more accurate\n- low fp seems to be the key for good LB score. for me fp=0.05 is optimal for LB.\n- transformer seems to be a \"much\" better model (maybe more rubust against salt noise,etc see segformer paper)\n\n\nNOTE: \n- all models below have local CV of 0.90 for kidney3 (dense). But when it comes to kidney2, results are different, as hsown in the table below.\n- all models are trained on kidney1 (dense) only\n- top upper half of kidney2 has annotation error (shift) ... see anotehr post below\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F1c0c51894ac5dfa54adf769e3819685a%2FSelection_999(4439).png?generation=1702839533752331&alt=media)",
      "votes": 7,
      "replies": [
        {
          "id": 2565535,
          "postDate": "2023-12-18T05:42:24.293Z",
          "content": "<p>another tip:<br>\nmy previous two winning kaggle solution has huge shake up. I could win because i kept to the follwing principles. instead of the best parameter (e.g. threshold)  for the solution:</p>\n<ul>\n<li>try to improve your solution so that it is not sensitive to thresholds, i.e. performance is optimal over a range of threshold. e.g. best AP verus MAP</li>\n<li>try to improve your solution so that it is not sensitive to data, i.e. there is low variance in accuracy for different validation samples</li>\n</ul>\n<p>in summary, in addition to best results, think of ways to</p>\n<ul>\n<li>measure variance</li>\n<li>reduce variance</li>\n</ul>",
          "rawMarkdown": "another tip:\nmy previous two winning kaggle solution has huge shake up. I could win because i kept to the follwing principles. instead of the best parameter (e.g. threshold)  for the solution:\n- try to improve your solution so that it is not sensitive to thresholds, i.e. performance is optimal over a range of threshold. e.g. best AP verus MAP\n- try to improve your solution so that it is not sensitive to data, i.e. there is low variance in accuracy for different validation samples\n\nin summary, in addition to best results, think of ways to\n- measure variance\n- reduce variance",
          "votes": 14
        }
      ]
    },
    {
      "id": 2556920,
      "postDate": "2023-12-11T04:55:13.287Z",
      "content": "<p><a href=\"https://www.kaggle.com/code/junkoda/fast-surface-dice-computation\" target=\"_blank\">https://www.kaggle.com/code/junkoda/fast-surface-dice-computation</a></p>\n<p>based on the fast surface dice computation by <a href=\"https://www.kaggle.com/junkoda\" target=\"_blank\">@junkoda</a>, i did an extensive study on the effect of threshold and the local lb metric. For each model after the training epoch, i made measurements.</p>\n<p>conclusion:</p>\n<ul>\n<li>TTA and TTA+xy,zx,zy always improve surface-dice, even if the model is under or over-fitted.</li>\n<li>there are two optimum:<ul>\n<li>early stopping (high threshold &gt;0.5)</li>\n<li>just before over fitted (0.2 to 0.3 threshold)</li></ul></li>\n<li>BCE loss seems not suitable. both train and validation loss are decreasing steadily. But surface-dice are moving up and down. One may want to take a look at e.g. edge loss, Hausdorff Distance loss, etc</li>\n</ul>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F16d9246986625481df350c42a67d8e98%2FSelection_999(4341).png?generation=1702270136436198&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "https://www.kaggle.com/code/junkoda/fast-surface-dice-computation\n\nbased on the fast surface dice computation by @junkoda, i did an extensive study on the effect of threshold and the local lb metric. For each model after the training epoch, i made measurements.\n\nconclusion:\n- TTA and TTA+xy,zx,zy always improve surface-dice, even if the model is under or over-fitted.\n- there are two optimum:\n  - early stopping (high threshold >0.5)\n  - just before over fitted (0.2 to 0.3 threshold)\n- BCE loss seems not suitable. both train and validation loss are decreasing steadily. But surface-dice are moving up and down. One may want to take a look at e.g. edge loss, Hausdorff Distance loss, etc\n\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F16d9246986625481df350c42a67d8e98%2FSelection_999(4341).png?generation=1702270136436198&alt=media)",
      "votes": 7,
      "replies": [
        {
          "id": 2556936,
          "postDate": "2023-12-11T05:01:33.273Z",
          "content": "<p>I'm using a combination of 0.5<em>Dice loss and 0.5</em>BCE loss. The loss is continuously decreasing, but it seems that the surface dice and LB are also increasing. Perhaps Dice loss is more suitable?</p>",
          "rawMarkdown": "I'm using a combination of 0.5*Dice loss and 0.5*BCE loss. The loss is continuously decreasing, but it seems that the surface dice and LB are also increasing. Perhaps Dice loss is more suitable?",
          "votes": 1
        },
        {
          "id": 2556937,
          "postDate": "2023-12-11T05:02:50.523Z",
          "content": "<p>Is the model trained on xy xz yz or only inferred on xy xz yz?</p>",
          "rawMarkdown": "Is the model trained on xy xz yz or only inferred on xy xz yz?",
          "votes": 1,
          "replies": [
            {
              "id": 2556969,
              "postDate": "2023-12-11T05:41:15.430Z",
              "content": "<p>model is trained in xy xz yz </p>",
              "rawMarkdown": "model is trained in xy xz yz ",
              "votes": 4
            }
          ]
        },
        {
          "id": 2562703,
          "postDate": "2023-12-15T16:01:34.850Z",
          "content": "<p>Hello, may I ask how you do multi-view training during the training process, is it cycling three axes training in one epoch? I put the data of the three views into a dataset, set the batchsize to 1, and shuffle it, but it doesn't seem to work well. Could you please make a reply? Thank you very much</p>",
          "rawMarkdown": "Hello, may I ask how you do multi-view training during the training process, is it cycling three axes training in one epoch? I put the data of the three views into a dataset, set the batchsize to 1, and shuffle it, but it doesn't seem to work well. Could you please make a reply? Thank you very much",
          "votes": 2,
          "replies": [
            {
              "id": 2562785,
              "postDate": "2023-12-15T16:46:53.713Z",
              "content": "<pre><code> ():\n    train_id=[]\n     n  name:\n        d = meta_data[n]\n        D,H,W = d.image.shape\n        train_id += [ (d.name, i, )  i  (H) ]\n        train_id += [ (d.name, i, )  i  (D) ]\n        train_id += [ (d.name, i, )  i  (W) ]\n     train_id\n\ntrain_id = make_train_id(...)\n\n\n ():\n     ():\n        self.sample_id = sample_id\n        self.augment = augment\n        self.length = (self.sample_id)\n\n        unique_name=[]\n         name,i,axis  sample_id:\n              name  unique_name:\n                unique_name.append(name)\n        self.unique_name=(unique_name)\n\n     ():\n        string = \n        string += \n        string += \n         string\n\n     ():\n         self.length\n\n     ():\n        name,i,axis = self.sample_id[index]\n\n        d = DATA_META[name]\n        D,H,W = d.image.shape\n\n         axis == :\n            image = d.image[i]\n            vessel = d.vessel[i]\n         axis == :\n            image = d.image[:, i]\n            vessel = d.vessel[:, i]\n         axis == :\n            image = d.image[:, :, i]\n            vessel = d.vessel[:, :, i]\n\n        image  = np.ascontiguousarray(image)\n        vessel = np.ascontiguousarray(vessel)\n\n         self.augment   :\n            image, vessel = self.augment(image, vessel)\n\n        image  = np.ascontiguousarray(image)\n        vessel = np.ascontiguousarray(vessel)\n        \n\n        r = {}\n        r[] = index\n        r[ ] = (name,i,axis)\n        r[ ] = torch.from_numpy(image).()\n        r[] = torch.from_numpy(vessel).()\n         r\n</code></pre>",
              "rawMarkdown": "```\ndef make_train_id(\n\tmeta_data=DATA_META,\n\tname = ['kidney_1_dense',],\n):\n\ttrain_id=[]\n\tfor n in name:\n\t\td = meta_data[n]\n\t\tD,H,W = d.image.shape\n\t\ttrain_id += [ (d.name, i, 'y') for i in range(H) ]\n\t\ttrain_id += [ (d.name, i, 'z') for i in range(D) ]\n\t\ttrain_id += [ (d.name, i, 'x') for i in range(W) ]\n\treturn train_id\n\ntrain_id = make_train_id(...)\n\n\nclass HiPDataset(Dataset):\n\tdef __init__(self, sample_id=train_id, augment=None):\n\t\tself.sample_id = sample_id\n\t\tself.augment = augment\n\t\tself.length = len(self.sample_id)\n\n\t\tunique_name=[]\n\t\tfor name,i,axis in sample_id:\n\t\t\tif not name in unique_name:\n\t\t\t\tunique_name.append(name)\n\t\tself.unique_name=sorted(unique_name)\n\n\tdef __str__(self):\n\t\tstring = ''\n\t\tstring += f'\\tlen = {len(self)}\\n'\n\t\tstring += f'\\tunique_name = {self.unique_name}\\n'\n\t\treturn string\n\n\tdef __len__(self):\n\t\treturn self.length\n\n\tdef __getitem__(self, index):\n\t\tname,i,axis = self.sample_id[index]\n\n\t\td = DATA_META[name]\n\t\tD,H,W = d.image.shape\n\n\t\tif axis == 'z':\n\t\t\timage = d.image[i]\n\t\t\tvessel = d.vessel[i]\n\t\tif axis == 'y':\n\t\t\timage = d.image[:, i]\n\t\t\tvessel = d.vessel[:, i]\n\t\tif axis == 'x':\n\t\t\timage = d.image[:, :, i]\n\t\t\tvessel = d.vessel[:, :, i]\n\n\t\timage  = np.ascontiguousarray(image)\n\t\tvessel = np.ascontiguousarray(vessel)\n\n\t\tif self.augment is not None:\n\t\t\timage, vessel = self.augment(image, vessel)\n\n\t\timage  = np.ascontiguousarray(image)\n\t\tvessel = np.ascontiguousarray(vessel)\n\t\t#---\n\n\t\tr = {}\n\t\tr['index'] = index\n\t\tr['sample_id' ] = (name,i,axis)\n\t\tr['image' ] = torch.from_numpy(image).float()\n\t\tr['vessel'] = torch.from_numpy(vessel).float()\n\t\treturn r\n\n\n```",
              "votes": 3
            },
            {
              "id": 2563371,
              "postDate": "2023-12-16T08:34:03.630Z",
              "content": "<p>This seems similar to doing a three-view dataset offline, whether you used a batchsize of 1 or padded the  different viewing images to the same size.</p>",
              "rawMarkdown": "This seems similar to doing a three-view dataset offline, whether you used a batchsize of 1 or padded the  different viewing images to the same size.",
              "votes": 1
            }
          ]
        }
      ]
    },
    {
      "id": 2555308,
      "postDate": "2023-12-09T20:32:34.497Z",
      "content": "<p>example of simple 3d flood fill</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F56ca19ca89d0f127a7e210ec6700bc3e%2FPeek%202023-12-10%2004-15.gif?generation=1702153952547969&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa4fc9bf7de3d501b6aa9b03373731039%2FSelection_999(4312).png?generation=1702153942671435&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "example of simple 3d flood fill\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F56ca19ca89d0f127a7e210ec6700bc3e%2FPeek%202023-12-10%2004-15.gif?generation=1702153952547969&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa4fc9bf7de3d501b6aa9b03373731039%2FSelection_999(4312).png?generation=1702153942671435&alt=media)",
      "votes": 8,
      "replies": [
        {
          "id": 2555311,
          "postDate": "2023-12-09T20:34:43.617Z",
          "content": "<pre><code> iteration in range():\n \n  t in range(,,-): \n    (t)\n      = dense[t+]\n     = image[t+]\n     = image[t]\n\n     = curr_image[:-,:-]\n     = prev_mask*prev_image\n\n    =\n     = \n     += np.abs(m-prev[:-,:-])&lt;th #[ , ]\n     += np.abs(m-prev[:  ,:-])&lt;th #[ , ]\n     += np.abs(m-prev[:-,:-])&lt;th #[-, ]\n     += np.abs(m-prev[:-,:-])&lt;th #[ ,-]\n     += np.abs(m-prev[:  ,:-])&lt;th #[ ,-]\n     += np.abs(m-prev[:-,:  ])&lt;th #[-,-]\n     += np.abs(m-prev[:-,:  ])&lt;th #[ , ]\n     += np.abs(m-prev[:  ,:  ])&lt;th #[ , ]\n     += np.abs(m-prev[:-,:  ])&lt;th #[-, ]\n\n     = diff&gt;\n    \n\n     += grow\n    \n    ('predict',(predict&gt;).astype(np.float32))\n    .waitKey()\n</code></pre>",
          "rawMarkdown": "```\nfor iteration in range(100):\n # repeat grow up, grow down,   grow up, grow down, ....\n for t in range(750,0,-1): \n\tprint(t)\n\tprev_mask  = dense[t+1]\n\tprev_image = image[t+1]\n\tcurr_image = image[t]\n\n\tm = curr_image[1:-1,1:-1]\n\tprev = prev_mask*prev_image\n\n\tth=2\n\tdiff = 0\n\tdiff += np.abs(m-prev[1:-1,1:-1])<th #[ 0, 0]\n\tdiff += np.abs(m-prev[2:  ,1:-1])<th #[ 1, 0]\n\tdiff += np.abs(m-prev[0:-2,1:-1])<th #[-1, 0]\n\tdiff += np.abs(m-prev[1:-1,0:-2])<th #[ 0,-1]\n\tdiff += np.abs(m-prev[2:  ,0:-2])<th #[ 1,-1]\n\tdiff += np.abs(m-prev[0:-2,2:  ])<th #[-1,-1]\n\tdiff += np.abs(m-prev[1:-1,2:  ])<th #[ 0, 1]\n\tdiff += np.abs(m-prev[2:  ,2:  ])<th #[ 1, 1]\n\tdiff += np.abs(m-prev[0:-2,2:  ])<th #[-1, 1]\n\n\tgrow = diff>1\n\t#todo: grow across plane here ...\n\n\tpredict += grow\n\t#image_show_norm('predict',predict)\n\timage_show_norm('predict',(predict>0).astype(np.float32))\n\tcv2.waitKey(0)\n\n\n```",
          "votes": 2
        }
      ]
    },
    {
      "id": 2543888,
      "postDate": "2023-11-30T12:35:19.300Z",
      "content": "<p>IMPORTANT!!!!!<br>\nThis is the black magic and the trick to winning!!!!</p>\n<p>results of 3d flood fill with seed = one pixel</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fdc2eabf5b33f2f89c160fdeb94532138%2FSelection_999(4168).png?generation=1701347716526450&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "IMPORTANT!!!!!\nThis is the black magic and the trick to winning!!!!\n\nresults of 3d flood fill with seed = one pixel\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fdc2eabf5b33f2f89c160fdeb94532138%2FSelection_999(4168).png?generation=1701347716526450&alt=media)",
      "votes": 7,
      "replies": [
        {
          "id": 2543944,
          "postDate": "2023-11-30T13:12:05.883Z",
          "content": "<p>this reminds me of 3d SAM (segment anything model)<br>\nif so, we can use self-supervised learning to train the encoder  </p>\n<p>the seed will be prompt.  </p>\n<p>the decoder is to perform floodfill segmentation   </p>",
          "rawMarkdown": "this reminds me of 3d SAM (segment anything model)\nif so, we can use self-supervised learning to train the encoder  \n\nthe seed will be prompt.  \n \nthe decoder is to perform floodfill segmentation   ",
          "votes": 2,
          "replies": [
            {
              "id": 2544343,
              "postDate": "2023-11-30T19:01:08.027Z",
              "content": "<p>volumetric rendering of image volume</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F4b30a20e48d5434eb5d9e3263c7591fd%2FPeek%202023-12-01%2002-57.gif?generation=1701370799773034&amp;alt=media\" alt=\"\"></p>\n<p>it shows the uniform intensity of walls of the vessel. that is why flood fill works well</p>",
              "rawMarkdown": "volumetric rendering of image volume\n\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F4b30a20e48d5434eb5d9e3263c7591fd%2FPeek%202023-12-01%2002-57.gif?generation=1701370799773034&alt=media)\n\nit shows the uniform intensity of walls of the vessel. that is why flood fill works well",
              "votes": 1
            },
            {
              "id": 2544387,
              "postDate": "2023-11-30T19:32:36.910Z",
              "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F00e9ea02daf6924a01066d9704166d59%2FSelection_999(4171).png?generation=1701372684763901&amp;alt=media\" alt=\"\"></p>\n<p>this solves the puzzle why there are so much noise in prediction.<br>\nwe need some median filtering layer?<br>\n<a href=\"https://github.com/llmpass/medianDenoise\" target=\"_blank\">https://github.com/llmpass/medianDenoise</a></p>",
              "rawMarkdown": "![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F00e9ea02daf6924a01066d9704166d59%2FSelection_999(4171).png?generation=1701372684763901&alt=media)\n\nthis solves the puzzle why there are so much noise in prediction.\nwe need some median filtering layer?\nhttps://github.com/llmpass/medianDenoise\n",
              "votes": 2
            },
            {
              "id": 2545013,
              "postDate": "2023-12-01T08:32:41.507Z",
              "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F6f8c6f09bb13beef8496958bca3a2a97%2FSelection_999(4186).png?generation=1701419507768841&amp;alt=media\" alt=\"\"></p>\n<p>hyptersis thresholding prediction as an alterantive to flood filling on input</p>",
              "rawMarkdown": "![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F6f8c6f09bb13beef8496958bca3a2a97%2FSelection_999(4186).png?generation=1701419507768841&alt=media)\n\nhyptersis thresholding prediction as an alterantive to flood filling on input",
              "votes": 3
            },
            {
              "id": 2547016,
              "postDate": "2023-12-03T05:16:38.150Z",
              "content": "<p>nice rendering<br>\n<a href=\"https://www.youtube.com/watch?v=wZbfNJxTxqc\" target=\"_blank\">https://www.youtube.com/watch?v=wZbfNJxTxqc</a></p>\n<p><a href=\"https://www.nationalgeographic.com/science/article/worlds-brightest-x-rays-reveal-covid-19-damage-to-the-body\" target=\"_blank\">https://www.nationalgeographic.com/science/article/worlds-brightest-x-rays-reveal-covid-19-damage-to-the-body</a><br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fe3425d8daff24d619bd70dcbd5704ba4%2FSelection_999(4214).png?generation=1701580587953427&amp;alt=media\" alt=\"\"></p>",
              "rawMarkdown": "nice rendering\nhttps://www.youtube.com/watch?v=wZbfNJxTxqc\n\nhttps://www.nationalgeographic.com/science/article/worlds-brightest-x-rays-reveal-covid-19-damage-to-the-body\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fe3425d8daff24d619bd70dcbd5704ba4%2FSelection_999(4214).png?generation=1701580587953427&alt=media)"
            }
          ]
        }
      ]
    },
    {
      "id": 2543380,
      "postDate": "2023-11-30T03:24:50.710Z",
      "content": "<p>wrong annotation !!!!!<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Ff8f783cd4318a8853e5d628435131879%2FSelection_999(4156).png?generation=1701314688469717&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "wrong annotation !!!!!\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Ff8f783cd4318a8853e5d628435131879%2FSelection_999(4156).png?generation=1701314688469717&alt=media)",
      "votes": 7,
      "replies": [
        {
          "id": 2543402,
          "postDate": "2023-11-30T04:07:21.747Z",
          "content": "<p>i think there is offset bug in annotion for kidney2</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc736ce3630a4beae36d445ef2e97a962%2FSelection_999(4159).png?generation=1701317221007709&amp;alt=media\" alt=\"\"><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Ff09a93d56aeca55fd5a4e253f3e9f919%2FSelection_999(4158).png?generation=1701317230860236&amp;alt=media\" alt=\"\"><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc7cd3b6255a02c133a72e4c8ba7afb84%2FSelection_999(4157).png?generation=1701317239646900&amp;alt=media\" alt=\"\"></p>",
          "rawMarkdown": "i think there is offset bug in annotion for kidney2\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc736ce3630a4beae36d445ef2e97a962%2FSelection_999(4159).png?generation=1701317221007709&alt=media)![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Ff09a93d56aeca55fd5a4e253f3e9f919%2FSelection_999(4158).png?generation=1701317230860236&alt=media)![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc7cd3b6255a02c133a72e4c8ba7afb84%2FSelection_999(4157).png?generation=1701317239646900&alt=media)\n",
          "votes": 2,
          "replies": [
            {
              "id": 2555809,
              "postDate": "2023-12-10T08:08:00.093Z",
              "content": "<p>shift error happens in hidden test datat ground truth before in kaggle competitions…<br>\nanyone want to probe that?</p>",
              "rawMarkdown": "shift error happens in hidden test datat ground truth before in kaggle competitions...\nanyone want to probe that?",
              "votes": 1
            },
            {
              "id": 2563972,
              "postDate": "2023-12-16T17:50:06.877Z",
              "content": "<p>only top half of kidney 2 annotation are shifted</p>\n<p>TOP:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fbe2a7252e15844c7b88eb3db63a324b6%2FSelection_999(4437).png?generation=1702748975416857&amp;alt=media\" alt=\"\"></p>\n<p>BOTTOM:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fe33a6f4a697a929c884f53d4d74e6200%2FSelection_999(4435).png?generation=1702748999529614&amp;alt=media\" alt=\"\"></p>\n<pre><code>    pl = pv.\n\n    mhit = pv.).T).glyph(geom=pv.)\n    mfp = pv.).T).glyph(geom=pv.)\n    mmiss = pv.).T).glyph(geom=pv.)\n    pl.add\n    pl.add\n    pl.add\n    pl.show\n</code></pre>",
              "rawMarkdown": "only top half of kidney 2 annotation are shifted\n\nTOP:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fbe2a7252e15844c7b88eb3db63a324b6%2FSelection_999(4437).png?generation=1702748975416857&alt=media)\n\nBOTTOM:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fe33a6f4a697a929c884f53d4d74e6200%2FSelection_999(4435).png?generation=1702748999529614&alt=media)\n\n```\n\n\tpl = pv.Plotter()\n\n\tmhit = pv.PolyData(np.stack(np.where(hit > 0.1)).T).glyph(geom=pv.Cube())\n\tmfp = pv.PolyData(np.stack(np.where(fp > 0.1)).T).glyph(geom=pv.Cube())\n\tmmiss = pv.PolyData(np.stack(np.where(miss > 0.1)).T).glyph(geom=pv.Cube())\n\tpl.add_mesh(mhit, color='yellow')\n\tpl.add_mesh(mfp, color='green')\n\tpl.add_mesh(mmiss, color='red')\n\tpl.show()\n```",
              "votes": 5
            }
          ]
        }
      ]
    },
    {
      "id": 2621747,
      "postDate": "2024-01-27T00:29:18.097Z",
      "content": "<p>my estimate at one week before the competition:</p>\n<ol>\n<li>for a good ML/deep learning practitioner:  performance of single model : &gt;= public lb 0.865</li>\n<li>experienced practitioner:  performance of single model : &gt;=  public lb 0.875 ~ 0.880<br>\n(e.g. better model, augmentation, pre/post processing, hyperprameters, learning/meta framework)</li>\n<li>emsemble : &lt;= ~0.01+</li>\n<li>shakeup (i.e. std in score under various test data, if available) at 50um per voxel &lt;= 0.04</li>\n<li>shakeup (i.e. transfer from high resolution to low resolution) at 63um per voxel &lt;= 0.07</li>\n</ol>\n<hr>\n<p>final top-1 private leaderboard: private lb  0.890 to 0.880<br>\ngold cut-off : private lb  0.875 to 0.880</p>",
      "rawMarkdown": "my estimate at one week before the competition:\n1. for a good ML/deep learning practitioner:  performance of single model : >= public lb 0.865\n2. experienced practitioner:  performance of single model : >=  public lb 0.875 ~ 0.880\n(e.g. better model, augmentation, pre/post processing, hyperprameters, learning/meta framework)\n3. emsemble : <= ~0.01+\n4. shakeup (i.e. std in score under various test data, if available) at 50um per voxel <= 0.04\n5. shakeup (i.e. transfer from high resolution to low resolution) at 63um per voxel <= 0.07\n\n\n----\n\nfinal top-1 private leaderboard: private lb  0.890 to 0.880\ngold cut-off : private lb  0.875 to 0.880",
      "votes": 5,
      "replies": [
        {
          "id": 2623002,
          "postDate": "2024-01-27T20:59:09.037Z",
          "content": "<p>It will be interesting to see how it plays out. I am looking forward to people's write ups so I can understand how they go from 0.8 -&gt; ~0.86 on the leaderboard. I've struggled to get my 2D models (based on SeResNet) to score higher than 0.8. I have learned a lot, but there is plenty more to learn.</p>",
          "rawMarkdown": "It will be interesting to see how it plays out. I am looking forward to people's write ups so I can understand how they go from 0.8 -> ~0.86 on the leaderboard. I've struggled to get my 2D models (based on SeResNet) to score higher than 0.8. I have learned a lot, but there is plenty more to learn.",
          "replies": [
            {
              "id": 2623007,
              "postDate": "2024-01-27T21:02:10.803Z",
              "content": "<p>Actually, I have struggled to get train and validation dice scores over 0.84 (kidney 1 train, kidney 3 val) without overfitting</p>",
              "rawMarkdown": "Actually, I have struggled to get train and validation dice scores over 0.84 (kidney 1 train, kidney 3 val) without overfitting"
            },
            {
              "id": 2623113,
              "postDate": "2024-01-28T01:36:22.463Z",
              "content": "<p>\"so I can understand how they go from 0.8 -&gt; ~0.86 on the leaderboard. \"<br>\n\"I have struggled to get train and validation dice  … without overfitting\"</p>\n<p>answer to both : train augmentation.</p>\n<p>generally(i.e. this and other competitions) all image train augmentation can be classified as</p>\n<ul>\n<li>affine transform (most important: scale , rotate)</li>\n<li>noise (from pixel wise , block wise, object wise, … image artifacts)</li>\n<li>intensity (color, contrast hue, gray/color, shift,)</li>\n<li>generation: cutout, mixup, crop, slicing, draw foreign objects, …….</li>\n<li>others: flip, rotate90</li>\n</ul>\n<p>some make the results very worst, some will improve significantly</p>\n<hr>\n<p>visualise, visualise, visualise</p>\n<ul>\n<li>draw inspect the miss and fp.</li>\n<li>draw the prediction probability at each early iterations … inspect how the model learns ….<br>\n(you will see which objects is learned first and how the training evolved)</li>\n</ul>",
              "rawMarkdown": "\"so I can understand how they go from 0.8 -> ~0.86 on the leaderboard. \"\n\"I have struggled to get train and validation dice  ... without overfitting\"\n\nanswer to both : train augmentation.\n\ngenerally(i.e. this and other competitions) all image train augmentation can be classified as\n\n- affine transform (most important: scale , rotate)\n- noise (from pixel wise , block wise, object wise, ... image artifacts)\n- intensity (color, contrast hue, gray/color, shift,)\n- generation: cutout, mixup, crop, slicing, draw foreign objects, .......\n- others: flip, rotate90\n\nsome make the results very worst, some will improve significantly\n\n---\n\nvisualise, visualise, visualise\n\n- draw inspect the miss and fp.\n- draw the prediction probability at each early iterations ... inspect how the model learns ....\n(you will see which objects is learned first and how the training evolved)",
              "votes": 6
            },
            {
              "id": 2623134,
              "postDate": "2024-01-28T02:13:53.993Z",
              "content": "<p>Thank you <a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> for always being so helpful on these forums! I noticed that the train augmentation helps improve the consistency between the train, test, and even leaderboard. Perhaps I need to try more! I appreciate the advice to inspect early epochs. I hadn't done that, I typically just save the best weights and inspect the result. I'll give it a try :). </p>",
              "rawMarkdown": "Thank you @hengck23 for always being so helpful on these forums! I noticed that the train augmentation helps improve the consistency between the train, test, and even leaderboard. Perhaps I need to try more! I appreciate the advice to inspect early epochs. I hadn't done that, I typically just save the best weights and inspect the result. I'll give it a try :). "
            },
            {
              "id": 2626979,
              "postDate": "2024-01-30T12:08:10.753Z",
              "content": "<p>visualisation for the first 0.25 epoch<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F425a8cc975f235331a07db0a06f88ad1%2FSelection_999(4713).png?generation=1706616477661913&amp;alt=media\"><br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc5236e5a84bfd183891f8a229094914f%2FSelection_999(4714).png?generation=1706616489116957&amp;alt=media\"></p>",
              "rawMarkdown": "visualisation for the first 0.25 epoch\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F425a8cc975f235331a07db0a06f88ad1%2FSelection_999(4713).png?generation=1706616477661913&alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc5236e5a84bfd183891f8a229094914f%2FSelection_999(4714).png?generation=1706616489116957&alt=media)",
              "votes": 1
            },
            {
              "id": 2629597,
              "postDate": "2024-01-31T22:26:30.590Z",
              "content": "<p>Very interesting! I've been working on doing similar after your comment. Your advice has been very helpful, I've been implementing it and hoping it can help me move up on the leaderboard before the final :)</p>",
              "rawMarkdown": "Very interesting! I've been working on doing similar after your comment. Your advice has been very helpful, I've been implementing it and hoping it can help me move up on the leaderboard before the final :)"
            }
          ]
        },
        {
          "id": 2623085,
          "postDate": "2024-01-28T00:27:55.863Z",
          "content": "<p>This one has been a heart breaker, I have been stuck with my current score for about a month now and it seems unless I come up with something I will be just shy of gold. I am interested to see what others did because I feel like I have tried so many things that just don’t seem to help.</p>",
          "rawMarkdown": "This one has been a heart breaker, I have been stuck with my current score for about a month now and it seems unless I come up with something I will be just shy of gold. I am interested to see what others did because I feel like I have tried so many things that just don’t seem to help.",
          "votes": 2,
          "replies": [
            {
              "id": 2623137,
              "postDate": "2024-01-28T02:15:48.037Z",
              "content": "<p>I understand. I got really excited about a custom loss function I found in the literature and for my models below 0.8 on the public leaderboard it always seemed to improve the score, but when I tried it with the model that scored well it didn't improve. I keep hitting a wall. Still, it's been a fun competition! I've never worked on a proper segmentation problem before and I've learned a lot! Good luck getting into gold as the leaderboard shifts with the private data.</p>",
              "rawMarkdown": "I understand. I got really excited about a custom loss function I found in the literature and for my models below 0.8 on the public leaderboard it always seemed to improve the score, but when I tried it with the model that scored well it didn't improve. I keep hitting a wall. Still, it's been a fun competition! I've never worked on a proper segmentation problem before and I've learned a lot! Good luck getting into gold as the leaderboard shifts with the private data.",
              "votes": 1
            },
            {
              "id": 2623175,
              "postDate": "2024-01-28T03:23:09.900Z",
              "content": "<p>Thank you! Good luck to you too! Yes the learning is what is important and I have definitely done a lot of that! Good to get reminders every once in awhile!</p>",
              "rawMarkdown": "Thank you! Good luck to you too! Yes the learning is what is important and I have definitely done a lot of that! Good to get reminders every once in awhile!",
              "votes": 1
            }
          ]
        },
        {
          "id": 2625364,
          "postDate": "2024-01-29T11:09:57.290Z",
          "content": "<p>one more information. from the paper: if train = kidney1 upper, valid = kidney1 lower, surface dice is 0.95.<br>\nBut i think that is not using TTA.<br>\n(i haven't done experiment on upper/lower split).</p>\n<p>I estimate with TTA and better processing,  surface dice is 0.96+.</p>\n<p>This means that under perfect data (i.e. no domain shift), expect a 0.03+</p>",
          "rawMarkdown": "one more information. from the paper: if train = kidney1 upper, valid = kidney1 lower, surface dice is 0.95.\nBut i think that is not using TTA.\n(i haven't done experiment on upper/lower split).\n\nI estimate with TTA and better processing,  surface dice is 0.96+.\n\nThis means that under perfect data (i.e. no domain shift), expect a 0.03+",
          "replies": [
            {
              "id": 2625675,
              "postDate": "2024-01-29T14:38:28.967Z",
              "content": "<p>I noticed something today which you might find interesting.<br>\nFor my validation set, which is kidney 3 dense, I generated a submission.csv using all the images.<br>\nThen I broke it into 10 samples to calculate the surface dice score, each sample with a step size of 10, such that my first sample would consider img 0, 10, 20 etc., the second would consider img 1, 11, 21 and so on.<br>\nEach individual sample scored above 0.94, and the avg was over .94 as well. However, when I calculated dice score over the full CV set without breaking it into sub samples, the dice score became 0.86. This has been confusing me. Im using <a href=\"https://www.kaggle.com/Jun\" target=\"_blank\">@Jun</a> Koda's method. <a href=\"https://www.kaggle.com/datasets/junkoda/sennet-score\" target=\"_blank\">https://www.kaggle.com/datasets/junkoda/sennet-score</a>.<br>\nObviously my actual score on the public test set is around .835, which is much closer to .86 than .94.<br>\nI thought that the surface dice scores are being averaged over the sample, but that doesn't seem to be the case.<br>\nDo you have any thoughts?</p>",
              "rawMarkdown": "I noticed something today which you might find interesting.\nFor my validation set, which is kidney 3 dense, I generated a submission.csv using all the images.\nThen I broke it into 10 samples to calculate the surface dice score, each sample with a step size of 10, such that my first sample would consider img 0, 10, 20 etc., the second would consider img 1, 11, 21 and so on.\nEach individual sample scored above 0.94, and the avg was over .94 as well. However, when I calculated dice score over the full CV set without breaking it into sub samples, the dice score became 0.86. This has been confusing me. Im using @Jun Koda's method. https://www.kaggle.com/datasets/junkoda/sennet-score.\nObviously my actual score on the public test set is around .835, which is much closer to .86 than .94.\nI thought that the surface dice scores are being averaged over the sample, but that doesn't seem to be the case.\nDo you have any thoughts?"
            },
            {
              "id": 2625735,
              "postDate": "2024-01-29T14:58:09.980Z",
              "content": "<p>What you are doing does not make sense -&gt; the competition metric is computed over consecutive frames: the dice score is computed on the surface area defined by two consecutive frames. So if you compute the score with images separated by 10 images this will create a very poor ground truth for the surface area.</p>\n<p>If you wish to see you scores on subsets, you should take adjacent frames like 0 to 100, then 100 to 200 etc… The local scores should then average to the global score.</p>",
              "rawMarkdown": "What you are doing does not make sense -> the competition metric is computed over consecutive frames: the dice score is computed on the surface area defined by two consecutive frames. So if you compute the score with images separated by 10 images this will create a very poor ground truth for the surface area.\n\nIf you wish to see you scores on subsets, you should take adjacent frames like 0 to 100, then 100 to 200 etc... The local scores should then average to the global score.",
              "votes": 2
            },
            {
              "id": 2625774,
              "postDate": "2024-01-29T15:26:32.107Z",
              "content": "<p>Wow, that clarifies so much for me. Thank you very much. I suppose dice loss is very different.<br>\nI have learned a valuable lesson.</p>",
              "rawMarkdown": "Wow, that clarifies so much for me. Thank you very much. I suppose dice loss is very different.\nI have learned a valuable lesson.",
              "votes": 1
            },
            {
              "id": 2626468,
              "postDate": "2024-01-30T03:40:49.027Z",
              "content": "<p>i wonder did anyone try this:</p>\n<ol>\n<li>use kidney1 upper as train and kidney1 lower as validation.</li>\n<li>then use \" kidney1 upper truth + kidney1 lower pseudo label\"to make a model. Compare it against another model using  \" kidney1 all\".</li>\n<li>you you succeed in (2), then you can use \" kidney3 dense\" to relabel \" kidney3 sparse\"</li>\n</ol>",
              "rawMarkdown": "i wonder did anyone try this:\n1. use kidney1 upper as train and kidney1 lower as validation.\n2. then use \" kidney1 upper truth + kidney1 lower pseudo label\"to make a model. Compare it against another model using  \" kidney1 all\".\n3. you you succeed in (2), then you can use \" kidney3 dense\" to relabel \" kidney3 sparse\""
            },
            {
              "id": 2626615,
              "postDate": "2024-01-30T06:18:28.613Z",
              "content": "<p>That's a really good idea, will try and let everyone know the results here</p>",
              "rawMarkdown": "That's a really good idea, will try and let everyone know the results here",
              "votes": 3
            },
            {
              "id": 2626640,
              "postDate": "2024-01-30T06:33:05.297Z",
              "content": "<p>from the paper: if train = kidney1 upper, valid = kidney1 lower, surface dice is 0.95.</p>\n<p>Can you tell me about this paper?</p>\n<p>Relabeling \"kidney3 sparse\" will help, but I don't think it's easy to get a perfect model by using k1 and k2 for validation in \"kidney3 dense\" training. I'm very curious about how much validation data was used for training in the above paper, including the specific training model.</p>",
              "rawMarkdown": "from the paper: if train = kidney1 upper, valid = kidney1 lower, surface dice is 0.95.\n\nCan you tell me about this paper?\n\nRelabeling \"kidney3 sparse\" will help, but I don't think it's easy to get a perfect model by using k1 and k2 for validation in \"kidney3 dense\" training. I'm very curious about how much validation data was used for training in the above paper, including the specific training model."
            }
          ]
        }
      ]
    },
    {
      "id": 2589018,
      "postDate": "2024-01-06T01:16:46.003Z",
      "content": "<p>wrong strategy?</p>\n<pre><code>i have been trying  detect  small vessels  improve  LB score becuase   stated   paper  this  one   problem.\nBut  i realize  this may  be a good strategy?\n\ni use train= kidney1 dense + kidney3 dense\nvalidation= kidney2 sparse ( slice &gt;=   avoid annotation shift )\n\ni  note  recent popular public kernel based  seresnext50_32x4d dunet which can easily object lb . seresnext50_32x4d has imagenet top1  range  ~. My experiments shows   seresnext50_32x4d dunet has low hit rate (&gt;),  has very low fp rate (~)  well. i am surprise   can   lb single model.\n\ni have been using nextVIT base transformer, imagenet top1 ~,   lb . It has very high hitrate (&gt;)  low fp rate (~).\n\n turns out   lb  based  surface pixels, small vessel has less surface ( contribute little  lb score) !!!\ne.g.  kidney3 sparse (% annotation) has surface dice  compared  kidney3 dense\n\n other ,   wrong choice  metric   host interest   detect small vessel\n</code></pre>",
      "rawMarkdown": "wrong strategy?\n```\ni have been trying to detect the small vessels to improve my LB score becuase it is stated in the paper that this is one of the problem.\nBut then i realize that this may not be a good strategy?\n\ni use train= kidney1 dense + kidney3 dense\nvalidation= kidney2 sparse (from slice >= 900 to avoid annotation shift error)\n\ni first note the recent popular public kernel based on seresnext50_32x4d 2dunet which can easily object lb 0.859. seresnext50_32x4d has imagenet top1 in range of ~0.79. My experiments shows that while seresnext50_32x4d 2dunet has low hit rate (>0.83), it has very low fp rate (~0.111) as well. i am surprise that it can get 0.864 lb single model.\n\ni have been using nextVIT base transformer, imagenet top1 ~0.82, to get lb 0.863. It has very high hitrate (>0.93) and low fp rate (~0.183).\n\nit turns out that since lb is based on surface pixels, small vessel has less surface (and contribute little to lb score) !!!\ne.g. for kidney3 sparse (85% annotation) has surface dice 0.98 compared to kidney3 dense\n\nin other words, it is wrong choice of metric if the host interest is to detect small vessel\n```",
      "votes": 6,
      "replies": [
        {
          "id": 2589179,
          "postDate": "2024-01-06T06:30:26.443Z",
          "content": "<p>update on 06-JAN<br>\ntrick to get lb 0.87+</p>\n<ul>\n<li><p>make a base model in the range of 0.864 (e.g. either seresnext50_32x4d or  nextVIT base  2d unet)</p></li>\n<li><p>ensemble of the two will give  0.87+</p></li>\n<li><p>ensemble  improve lb score:</p></li>\n</ul>\n<ol>\n<li>detect more instance  </li>\n<li>for an already detected instance improve its boudary to improve the dice score for that instance</li>\n<li>reduce fp</li>\n</ol>",
          "rawMarkdown": "update on 06-JAN\ntrick to get lb 0.87+\n\n- make a base model in the range of 0.864 (e.g. either seresnext50_32x4d or  nextVIT base  2d unet)\n- ensemble of the two will give  0.87+\n\n- ensemble  improve lb score:\n1. detect more instance  \n2. for an already detected instance improve its boudary to improve the dice score for that instance\n3. reduce fp\n\n ",
          "votes": 2,
          "replies": [
            {
              "id": 2589240,
              "postDate": "2024-01-06T07:31:23.673Z",
              "content": "<p>Thank you for sharing. Different models might have different thresholds. How do you perform model fusion? Do you average the probabilities and then use a compromise threshold?</p>",
              "rawMarkdown": "Thank you for sharing. Different models might have different thresholds. How do you perform model fusion? Do you average the probabilities and then use a compromise threshold?",
              "votes": 2
            },
            {
              "id": 2589337,
              "postDate": "2024-01-06T09:44:17.340Z",
              "content": "<p>Thank you for sharing. I would like to know approximately how long it takes for a single model of amp inference, and would it be faster to use TensorRT instead</p>",
              "rawMarkdown": "Thank you for sharing. I would like to know approximately how long it takes for a single model of amp inference, and would it be faster to use TensorRT instead",
              "votes": 1
            },
            {
              "id": 2589420,
              "postDate": "2024-01-06T11:20:49.200Z",
              "content": "<p>seresnext50_32x4d : 2hr +<br>\nnextVIT base 2d : 3hr +</p>\n<p>i haven't use tensorRT yet</p>",
              "rawMarkdown": "seresnext50_32x4d : 2hr +\nnextVIT base 2d : 3hr +\n\ni haven't use tensorRT yet",
              "votes": 1
            },
            {
              "id": 2589498,
              "postDate": "2024-01-06T12:40:51.307Z",
              "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fb2411a886d57c613e767a0aaff915faf%2FSelection_999(4532).png?generation=1704544815068725&amp;alt=media\" alt=\"\"></p>\n<p><a href=\"https://www.kaggle.com/lihaoweicvch\" target=\"_blank\">@lihaoweicvch</a> </p>\n<p>i have not decided. but the threshold is smiliar for same validation set even for different model</p>",
              "rawMarkdown": "![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fb2411a886d57c613e767a0aaff915faf%2FSelection_999(4532).png?generation=1704544815068725&alt=media)\n\n@lihaoweicvch \n\ni have not decided. but the threshold is smiliar for same validation set even for different model",
              "votes": 4
            },
            {
              "id": 2589696,
              "postDate": "2024-01-06T15:17:07.227Z",
              "content": "<p>Thank you for answer.Is this the duration of reasoning for only one perspective without TTA? When I take TTA from three perspectives, seresnext50_ 32x4d took approximately 6 hours to reason</p>",
              "rawMarkdown": "Thank you for answer.Is this the duration of reasoning for only one perspective without TTA? When I take TTA from three perspectives, seresnext50_ 32x4d took approximately 6 hours to reason",
              "votes": 1
            },
            {
              "id": 2589706,
              "postDate": "2024-01-06T15:25:31.097Z",
              "content": "<p>time is for infer with the usual xy,zx,zy + 5 TTA</p>",
              "rawMarkdown": "time is for infer with the usual xy,zx,zy + 5 TTA",
              "votes": 1
            }
          ]
        },
        {
          "id": 2590673,
          "postDate": "2024-01-07T11:19:37.070Z",
          "content": "<p><a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> How do you compute your FPR ? Your definition probably differs from the one I'm used to regarding normalization.</p>\n<p>Do you use <code>(pred * (1 - truth)).sum() / truth.sum()</code> ?<br>\nSame for TPR, you are using <code>(pred * truth).sum() / truth.sum()</code>, right ?</p>\n<p>Thanks!</p>",
          "rawMarkdown": "@hengck23 How do you compute your FPR ? Your definition probably differs from the one I'm used to regarding normalization.\n\nDo you use `(pred * (1 - truth)).sum() / truth.sum()` ?\nSame for TPR, you are using `(pred * truth).sum() / truth.sum()`, right ?\n\nThanks!\n",
          "votes": 1,
          "replies": [
            {
              "id": 2590803,
              "postDate": "2024-01-07T12:53:54.400Z",
              "content": "<pre><code>def np_metric(, truth):\n    p = (&gt;0.5)\n    t = (truth&gt;0.5)\n    hit = (p*t).()\n    fp  = (p*(1-t)).()\n    t_sum = t.()\n    p_sum = p.()\n     hit, fp, t_sum, p_sum\n\n#-------------------------------------\n = &gt;0.5\nhit, fp, t_sum, p_sum = np_metric(, truth)\nhit = hit/t_sum\nfp = fp/p_sum\n</code></pre>\n<p>precision and recall are better words</p>",
              "rawMarkdown": "```\ndef np_metric(predict, truth):\n\tp = (predict>0.5)\n\tt = (truth>0.5)\n\thit = (p*t).sum()\n\tfp  = (p*(1-t)).sum()\n\tt_sum = t.sum()\n\tp_sum = p.sum()\n\treturn hit, fp, t_sum, p_sum\n\n#-------------------------------------\npredict = prob>0.5\nhit, fp, t_sum, p_sum = np_metric(predict, truth)\nhit = hit/t_sum\nfp = fp/p_sum\n\n```\n\nprecision and recall are better words",
              "votes": 4
            },
            {
              "id": 2590930,
              "postDate": "2024-01-07T14:46:00.647Z",
              "content": "<p>Gotcha, thanks.</p>\n<p>FYI, those are my scores on <code>kidney_2</code>: <br>\n<code>\nhit: 0.9549\nfp: 0.0507\nCV: 0.84\nLB ~0.80\n</code><br>\nMy LB scores are lagging behind compared to yours but my CV scores are close. Not sure if it is because I have too many FPs or not.</p>",
              "rawMarkdown": "Gotcha, thanks.\n\nFYI, those are my scores on `kidney_2`: \n`\nhit: 0.9549\nfp: 0.0507\nCV: 0.84\nLB ~0.80\n`\nMy LB scores are lagging behind compared to yours but my CV scores are close. Not sure if it is because I have too many FPs or not.",
              "votes": 2
            },
            {
              "id": 2591172,
              "postDate": "2024-01-07T17:44:08.753Z",
              "content": "<p>submit with different thresholds.</p>\n<p>CV and LB correlations are weak. but i do see a general linear relationship: lb = cv + bias<br>\n(cv and lb don't share the best optimal threshold, which is a** problem for us to avoid shakeup**)</p>\n<p>\"FYI, those are my scores on kidney_2:\"</p>\n<p>There are annotation errors in kidney 2. so your lb score should be better if your threshold is correct</p>",
              "rawMarkdown": "submit with different thresholds.\n\nCV and LB correlations are weak. but i do see a general linear relationship: lb = cv + bias\n(cv and lb don't share the best optimal threshold, which is a** problem for us to avoid shakeup**)\n\n\"FYI, those are my scores on kidney_2:\"\n\nThere are annotation errors in kidney 2. so your lb score should be better if your threshold is correct",
              "votes": 2
            },
            {
              "id": 2591184,
              "postDate": "2024-01-07T17:50:56.710Z",
              "content": "<p><a href=\"https://www.kaggle.com/theoviel\" target=\"_blank\">@theoviel</a> <br>\ni think your metric are for model without TTA.</p>\n<p>you need to do TTA (it is common that 2d Unet can completely  miss vessel in one view and detect in another). TTA may not improve CV, but it should improve LB.</p>",
              "rawMarkdown": "@theoviel \ni think your metric are for model without TTA.\n\nyou need to do TTA (it is common that 2d Unet can completely  miss vessel in one view and detect in another). TTA may not improve CV, but it should improve LB.",
              "votes": 3
            }
          ]
        }
      ]
    },
    {
      "id": 2554978,
      "postDate": "2023-12-09T15:30:08.363Z",
      "content": "<p>trick to get lb 0.835<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F7f8c7dca190065f9d3b98f880ef7cd21%2FSelection_999(4310).png?generation=1702135804600547&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "trick to get lb 0.835\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F7f8c7dca190065f9d3b98f880ef7cd21%2FSelection_999(4310).png?generation=1702135804600547&alt=media)",
      "votes": 6,
      "replies": [
        {
          "id": 2554980,
          "postDate": "2023-12-09T15:32:07.580Z",
          "content": "<pre><code>    def forward(self, batch):\n        x = batch['image']\n        x = x.(-1,3,-1,-1) \n        B, C, , W = x.shape\n\n         = []\n        xx = self.stem0(x); .(xx)\n        xx = F.avg_pool2d(xx,kernel_size=2,stride=2)\n        xx = self.stem1(xx); .(xx)\n\n         = self.encoder #convnext\n        x = .(x);\n\n        x = .stages[0](x); .(x)\n        x = .stages[1](x); .(x)\n        x = .stages[2](x); .(x)\n        x = .stages[3](x); .(x)\n        ##[(f'encode_{i}', .shape)  i,  enumerate()]\n\n        last,  = self.decoder(\n            feature=[-1], skip=[:-1][::-1]\n        )\n        ##[(f'decode_{i}', .shape)  i,  enumerate()]\n        ##('last', last.shape)\n\n        vessel = self.vessel(last)\n</code></pre>",
          "rawMarkdown": "```\n\tdef forward(self, batch):\n\t\tx = batch['image']\n\t\tx = x.expand(-1,3,-1,-1) \n\t\tB, C, H, W = x.shape\n\n\t\tencode = []\n\t\txx = self.stem0(x); encode.append(xx)\n\t\txx = F.avg_pool2d(xx,kernel_size=2,stride=2)\n\t\txx = self.stem1(xx); encode.append(xx)\n\n\t\te = self.encoder #convnext\n\t\tx = e.stem(x);\n\n\t\tx = e.stages[0](x); encode.append(x)\n\t\tx = e.stages[1](x); encode.append(x)\n\t\tx = e.stages[2](x); encode.append(x)\n\t\tx = e.stages[3](x); encode.append(x)\n\t\t##[print(f'encode_{i}', e.shape) for i,e in enumerate(encode)]\n\n\t\tlast, decode = self.decoder(\n\t\t\tfeature=encode[-1], skip=encode[:-1][::-1]\n\t\t)\n\t\t##[print(f'decode_{i}', e.shape) for i,e in enumerate(decode)]\n\t\t##print('last', last.shape)\n\n\t\tvessel = self.vessel(last)\n\n```",
          "votes": 3,
          "replies": [
            {
              "id": 2554998,
              "postDate": "2023-12-09T15:46:19.803Z",
              "content": "<p>you can go to super-resolution</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F86402d134c124fd64c7695762e052762%2FSelection_999(4311).png?generation=1702136734642968&amp;alt=media\" alt=\"\"></p>\n<p>HINT:<br>\nalternatively, you can train a real super-resolution net (you have 20um imags from the HIP-CT website)</p>",
              "rawMarkdown": "you can go to super-resolution\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F86402d134c124fd64c7695762e052762%2FSelection_999(4311).png?generation=1702136734642968&alt=media)\n\nHINT:\nalternatively, you can train a real super-resolution net (you have 20um imags from the HIP-CT website)"
            },
            {
              "id": 2555495,
              "postDate": "2023-12-10T00:53:29.737Z",
              "content": "<p>local CV/LB<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa034d0e1646416700a5b6fadd8e26bbb%2FSelection_999(4315).png?generation=1702169707335185&amp;alt=media\" alt=\"\"></p>",
              "rawMarkdown": "local CV/LB\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa034d0e1646416700a5b6fadd8e26bbb%2FSelection_999(4315).png?generation=1702169707335185&alt=media)",
              "votes": 1
            }
          ]
        }
      ]
    },
    {
      "id": 2552053,
      "postDate": "2023-12-07T06:39:19.887Z",
      "content": "<p>lb0.829 …</p>\n<p>normalisation is the key</p>\n<pre><code> norm_by_percentile(volume, low=, high=., alpha=.):\n     = np.percentile(volume,low)\n     = np.percentile(volume,high)\n     = (volume-xmin)/(xmax-xmin)\n     :\n        [x&gt;]=(x[x&gt;]-)*alpha +\n        [x&lt;]=(x[x&lt;])*alpha\n    \n     x\n</code></pre>\n<p>normalised by volume/subvolume, not image</p>",
      "rawMarkdown": "lb0.829 ...\n\nnormalisation is the key\n\n```\ndef norm_by_percentile(volume, low=10, high=99.8, alpha=0.01):\n\txmin = np.percentile(volume,low)\n\txmax = np.percentile(volume,high)\n\tx = (volume-xmin)/(xmax-xmin)\n\tif 1:\n\t\tx[x>1]=(x[x>1]-1)*alpha +1\n\t\tx[x<0]=(x[x<0])*alpha\n\t#x = np.clip(x,0,1)\n\treturn x\n\n```\n\nnormalised by volume/subvolume, not image\n",
      "votes": 6,
      "replies": [
        {
          "id": 2554394,
          "postDate": "2023-12-09T05:50:07.933Z",
          "content": "<p><a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> - is this the right way to read 3D volume because i get negative stride error </p>\n<pre><code> (torch.utils.data.Dataset):\n ():\n    self.img_voxel = create_3d_voxel(img_voxel_paths)  \n    self.msk_voxel = create_3d_voxel_msk(msk_voxel_paths)  msk_voxel_paths    \n    self.transforms = transforms\n\n ():\n     self.img_voxel.shape[]  \n\n ():\n    img = self.img_voxel[index, :, :].copy()  \n    img = np.expand_dims(img, axis=)  \n\n     self.msk_voxel   :\n        msk = self.msk_voxel[index, :, :].copy()  \n        msk = np.expand_dims(msk, axis=)  \n\n         self.transforms:\n            data = self.transforms(image=img, mask=msk)\n            img = data[]\n            msk = data[]\n\n         torch.tensor(img, dtype=torch.float32), torch.tensor(msk, dtype=torch.float32)\n    :\n         self.transforms:\n            data = self.transforms(image=img)\n            img = data[]\n\n         torch.tensor(img, dtype=torch.float32)\n</code></pre>",
          "rawMarkdown": "@hengck23 - is this the right way to read 3D volume because i get negative stride error \n\n\n\n\n    class BuildDataset(torch.utils.data.Dataset):\n    def __init__(self, img_voxel_paths, msk_voxel_paths=[], transforms=None):\n        self.img_voxel = create_3d_voxel(img_voxel_paths)  # Load the 3D voxel for images\n        self.msk_voxel = create_3d_voxel_msk(msk_voxel_paths) if msk_voxel_paths else None  # Load the 3D voxel for masks\n        self.transforms = transforms\n\n    def __len__(self):\n        return self.img_voxel.shape[0]  # Number of slices in the voxel\n\n    def __getitem__(self, index):\n        img = self.img_voxel[index, :, :].copy()  # Extract the 2D slice from the image voxel\n        img = np.expand_dims(img, axis=0)  # Add channel dimension\n\n        if self.msk_voxel is not None:\n            msk = self.msk_voxel[index, :, :].copy()  # Extract the 2D slice from the mask voxel\n            msk = np.expand_dims(msk, axis=0)  # Add channel dimension\n\n            if self.transforms:\n                data = self.transforms(image=img, mask=msk)\n                img = data['image']\n                msk = data['mask']\n\n            return torch.tensor(img, dtype=torch.float32), torch.tensor(msk, dtype=torch.float32)\n        else:\n            if self.transforms:\n                data = self.transforms(image=img)\n                img = data['image']\n\n            return torch.tensor(img, dtype=torch.float32)\n\n",
          "replies": [
            {
              "id": 2554986,
              "postDate": "2023-12-09T15:36:51.937Z",
              "content": "<pre><code>def do_random_flip_rotate(, vessel):\n     ..rand()&lt;:\n          = .flip(, axis=) #horizontal\n        vessel = .flip(vessel,axis=)\n     ..rand()&lt;:\n          = .flip(, axis=)\n        vessel = .flip(vessel,axis=)\n     ..rand()&lt;:\n        k = ..choice([,,])\n          = .rot90(, k, =[,])\n        vessel = .rot90(vessel,k, =[,])\n\n     = .ascontiguousarray()\n    vessel = .ascontiguousarray(vessel)\n     , vessel\n</code></pre>",
              "rawMarkdown": "```\ndef do_random_flip_rotate(image, vessel):\n\tif np.random.rand()<0.5:\n\t\timage  = np.flip(image, axis=1) #horizontal\n\t\tvessel = np.flip(vessel,axis=1)\n\tif np.random.rand()<0.5:\n\t\timage  = np.flip(image, axis=0)\n\t\tvessel = np.flip(vessel,axis=0)\n\tif np.random.rand()<0.5:\n\t\tk = np.random.choice([1,2,3])\n\t\timage  = np.rot90(image, k, axes=[0,1])\n\t\tvessel = np.rot90(vessel,k, axes=[0,1])\n\n\timage = np.ascontiguousarray(image)\n\tvessel = np.ascontiguousarray(vessel)\n\treturn image, vessel\n\n```"
            },
            {
              "id": 2555557,
              "postDate": "2023-12-10T03:06:33.673Z",
              "content": "<p>still i face the same error </p>",
              "rawMarkdown": "still i face the same error "
            }
          ]
        }
      ]
    },
    {
      "id": 2541221,
      "postDate": "2023-11-28T09:58:56.980Z",
      "content": "<p>Yellow: MISS<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F88f268f9b529a2f68e9e111d53662121%2FPeek%202023-11-28%2017-51.gif?generation=1701165525275937&amp;alt=media\" alt=\"\"><br>\nGreen: FP<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F5cc5e3d3dcdca56155b2f4fa5b1ed96e%2FPeek%202023-11-28%2017-53.gif?generation=1701165506289118&amp;alt=media\" alt=\"\"><br>\nRed: HIT<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F57447a54514accc6fd1d3b1cfdebcef6%2FPeek%202023-11-28%2017-55.gif?generation=1701165488221412&amp;alt=media\" alt=\"\"><br>\nALL<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F65417fbd421b7741d417ae9ac74ee5ab%2FPeek%202023-11-28%2017-56.gif?generation=1701165472038050&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "Yellow: MISS\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F88f268f9b529a2f68e9e111d53662121%2FPeek%202023-11-28%2017-51.gif?generation=1701165525275937&alt=media)\nGreen: FP\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F5cc5e3d3dcdca56155b2f4fa5b1ed96e%2FPeek%202023-11-28%2017-53.gif?generation=1701165506289118&alt=media)\nRed: HIT\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F57447a54514accc6fd1d3b1cfdebcef6%2FPeek%202023-11-28%2017-55.gif?generation=1701165488221412&alt=media)\nALL\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F65417fbd421b7741d417ae9ac74ee5ab%2FPeek%202023-11-28%2017-56.gif?generation=1701165472038050&alt=media)",
      "votes": 5
    },
    {
      "id": 2538299,
      "postDate": "2023-11-26T02:17:31.723Z",
      "content": "<p>beware !!!<br>\nit is not any vessel, but those from \" arterial vascular tree \"</p>\n<p>data page: \"kidney_1_dense - The whole of a right kidney at 50um resolution. The entire 3D arterial vascular tree … \"</p>\n<hr>\n<p>here you can see that not all vessel are annotated (kidney dense 1)<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F36a823d5c809fe74c99f774a7cfbd507%2FSelection_999(4051).png?generation=1700964826477601&amp;alt=media\" alt=\"\"><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F0a6889dcdc38de11f00ae61ae74b68f1%2FSelection_999(4050).png?generation=1700964841203613&amp;alt=media\" alt=\"\"></p>\n<p>i was wondering do we need to separate arterial and venous?<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F622be63c31bba65e4de644cad69ae98f%2FSelection_999(4052).png?generation=1700965019077924&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "beware !!!\nit is not any vessel, but those from \" arterial vascular tree \"\n\ndata page: \"kidney_1_dense - The whole of a right kidney at 50um resolution. The entire 3D arterial vascular tree ... \"\n\n---\n\n\nhere you can see that not all vessel are annotated (kidney dense 1)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F36a823d5c809fe74c99f774a7cfbd507%2FSelection_999(4051).png?generation=1700964826477601&alt=media)![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F0a6889dcdc38de11f00ae61ae74b68f1%2FSelection_999(4050).png?generation=1700964841203613&alt=media)\n\n\ni was wondering do we need to separate arterial and venous?\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F622be63c31bba65e4de644cad69ae98f%2FSelection_999(4052).png?generation=1700965019077924&alt=media)\n",
      "votes": 5,
      "replies": [
        {
          "id": 2539277,
          "postDate": "2023-11-26T23:46:45.630Z",
          "content": "<p>i am surprised that the deep CNN nework can somhow differentate between venous and arterial (target) vessel from one imgae.</p>\n<p>can anyone explain why?<br>\n(e.g.  they have different apperance due to dye/contrast when the Hip CT scan is taken ??? or arterial vessel have thicker wall ???)</p>",
          "rawMarkdown": "i am surprised that the deep CNN nework can somhow differentate between venous and arterial (target) vessel from one imgae.\n\ncan anyone explain why?\n(e.g.  they have different apperance due to dye/contrast when the Hip CT scan is taken ??? or arterial vessel have thicker wall ???)",
          "votes": 2,
          "replies": [
            {
              "id": 2539288,
              "postDate": "2023-11-27T00:02:44.373Z",
              "content": "<p>The structure of the membrane differs significantly between arteries and veins. Arteries are richer in elastic fibres and thicker than veins. The walls of arteries and veins are very different, as can be seen in the linked histological image (HE-stain).<br>\n<a href=\"https://www.kidneypathology.com/English_version/Vessels_histology.htm\" target=\"_blank\">https://www.kidneypathology.com/English_version/Vessels_histology.htm</a></p>",
              "rawMarkdown": "The structure of the membrane differs significantly between arteries and veins. Arteries are richer in elastic fibres and thicker than veins. The walls of arteries and veins are very different, as can be seen in the linked histological image (HE-stain).\nhttps://www.kidneypathology.com/English_version/Vessels_histology.htm",
              "votes": 6
            },
            {
              "id": 2539290,
              "postDate": "2023-11-27T00:10:58.743Z",
              "content": "<p><a href=\"https://www.kaggle.com/yosukeyama\" target=\"_blank\">@yosukeyama</a> <br>\n\"The walls of arteries and veins are very different, \"</p>\n<p>Thanks. <br>\nThat is good news<br>\nso it seen that we need not grow the tree from scratch. just pure detection (+ post processing) is probably enough.</p>",
              "rawMarkdown": "@yosukeyama \n\"The walls of arteries and veins are very different, \"\n\nThanks. \nThat is good news\nso it seen that we need not grow the tree from scratch. just pure detection (+ post processing) is probably enough.",
              "votes": 2
            }
          ]
        }
      ]
    },
    {
      "id": 2537534,
      "postDate": "2023-11-25T08:57:03.293Z",
      "content": "<p><strong>very bad news !!!</strong><br>\ni try to do some probing.</p>\n<p>public lb set: kidney 5<br>\nprivate lb set: kidney 6</p>\n<h2>don't overfit … there could be shakeup. worst still, what if kidney 5 and 6 are of different um resolution???</h2>\n<p>you may want to verify yourself ( just in case my code is buggy)</p>",
      "rawMarkdown": "**very bad news !!!**\ni try to do some probing.\n\npublic lb set: kidney 5\nprivate lb set: kidney 6\n\ndon't overfit ... there could be shakeup. worst still, what if kidney 5 and 6 are of different um resolution???\n---\n\nyou may want to verify yourself ( just in case my code is buggy)",
      "votes": 6,
      "replies": [
        {
          "id": 2537624,
          "postDate": "2023-11-25T11:05:56.733Z",
          "content": "<p>I think your guess is correct because I had the same result when I did LB Probing before. (Public is calculated on kidney_5 only, Private is calculated on kidney_6 only.)<br>\nI think it was reasonable to separate Public and Private by kidney_5 and kidney_6 because it is difficult to calculate metrics with such a high computational load more times than necessary.</p>\n<p>I agree with you that the information on the test dataset is rarely publicly available, which causes Big Shake in the worst case scenario.</p>",
          "rawMarkdown": "I think your guess is correct because I had the same result when I did LB Probing before. (Public is calculated on kidney_5 only, Private is calculated on kidney_6 only.)\nI think it was reasonable to separate Public and Private by kidney_5 and kidney_6 because it is difficult to calculate metrics with such a high computational load more times than necessary.\n\nI agree with you that the information on the test dataset is rarely publicly available, which causes Big Shake in the worst case scenario.",
          "votes": 3,
          "replies": [
            {
              "id": 2537870,
              "postDate": "2023-11-25T15:06:39.347Z",
              "content": "<p>It was not hard to imagine that this kind of data split is being used.</p>\n<p>If the resolution is different, I believe it essentially becomes a completely different image. Since we only have two types of resolution available, appropriate validation is very difficult. While it's not entirely unfeasible, there is a concern that it will turn into a competition heavily influenced by luck. In this case, the top solutions may not necessarily be the superior solutions…</p>",
              "rawMarkdown": "It was not hard to imagine that this kind of data split is being used.\n\nIf the resolution is different, I believe it essentially becomes a completely different image. Since we only have two types of resolution available, appropriate validation is very difficult. While it's not entirely unfeasible, there is a concern that it will turn into a competition heavily influenced by luck. In this case, the top solutions may not necessarily be the superior solutions...",
              "votes": 1
            },
            {
              "id": 2547015,
              "postDate": "2023-12-03T05:10:06.350Z",
              "content": "<p>what if private kidney6 (500 images) is actually like kidney1 voi set at about 5.2um resolution.<br>\ni cannot think of a reason why kidney1 voi set is included in the train set ….</p>",
              "rawMarkdown": "what if private kidney6 (500 images) is actually like kidney1 voi set at about 5.2um resolution.\ni cannot think of a reason why kidney1 voi set is included in the train set ...."
            },
            {
              "id": 2549080,
              "postDate": "2023-12-05T02:07:19.907Z",
              "content": "<p>Something funny is my best score 0.62 is from mixing everything… I will probably remove the sparse and see if that makes a difference</p>",
              "rawMarkdown": "Something funny is my best score 0.62 is from mixing everything... I will probably remove the sparse and see if that makes a difference"
            }
          ]
        }
      ]
    },
    {
      "id": 2612593,
      "postDate": "2024-01-21T13:42:56.723Z",
      "content": "<p>experiments on scale … yet another proof that it is FP that matters …</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F689d2443d12433d50098972a223f2516%2FSelection_999(4657).png?generation=1705844574982811&amp;alt=media\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F97a9b38d338e4373bd8c7463fcaca5bc%2FSelection_999(4658).png?generation=1705844565213916&amp;alt=media\"></p>",
      "rawMarkdown": "experiments on scale ... yet another proof that it is FP that matters ...\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F689d2443d12433d50098972a223f2516%2FSelection_999(4657).png?generation=1705844574982811&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F97a9b38d338e4373bd8c7463fcaca5bc%2FSelection_999(4658).png?generation=1705844565213916&alt=media)",
      "votes": 3,
      "replies": [
        {
          "id": 2612649,
          "postDate": "2024-01-21T14:14:09.037Z",
          "content": "<p>OOPS!!! there is a metric bug<br>\n(this is behaviour for kidney2. maybe different behaviour for different kidney)</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F612b59de52eaa1179ccb4c3b16394857%2FSelection_999(4662).png?generation=1705846447352595&amp;alt=media\"></p>",
          "rawMarkdown": "OOPS!!! there is a metric bug\n(this is behaviour for kidney2. maybe different behaviour for different kidney)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F612b59de52eaa1179ccb4c3b16394857%2FSelection_999(4662).png?generation=1705846447352595&alt=media)",
          "replies": [
            {
              "id": 2612806,
              "postDate": "2024-01-21T16:30:28.037Z",
              "content": "<p>Hello <a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a>,<br>\nSince your conclusion is that fp matters, have you considered using the <a href=\"https://smp.readthedocs.io/en/latest/losses.html#segmentation_models_pytorch.losses.TverskyLoss\" target=\"_blank\">TverskyLoss</a> ? </p>\n<p>With it you can weight the impact of FP and FN, making the loss closer to the metric. What do you think ?</p>",
              "rawMarkdown": "Hello @hengck23,\nSince your conclusion is that fp matters, have you considered using the [TverskyLoss](https://smp.readthedocs.io/en/latest/losses.html#segmentation_models_pytorch.losses.TverskyLoss) ? \n\nWith it you can weight the impact of FP and FN, making the loss closer to the metric. What do you think ?",
              "votes": 1
            }
          ]
        }
      ]
    },
    {
      "id": 2589059,
      "postDate": "2024-01-06T03:02:02.963Z",
      "content": "<p>an interesting idea<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc777e469f711c48ae77c01ff5632bc8b%2FSelection_999(4527).png?generation=1704510120822206&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "an interesting idea\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc777e469f711c48ae77c01ff5632bc8b%2FSelection_999(4527).png?generation=1704510120822206&alt=media)",
      "votes": 4
    },
    {
      "id": 2568987,
      "postDate": "2023-12-21T02:37:35.190Z",
      "content": "<p>How long does it take for you to inference with Transformer, it seems that P100 without fp16 inference is very slow for Transformer, do you have any suggestions for this?</p>",
      "rawMarkdown": "How long does it take for you to inference with Transformer, it seems that P100 without fp16 inference is very slow for Transformer, do you have any suggestions for this?",
      "votes": 3,
      "replies": [
        {
          "id": 2568996,
          "postDate": "2023-12-21T02:45:12.713Z",
          "content": "<p>you can google for fast transformer. i use nextvit, which was used in kaggle rnsa breast mamnographs before. it takes 3to4 hr and can be speedup further by tensort rt to 3 hr</p>",
          "rawMarkdown": "you can google for fast transformer. i use nextvit, which was used in kaggle rnsa breast mamnographs before. it takes 3to4 hr and can be speedup further by tensort rt to 3 hr",
          "votes": 2,
          "replies": [
            {
              "id": 2569002,
              "postDate": "2023-12-21T02:53:01.587Z",
              "content": "<p>Thank you so much! </p>",
              "rawMarkdown": "Thank you so much! "
            },
            {
              "id": 2569013,
              "postDate": "2023-12-21T03:04:22.723Z",
              "content": "<p>update: nextVIT-base can get LB0.682 3hr 20 min (just complete in few minutes along so i can get the timing in minutes).</p>\n<p>it uses 5xTTA + 3 axis (xy,yz,xz) in P100</p>",
              "rawMarkdown": "update: nextVIT-base can get LB0.682 3hr 20 min (just complete in few minutes along so i can get the timing in minutes).\n\nit uses 5xTTA + 3 axis (xy,yz,xz) in P100",
              "votes": 2
            },
            {
              "id": 2593750,
              "postDate": "2024-01-09T12:30:04.533Z",
              "content": "<p>Seems that nextVIT  is a kind of detection model. Should I modify the configuration of Q1&amp;Q2 Net for segmentation task when using? Thanks!</p>",
              "rawMarkdown": "Seems that nextVIT  is a kind of detection model. Should I modify the configuration of Q1&Q2 Net for segmentation task when using? Thanks!"
            }
          ]
        },
        {
          "id": 2569004,
          "postDate": "2023-12-21T02:55:23.350Z",
          "content": "<p>Try fp16 + 2xT4 + nn.DataParallel, for me it's faster than using single P100</p>\n<p>The model I choose is very slow [maxvit-small], <br>\nand scoring single checkpoint with xy/yz/xz + 5tta takes 8 hours… </p>\n<p>should try Next-ViT I think :D </p>",
          "rawMarkdown": "Try fp16 + 2xT4 + nn.DataParallel, for me it's faster than using single P100\n\nThe model I choose is very slow [maxvit-small], \nand scoring single checkpoint with xy/yz/xz + 5tta takes 8 hours... \n\nshould try Next-ViT I think :D ",
          "replies": [
            {
              "id": 2569034,
              "postDate": "2023-12-21T03:23:30.103Z",
              "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F2d5e11a186a047d2f13d10b613c413a7%2FSelection_999(4447).png?generation=1703128978938372&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F859e0cdb0b7ab614c159c4721cbc7623%2FSelection_999(4446).png?generation=1703128988887048&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F22550ca323f59dec3a1069decd0042db%2FSelection_999(4445).png?generation=1703129001328081&amp;alt=media\" alt=\"\"></p>\n<p>the fastest i can find</p>",
              "rawMarkdown": "![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F2d5e11a186a047d2f13d10b613c413a7%2FSelection_999(4447).png?generation=1703128978938372&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F859e0cdb0b7ab614c159c4721cbc7623%2FSelection_999(4446).png?generation=1703128988887048&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F22550ca323f59dec3a1069decd0042db%2FSelection_999(4445).png?generation=1703129001328081&alt=media)\n\nthe fastest i can find",
              "votes": 2
            }
          ]
        }
      ]
    },
    {
      "id": 2583079,
      "postDate": "2024-01-02T03:59:54.163Z",
      "content": "<p>did we just find the missing labels (for sparsely annotated ground truth labels)?<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F7d59d1157c40bcddd6013b488ad8adbc%2FSelection_999(4513).png?generation=1704167987606057&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "did we just find the missing labels (for sparsely annotated ground truth labels)?\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F7d59d1157c40bcddd6013b488ad8adbc%2FSelection_999(4513).png?generation=1704167987606057&alt=media)\n",
      "votes": 4,
      "replies": [
        {
          "id": 2584002,
          "postDate": "2024-01-02T16:20:37.963Z",
          "content": "<p>GJ. I believe both sparse and dense have labeling issues (imho, cuz I`m not a doctor). Looked through and found even pretty big vessels missed. Thx for sharing.<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F621304%2F6ffbfd469eb507bb65297d3740dc3cba%2Fezgif-1-83993798fe_3.gif?generation=1704212371219171&amp;alt=media\" alt=\"\"></p>",
          "rawMarkdown": "GJ. I believe both sparse and dense have labeling issues (imho, cuz I`m not a doctor). Looked through and found even pretty big vessels missed. Thx for sharing.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F621304%2F6ffbfd469eb507bb65297d3740dc3cba%2Fezgif-1-83993798fe_3.gif?generation=1704212371219171&alt=media)",
          "votes": 4,
          "replies": [
            {
              "id": 2584509,
              "postDate": "2024-01-03T02:12:53.013Z",
              "content": "<p>yes you are correct.</p>\n<p>an easy way to prove label error is to check train error after overfitting.</p>\n<ol>\n<li>slowly increase the network parameter (e.g. resnet18,34,50,101 …)</li>\n<li>train with small datsaet until overfit</li>\n</ol>\n<p>now if the train error cannot get to zero, waht can be the reason?</p>\n<ol>\n<li>not enough parameter (can be verify by increasing parameter)</li>\n<li>wrong label (can be verify by visualisation, i.e. draw the fp and miss)</li>\n</ol>",
              "rawMarkdown": "yes you are correct.\n\nan easy way to prove label error is to check train error after overfitting.\n\n1. slowly increase the network parameter (e.g. resnet18,34,50,101 ...)\n2. train with small datsaet until overfit\n\nnow if the train error cannot get to zero, waht can be the reason?\n1. not enough parameter (can be verify by increasing parameter)\n2. wrong label (can be verify by visualisation, i.e. draw the fp and miss)",
              "votes": 3
            },
            {
              "id": 2585299,
              "postDate": "2024-01-03T14:01:55.690Z",
              "content": "<p>Exactly. Heavy backbones perform nearly identically as small ones</p>",
              "rawMarkdown": "Exactly. Heavy backbones perform nearly identically as small ones"
            }
          ]
        }
      ]
    },
    {
      "id": 2560936,
      "postDate": "2023-12-14T06:01:20.913Z",
      "content": "<p>just an idea:</p>\n<p>takes 2 nearby slices and generate vessels in between, both image and mask</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F4ee1367bb6b99b88ba2d31c938b15191%2FSelection_999(4402).png?generation=1702533674316871&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "just an idea:\n\ntakes 2 nearby slices and generate vessels in between, both image and mask\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F4ee1367bb6b99b88ba2d31c938b15191%2FSelection_999(4402).png?generation=1702533674316871&alt=media)",
      "votes": 3
    },
    {
      "id": 2542002,
      "postDate": "2023-11-29T01:59:04.420Z",
      "content": "<p>i hope there is no bug, but mixing kidney 1 and 3 in train make LB (much worse)<br>\nreference: train with kidney 1 only: LB 0.757</p>\n<p>submit inference mode: add TTA 2xflip,3xrot90 only<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F71837a4178ef96b35c64d94684f90a50%2FSelection_999(4107).png?generation=1701223141188369&amp;alt=media\" alt=\"\"></p>\n<p>since there is no validation set, i just train to the same number of iterations from previous experiments.<br>\nthis may not be optimal (and hence not optimal lb)???</p>",
      "rawMarkdown": "i hope there is no bug, but mixing kidney 1 and 3 in train make LB (much worse)\nreference: train with kidney 1 only: LB 0.757\n\nsubmit inference mode: add TTA 2xflip,3xrot90 only\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F71837a4178ef96b35c64d94684f90a50%2FSelection_999(4107).png?generation=1701223141188369&alt=media)\n\nsince there is no validation set, i just train to the same number of iterations from previous experiments.\nthis may not be optimal (and hence not optimal lb)???",
      "votes": 3,
      "replies": [
        {
          "id": 2542803,
          "postDate": "2023-11-29T14:34:10.877Z",
          "content": "<p>I trained initially on kidney 1, by adding also kidney 3 improved my LB from 0.65 -&gt; 0.7. I do not know how to compare their resolutions but looks like they have pretty similar ones with 50um and 50.16um. The question would be if LB is also 50um and private something completly different </p>",
          "rawMarkdown": "I trained initially on kidney 1, by adding also kidney 3 improved my LB from 0.65 -> 0.7. I do not know how to compare their resolutions but looks like they have pretty similar ones with 50um and 50.16um. The question would be if LB is also 50um and private something completly different ",
          "votes": 2,
          "replies": [
            {
              "id": 2542830,
              "postDate": "2023-11-29T14:48:01.933Z",
              "content": "<p>Thanks, i will check again</p>",
              "rawMarkdown": "Thanks, i will check again"
            }
          ]
        }
      ]
    },
    {
      "id": 2539766,
      "postDate": "2023-11-27T09:53:46.590Z",
      "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F9815c2618468fcef78460941c6ec295b%2FSelection_999(4078).png?generation=1701078765760475&amp;alt=media\" alt=\"\"></p>\n<p>use 3d connected components to filter false positive errors<br>\n<a href=\"https://pypi.org/project/connected-components-3d/\" target=\"_blank\">https://pypi.org/project/connected-components-3d/</a></p>",
      "rawMarkdown": "![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F9815c2618468fcef78460941c6ec295b%2FSelection_999(4078).png?generation=1701078765760475&alt=media)\n\nuse 3d connected components to filter false positive errors\nhttps://pypi.org/project/connected-components-3d/",
      "votes": 3,
      "replies": [
        {
          "id": 2585165,
          "postDate": "2024-01-03T12:05:58.397Z",
          "content": "<p>In your notebook <a href=\"url\" target=\"_blank\">https://www.kaggle.com/code/hengck23/lb0-808-resnet50-2d-unet-xy-zy-zx-cc3d</a> you didn't use connected-components-3d:<br>\n<code>cc_threshold = -1</code><br>\nWhat were your results using cc3d?</p>",
          "rawMarkdown": "In your notebook [https://www.kaggle.com/code/hengck23/lb0-808-resnet50-2d-unet-xy-zy-zx-cc3d](url) you didn't use connected-components-3d:\n`cc_threshold = -1`\nWhat were your results using cc3d?"
        }
      ]
    },
    {
      "id": 2537011,
      "postDate": "2023-11-24T16:50:32.557Z",
      "content": "<p>useful:<br>\n<a href=\"https://github.com/JacobBumgarner/VesselVio/tree/main\" target=\"_blank\">https://github.com/JacobBumgarner/VesselVio/tree/main</a><br>\nVesselVio is an open-source application designed for the analysis and visualization of segmented vasculature datasets.</p>",
      "rawMarkdown": "useful:\nhttps://github.com/JacobBumgarner/VesselVio/tree/main\nVesselVio is an open-source application designed for the analysis and visualization of segmented vasculature datasets.",
      "votes": 3
    },
    {
      "id": 2539668,
      "postDate": "2023-11-27T08:53:42.917Z",
      "content": "<p><a href=\"https://blog.research.google/2021/06/a-browsable-petascale-reconstruction-of.html\" target=\"_blank\">https://blog.research.google/2021/06/a-browsable-petascale-reconstruction-of.html</a><br>\nthis competition reminds me of the ancient google paper on flood filling network (FFN)</p>\n<pre><code>grow_mask = \n</code></pre>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fac63fb84563f14ea23aa7d6aa4f5f80a%2Fartificialne.jpg?generation=1701075207180931&amp;alt=media\" alt=\"\"><br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F8c6ac1934b1a49c53455c5d6e9059b22%2Fimage4.gif?generation=1701075219778016&amp;alt=media\" alt=\"\"><br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa301038a9c7d5635edc5ded3b75d674d%2FSelection_999(4077).png?generation=1701075493076458&amp;alt=media\" alt=\"\"><br>\nHigh-precision automated reconstruction of neurons with flood-filling networks<br>\n<a href=\"https://www.nature.com/articles/s41592-018-0049-4\" target=\"_blank\">https://www.nature.com/articles/s41592-018-0049-4</a><br>\n<a href=\"https://www.biorxiv.org/content/10.1101/200675v1.full\" target=\"_blank\">https://www.biorxiv.org/content/10.1101/200675v1.full</a><br>\n<a href=\"https://www.mpg.de/12130750/neural-networks-connectome\" target=\"_blank\">https://www.mpg.de/12130750/neural-networks-connectome</a><br>\n<a href=\"https://www.youtube.com/watch?v=46SksPonI8I\" target=\"_blank\">https://www.youtube.com/watch?v=46SksPonI8I</a></p>",
      "rawMarkdown": "\nhttps://blog.research.google/2021/06/a-browsable-petascale-reconstruction-of.html\nthis competition reminds me of the ancient google paper on flood filling network (FFN)\n\n```\ngrow_mask = FFN(input, mask)\n\n```\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fac63fb84563f14ea23aa7d6aa4f5f80a%2Fartificialne.jpg?generation=1701075207180931&alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F8c6ac1934b1a49c53455c5d6e9059b22%2Fimage4.gif?generation=1701075219778016&alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa301038a9c7d5635edc5ded3b75d674d%2FSelection_999(4077).png?generation=1701075493076458&alt=media)\n\n\n\nHigh-precision automated reconstruction of neurons with flood-filling networks\nhttps://www.nature.com/articles/s41592-018-0049-4\nhttps://www.biorxiv.org/content/10.1101/200675v1.full\n\n\nhttps://www.mpg.de/12130750/neural-networks-connectome\nhttps://www.youtube.com/watch?v=46SksPonI8I",
      "votes": 4
    },
    {
      "id": 2539259,
      "postDate": "2023-11-26T22:40:58.537Z",
      "content": "<p>GCO post processing:<br>\n(Global Constructive Optimization algorithm for generating smaller vessels)<br>\n[1] A Hybrid Approach to Full-Scale Reconstruction of Renal Arterial Network<br>\n<a href=\"https://arxiv.org/pdf/2303.01837.pdf\" target=\"_blank\">https://arxiv.org/pdf/2303.01837.pdf</a></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fd5798930fc9496d763a11c85748f2ed1%2FSelection_999(4060).png?generation=1701038372973913&amp;alt=media\" alt=\"\"></p>\n<p>(e) is results from your deep network. <br>\n(j) is the results of tree growing with GCO</p>",
      "rawMarkdown": "GCO post processing:\n(Global Constructive Optimization algorithm for generating smaller vessels)\n[1] A Hybrid Approach to Full-Scale Reconstruction of Renal Arterial Network\nhttps://arxiv.org/pdf/2303.01837.pdf\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fd5798930fc9496d763a11c85748f2ed1%2FSelection_999(4060).png?generation=1701038372973913&alt=media)\n\n(e) is results from your deep network. \n(j) is the results of tree growing with GCO",
      "votes": 4
    },
    {
      "id": 2539254,
      "postDate": "2023-11-26T22:21:04.207Z",
      "content": "<p>proposed solution:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F23665654c97f956393f163ab991e4bb6%2FSelection_999(4059).png?generation=1701037259106090&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "proposed solution:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F23665654c97f956393f163ab991e4bb6%2FSelection_999(4059).png?generation=1701037259106090&alt=media)",
      "votes": 4,
      "replies": [
        {
          "id": 2541716,
          "postDate": "2023-11-28T18:04:49.917Z",
          "content": "<p>are you planning to apply a patch based approach? or taking the whole image into account? will we be able to fit the whole image into memory with the kaggle infrastructure? </p>",
          "rawMarkdown": "are you planning to apply a patch based approach? or taking the whole image into account? will we be able to fit the whole image into memory with the kaggle infrastructure? ",
          "votes": 1
        }
      ]
    },
    {
      "id": 2560267,
      "postDate": "2023-12-13T12:29:28.990Z",
      "content": "<p>useful<br>\n<a href=\"https://github.com/PengyiZhang/RegionGrowth\" target=\"_blank\">https://github.com/PengyiZhang/RegionGrowth</a><br>\n<a href=\"https://github.com/ylmzkaan/3DRegionGrowing\" target=\"_blank\">https://github.com/ylmzkaan/3DRegionGrowing</a><br>\n<a href=\"http://notmatthancock.github.io/2017/10/09/region-growing-wrapping-c.html\" target=\"_blank\">http://notmatthancock.github.io/2017/10/09/region-growing-wrapping-c.html</a></p>",
      "rawMarkdown": "useful\nhttps://github.com/PengyiZhang/RegionGrowth\nhttps://github.com/ylmzkaan/3DRegionGrowing\nhttp://notmatthancock.github.io/2017/10/09/region-growing-wrapping-c.html",
      "votes": 1
    },
    {
      "id": 2557787,
      "postDate": "2023-12-11T17:02:19.657Z",
      "content": "<p>high resolution 2d/3d unet solution !!!</p>\n<p>demo notebook :<a href=\"https://www.kaggle.com/code/hengck23/2d-to-3d-unet-demo\" target=\"_blank\">https://www.kaggle.com/code/hengck23/2d-to-3d-unet-demo</a></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F1616c648d75df30b4c8ccceedb5eb8f6%2FSelection_999(4362).png?generation=1702314125458912&amp;alt=media\" alt=\"\"><br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F74e23e8d6c4b12748102003e0981e98a%2FSelection_999(4363).png?generation=1702314137160715&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "high resolution 2d/3d unet solution !!!\n\ndemo notebook :https://www.kaggle.com/code/hengck23/2d-to-3d-unet-demo\n\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F1616c648d75df30b4c8ccceedb5eb8f6%2FSelection_999(4362).png?generation=1702314125458912&alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F74e23e8d6c4b12748102003e0981e98a%2FSelection_999(4363).png?generation=1702314137160715&alt=media)\n\n",
      "votes": 1,
      "replies": [
        {
          "id": 2557825,
          "postDate": "2023-12-11T17:36:11.030Z",
          "content": "<p>how to properly design 3d solution.</p>\n<p>if you cannot fit a single 3d net work (because of memory GPU constraint), <br>\nyou properly need at least 2 net (of different hierarchy scale).</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Faba1ca9b68fe072afcf39f2eb9398793%2FSelection_999(4365).png?generation=1702316114508754&amp;alt=media\" alt=\"\"></p>",
          "rawMarkdown": "how to properly design 3d solution.\n\nif you cannot fit a single 3d net work (because of memory GPU constraint), \nyou properly need at least 2 net (of different hierarchy scale).\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Faba1ca9b68fe072afcf39f2eb9398793%2FSelection_999(4365).png?generation=1702316114508754&alt=media)\n",
          "votes": 3
        }
      ]
    },
    {
      "id": 2557712,
      "postDate": "2023-12-11T16:16:41.053Z",
      "content": "<p>posting it here for visibility Patch based 3D UNET + TF + TPU: <a href=\"https://www.kaggle.com/code/dhinkris/training-patch-based-3d-unet-tf-tpu\" target=\"_blank\">https://www.kaggle.com/code/dhinkris/training-patch-based-3d-unet-tf-tpu</a></p>",
      "rawMarkdown": "posting it here for visibility Patch based 3D UNET + TF + TPU: https://www.kaggle.com/code/dhinkris/training-patch-based-3d-unet-tf-tpu",
      "votes": 1,
      "replies": [
        {
          "id": 2557807,
          "postDate": "2023-12-11T17:15:07.697Z",
          "content": "<p>you should try these pretrain 3d unet<br>\n<a href=\"https://github.com/Tencent/MedicalNet\" target=\"_blank\">https://github.com/Tencent/MedicalNet</a></p>",
          "rawMarkdown": "you should try these pretrain 3d unet\nhttps://github.com/Tencent/MedicalNet",
          "votes": 1
        }
      ]
    },
    {
      "id": 2556787,
      "postDate": "2023-12-11T01:36:50.620Z",
      "content": "<p><a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> how do you stack the 2Dslice to 3D in kaggle inference , i get memory overflow error </p>",
      "rawMarkdown": "@hengck23 how do you stack the 2Dslice to 3D in kaggle inference , i get memory overflow error ",
      "votes": 1,
      "replies": [
        {
          "id": 2556823,
          "postDate": "2023-12-11T02:48:57.367Z",
          "content": "<p>i don't train in kaggle. i use my local machine</p>",
          "rawMarkdown": "i don't train in kaggle. i use my local machine",
          "replies": [
            {
              "id": 2557162,
              "postDate": "2023-12-11T09:00:58.290Z",
              "content": "<p>it is during inference, i stack the images as a 3D voxel but it lands in Your notebook tried to allocate more memory than is available </p>",
              "rawMarkdown": "it is during inference, i stack the images as a 3D voxel but it lands in Your notebook tried to allocate more memory than is available "
            },
            {
              "id": 2557166,
              "postDate": "2023-12-11T09:03:24.763Z",
              "content": "<p>stack as uint16 or uint8.<br>\nstack only one at a time (not both kidney 6,5)</p>",
              "rawMarkdown": "stack as uint16 or uint8.\nstack only one at a time (not both kidney 6,5)",
              "votes": 1
            },
            {
              "id": 2557175,
              "postDate": "2023-12-11T09:13:26.270Z",
              "content": "<p>ok, 1st stack kidney 5 generate df and stack kidney 6 generate df and then concat them </p>",
              "rawMarkdown": "ok, 1st stack kidney 5 generate df and stack kidney 6 generate df and then concat them ",
              "votes": 1
            }
          ]
        },
        {
          "id": 2558273,
          "postDate": "2023-12-12T03:28:12.807Z",
          "content": "<p>take a look at this thread: <a href=\"https://www.kaggle.com/competitions/blood-vessel-segmentation/discussion/453986\" target=\"_blank\">https://www.kaggle.com/competitions/blood-vessel-segmentation/discussion/453986</a></p>",
          "rawMarkdown": "take a look at this thread: https://www.kaggle.com/competitions/blood-vessel-segmentation/discussion/453986",
          "votes": 1
        }
      ]
    },
    {
      "id": 2555747,
      "postDate": "2023-12-10T06:38:29.373Z",
      "content": "<p>discrepancies happens and takes me several \"wasting\" hours to debug<br>\nthis affects how we set the threshold …</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Ff40d26a2fd0ef81938725dd053bf9dfe%2FSelection_999(4317).png?generation=1702190263074677&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "discrepancies happens and takes me several \"wasting\" hours to debug\nthis affects how we set the threshold ...\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Ff40d26a2fd0ef81938725dd053bf9dfe%2FSelection_999(4317).png?generation=1702190263074677&alt=media)",
      "votes": 1
    },
    {
      "id": 2552494,
      "postDate": "2023-12-07T14:01:56.467Z",
      "content": "<p>trying augmentation</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F711961849f08998cf722c6a864bfc5b7%2FPeek%202023-12-07%2022-00.gif?generation=1701957714420766&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "trying augmentation\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F711961849f08998cf722c6a864bfc5b7%2FPeek%202023-12-07%2022-00.gif?generation=1701957714420766&alt=media)",
      "votes": 1
    },
    {
      "id": 2552429,
      "postDate": "2023-12-07T12:58:51.760Z",
      "content": "<p>i think this is a good pretrain/self-supervised or aux loss:</p>\n<pre><code>input \npredict \naux target \n\npredict how the volume will \n\n</code></pre>",
      "rawMarkdown": "i think this is a good pretrain/self-supervised or aux loss:\n\n```\ninput vol(d,h,w)\npredict mask(d,h,w)\naux target vol(d+delta,h,w)\n\npredict how the volume will extrapolate\n(this requires the model to \"understand vessel\" and grow them)\n\n```",
      "votes": 1,
      "replies": [
        {
          "id": 2552480,
          "postDate": "2023-12-07T13:52:21.577Z",
          "content": "<p>good idea👍</p>",
          "rawMarkdown": "good idea👍",
          "replies": [
            {
              "id": 2552505,
              "postDate": "2023-12-07T14:12:46.793Z",
              "content": "<p>by measuring the aux error of hidden kidney5 and kidney6, we can also know if these can similar to train data or not :)<br>\nif we have enough time, online fine tuning is possible</p>",
              "rawMarkdown": "by measuring the aux error of hidden kidney5 and kidney6, we can also know if these can similar to train data or not :)\nif we have enough time, online fine tuning is possible"
            },
            {
              "id": 2558270,
              "postDate": "2023-12-12T03:17:16.893Z",
              "content": "<p>treat extrapolate as image prompting problem</p>\n<p>Sequential Modeling Enables Scalable Learning forLarge Vision Models<br>\n<a href=\"https://yutongbai.com/lvm.html\" target=\"_blank\">https://yutongbai.com/lvm.html</a></p>",
              "rawMarkdown": "treat extrapolate as image prompting problem\n\nSequential Modeling Enables Scalable Learning forLarge Vision Models\nhttps://yutongbai.com/lvm.html"
            }
          ]
        }
      ]
    },
    {
      "id": 2550965,
      "postDate": "2023-12-06T12:40:54.223Z",
      "content": "<p>quick experiments for kidney3 sparse as train:</p>\n<p>resnext26d- single class<br>\nthreshold=0.25<br>\nTTA=flip+rot90</p>\n<p>surface dice for kidney3 sparse/dense = 0.98 </p>\n<hr>\n<p>train =  kidney1 dense <br>\nvalid = kidney3 dense<br>\nLB = 0.747</p>\n<hr>\n<p>train =  kidney1 dense + kidney3 sparse <br>\nvalid = kidney3 dense<br>\nLB = 0.764</p>\n<p>no parameter tuning, etc</p>",
      "rawMarkdown": "quick experiments for kidney3 sparse as train:\n\nresnext26d- single class\nthreshold=0.25\nTTA=flip+rot90\n\nsurface dice for kidney3 sparse/dense = 0.98 \n\n---\n\ntrain =  kidney1 dense \nvalid = kidney3 dense\nLB = 0.747\n\n---\n\ntrain =  kidney1 dense + kidney3 sparse \nvalid = kidney3 dense\nLB = 0.764\n\nno parameter tuning, etc\n",
      "votes": 1
    },
    {
      "id": 2541738,
      "postDate": "2023-11-28T18:29:58.130Z",
      "content": "<p>What does \"model trained with multiview\" mean? Does it mean that supppose you have a simple 2d unet model and 3d voxel input, and during training you randomly choose which plane (XY, YZ, XZ) to take from that voxel and take the according mask?</p>\n<p>During inference we can use 3 tta (take 3 different views) for the same pixel, am I correct?</p>",
      "rawMarkdown": "What does \"model trained with multiview\" mean? Does it mean that supppose you have a simple 2d unet model and 3d voxel input, and during training you randomly choose which plane (XY, YZ, XZ) to take from that voxel and take the according mask?\n\nDuring inference we can use 3 tta (take 3 different views) for the same pixel, am I correct?",
      "votes": 1,
      "replies": [
        {
          "id": 2541739,
          "postDate": "2023-11-28T18:32:52.837Z",
          "content": "<p>you can correct</p>",
          "rawMarkdown": "you can correct",
          "votes": 1,
          "replies": [
            {
              "id": 2541787,
              "postDate": "2023-11-28T19:34:21.820Z",
              "content": "<p>this is temporarily / baseline solution. not the best. (3d cnn should be much better)</p>\n<p>more train data /TTA if you use random slice<br>\n(or random 3d rotation + regular 2d slice)</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F5573c2ac1a06e77722467f2b97722c84%2Fe0a390f43f1888add95e83d9e99c9cb66d403b3e.png?generation=1701200001550844&amp;alt=media\" alt=\"\"></p>\n<p><a href=\"https://github.com/teamtomo/libtilt/blob/b09dd9b245a3ca48354161cb6126d192a6af3e78/src/libtilt/interpolation/interpolate_image_3d.py#L10\" target=\"_blank\">https://github.com/teamtomo/libtilt/blob/b09dd9b245a3ca48354161cb6126d192a6af3e78/src/libtilt/interpolation/interpolate_image_3d.py#L10</a></p>\n<pre><code>def extract_from_image_3d(\n    image: torch.Tensor,\n    coordinates: torch.Tensor\n) -&gt; torch.Tensor:\n    \n\n    Parameters\n    ----------\n    image: torch.Tensor\n        `(d, h, )` volume.\n    coordinates: torch.Tensor\n        `(..., zyx)` array of coordinates at which `image` should  sampled.\n        Coordinates should  ordered zyx, aligned with image dimensions `(d, h, )`.\n        Coordinates should  array coordinates, spanning `[, -]`  \n        dimension of length .\n</code></pre>",
              "rawMarkdown": "this is temporarily / baseline solution. not the best. (3d cnn should be much better)\n\nmore train data /TTA if you use random slice\n(or random 3d rotation + regular 2d slice)\n\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F5573c2ac1a06e77722467f2b97722c84%2Fe0a390f43f1888add95e83d9e99c9cb66d403b3e.png?generation=1701200001550844&alt=media)\n\nhttps://github.com/teamtomo/libtilt/blob/b09dd9b245a3ca48354161cb6126d192a6af3e78/src/libtilt/interpolation/interpolate_image_3d.py#L10\n\n```\n\ndef extract_from_image_3d(\n    image: torch.Tensor,\n    coordinates: torch.Tensor\n) -> torch.Tensor:\n    \"\"\"Sample a volume with linear interpolation.\n\n    Parameters\n    ----------\n    image: torch.Tensor\n        `(d, h, w)` volume.\n    coordinates: torch.Tensor\n        `(..., zyx)` array of coordinates at which `image` should be sampled.\n        Coordinates should be ordered zyx, aligned with image dimensions `(d, h, w)`.\n        Coordinates should be array coordinates, spanning `[0, N-1]` for a\n        dimension of length N.\n```",
              "votes": 3
            }
          ]
        }
      ]
    },
    {
      "id": 2558139,
      "postDate": "2023-12-11T23:43:12.623Z",
      "content": "<p>[1] Memory transformers for full context and high-resolution 3D Medical Segmentation<br>\n<a href=\"https://arxiv.org/pdf/2210.05313.pdf\" target=\"_blank\">https://arxiv.org/pdf/2210.05313.pdf</a></p>\n<p>\"Combined, they allow full attention over high resolution images, e.g. 512 x 512 x 256 voxels and above. Experiments on the BCV image segmentation dataset shows better performances than state-of-the-art CNN and transformer baselines, ….\"<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F81a6490b732e022cd6f0678f6c602a51%2FSelection_999(4370).png?generation=1702338190685756&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "[1] Memory transformers for full context and high-resolution 3D Medical Segmentation\nhttps://arxiv.org/pdf/2210.05313.pdf\n\n\"Combined, they allow full attention over high resolution images, e.g. 512 x 512 x 256 voxels and above. Experiments on the BCV image segmentation dataset shows better performances than state-of-the-art CNN and transformer baselines, ....\"\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F81a6490b732e022cd6f0678f6c602a51%2FSelection_999(4370).png?generation=1702338190685756&alt=media)\n",
      "votes": 2
    },
    {
      "id": 2556821,
      "postDate": "2023-12-11T02:46:43.043Z",
      "content": "<p>why you need self-supervised learning<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F16ab1afd3a595132b6488e6dab19dc1e%2FSelection_999(4338).png?generation=1702262797754051&amp;alt=media\" alt=\"\"></p>\n<p>_50um_LADAF-2020-31_kidney : 1644x1108,2141</p>",
      "rawMarkdown": "why you need self-supervised learning\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F16ab1afd3a595132b6488e6dab19dc1e%2FSelection_999(4338).png?generation=1702262797754051&alt=media)\n\n_50um_LADAF-2020-31_kidney : 1644x1108,2141\n",
      "votes": 2,
      "replies": [
        {
          "id": 2556824,
          "postDate": "2023-12-11T02:49:32.700Z",
          "content": "<p>HINT: it is easier to check if this is kidney 5 or 6</p>",
          "rawMarkdown": "HINT: it is easier to check if this is kidney 5 or 6",
          "replies": [
            {
              "id": 2557364,
              "postDate": "2023-12-11T12:46:43.260Z",
              "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fb3e354c788cc28eb4ecc8f4c47bfe9cb%2FSelection_999(4356).png?generation=1702298787463603&amp;alt=media\" alt=\"\"><br>\nquite noisy</p>",
              "rawMarkdown": "![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fb3e354c788cc28eb4ecc8f4c47bfe9cb%2FSelection_999(4356).png?generation=1702298787463603&alt=media)\nquite noisy"
            }
          ]
        }
      ]
    },
    {
      "id": 2554297,
      "postDate": "2023-12-09T03:00:08.730Z",
      "content": "<p>if the holding cylinder is the same, this gives away the size and voxel resolution of the object</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F8f786a337a36b871e100035520f0e34f%2FSelection_999(4289).png?generation=1702090766447526&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F396b2c54d8a93cd1aab3f9ca168f6468%2FSelection_999(4328).png?generation=1702258596888327&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "if the holding cylinder is the same, this gives away the size and voxel resolution of the object\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F8f786a337a36b871e100035520f0e34f%2FSelection_999(4289).png?generation=1702090766447526&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F396b2c54d8a93cd1aab3f9ca168f6468%2FSelection_999(4328).png?generation=1702258596888327&alt=media)",
      "votes": 2
    },
    {
      "id": 2550076,
      "postDate": "2023-12-05T18:25:24.043Z",
      "content": "<p>this is why the vessel are detected as broken</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc82f66f71452b66518ef361f8c2a58ca%2FSelection_999(4258).png?generation=1701800721703848&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "this is why the vessel are detected as broken\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc82f66f71452b66518ef361f8c2a58ca%2FSelection_999(4258).png?generation=1701800721703848&alt=media)",
      "votes": 2,
      "replies": [
        {
          "id": 2592806,
          "postDate": "2024-01-08T19:58:10.850Z",
          "content": "<p><a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> The vessels only look like a hole when viewed by slices, I suppose we actually won't see the faded/broken vessels in the slice (your image on the left), is that right? And the stuff inside, did you find that's for broken vessels only or it's generic? </p>",
          "rawMarkdown": "@hengck23 The vessels only look like a hole when viewed by slices, I suppose we actually won't see the faded/broken vessels in the slice (your image on the left), is that right? And the stuff inside, did you find that's for broken vessels only or it's generic? "
        }
      ]
    },
    {
      "id": 2549368,
      "postDate": "2023-12-05T07:25:52.270Z",
      "content": "<p>Thank you very much for your sharing, based on your methods and information, here are the experimental data on my side. <br>\nBy the way, how did you generate the kidney's mask? I haven't used it yet.<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F856355%2F2993476c17278115668affe8cee63e35%2F5101701761042_.pic.jpg?generation=1701761134544839&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "Thank you very much for your sharing, based on your methods and information, here are the experimental data on my side. \nBy the way, how did you generate the kidney's mask? I haven't used it yet.![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F856355%2F2993476c17278115668affe8cee63e35%2F5101701761042_.pic.jpg?generation=1701761134544839&alt=media)",
      "votes": 2,
      "replies": [
        {
          "id": 2549549,
          "postDate": "2023-12-05T10:47:54.530Z",
          "content": "<p>\" you generate the kidney's mask?\"<br>\ni label a few and train a model to label the rest.</p>\n<p>you should try the kaggle metric (surface dice) on your validation set as well.<br>\niou is not good enough to capture cv/lb correlation</p>\n<p>try lower threshold as well</p>",
          "rawMarkdown": "\" you generate the kidney's mask?\"\ni label a few and train a model to label the rest.\n\n\nyou should try the kaggle metric (surface dice) on your validation set as well.\niou is not good enough to capture cv/lb correlation\n\ntry lower threshold as well"
        }
      ]
    },
    {
      "id": 2529617,
      "postDate": "2023-11-18T11:39:22.003Z",
      "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa452e22583e2afc291b2842af7cebc3a%2FSelection_999(3956).png?generation=1700307537301570&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F493812cfdecb2d890397597413ff1cea%2FSelection_999(3957).png?generation=1700307550363042&amp;alt=media\" alt=\"\"></p>\n<p>what solution to expect</p>",
      "rawMarkdown": "![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa452e22583e2afc291b2842af7cebc3a%2FSelection_999(3956).png?generation=1700307537301570&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F493812cfdecb2d890397597413ff1cea%2FSelection_999(3957).png?generation=1700307550363042&alt=media)\n\nwhat solution to expect",
      "votes": 2,
      "replies": [
        {
          "id": 2530323,
          "postDate": "2023-11-19T03:10:31.813Z",
          "content": "<p>very, very important papers and resources:</p>\n<p>[1] Micro to macro scale analysis of the intact human renal arterial tree with Synchrotron Tomography<br>\n<a href=\"https://www.biorxiv.org/content/10.1101/2023.03.28.534566v1.full.pdf\" target=\"_blank\">https://www.biorxiv.org/content/10.1101/2023.03.28.534566v1.full.pdf</a><br>\n<a href=\"https://zenodo.org/records/7708966#.ZGeLVnbMKUl\" target=\"_blank\">https://zenodo.org/records/7708966#.ZGeLVnbMKUl</a></p>",
          "rawMarkdown": "very, very important papers and resources:\n\n[1] Micro to macro scale analysis of the intact human renal arterial tree with Synchrotron Tomography\nhttps://www.biorxiv.org/content/10.1101/2023.03.28.534566v1.full.pdf\nhttps://zenodo.org/records/7708966#.ZGeLVnbMKUl\n",
          "votes": 1
        },
        {
          "id": 2536860,
          "postDate": "2023-11-24T14:54:51.810Z",
          "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Faacfa90372d8c8e608144b066062647d%2FSelection_999(4024).png?generation=1700837683978825&amp;alt=media\" alt=\"\"></p>\n<p>here is the trick</p>",
          "rawMarkdown": "![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Faacfa90372d8c8e608144b066062647d%2FSelection_999(4024).png?generation=1700837683978825&alt=media)\n\nhere is the trick",
          "votes": 1,
          "replies": [
            {
              "id": 2537142,
              "postDate": "2023-11-24T19:36:07.547Z",
              "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F0675a83e4fb9dbf880a2f3c2dc38b023%2FSelection_999(4027).png?generation=1700854558385115&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F3dd839bd1bca73bf14f015ceaf74f17f%2FSelection_999(4028).png?generation=1700854641451420&amp;alt=media\" alt=\"\"><br>\n<a href=\"https://www.youtube.com/watch?app=desktop&amp;v=DTmVbeJCEBQ\" target=\"_blank\">https://www.youtube.com/watch?app=desktop&amp;v=DTmVbeJCEBQ</a></p>",
              "rawMarkdown": "![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F0675a83e4fb9dbf880a2f3c2dc38b023%2FSelection_999(4027).png?generation=1700854558385115&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F3dd839bd1bca73bf14f015ceaf74f17f%2FSelection_999(4028).png?generation=1700854641451420&alt=media)\nhttps://www.youtube.com/watch?app=desktop&v=DTmVbeJCEBQ",
              "votes": 3
            }
          ]
        }
      ]
    },
    {
      "id": 2633595,
      "postDate": "2024-02-03T06:41:17.043Z",
      "content": "<p>OOPS!!!!</p>\n<p>unexpected shift in reszing ….<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F4e5901add416e6912b114e17c9296e49%2FPeek%202024-02-03%2014-37.gif?generation=1706942464276991&amp;alt=media\"></p>",
      "rawMarkdown": "OOPS!!!!\n\nunexpected shift in reszing ....\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F4e5901add416e6912b114e17c9296e49%2FPeek%202024-02-03%2014-37.gif?generation=1706942464276991&alt=media)",
      "votes": -3,
      "replies": [
        {
          "id": 2633598,
          "postDate": "2024-02-03T06:43:17.013Z",
          "content": "<p>can you catch the bug?</p>\n<p>it seems to be \"easy code\" to change private resolution to public one and then convert the prediction to private one again. make sure you do it correctly!</p>\n<pre><code>    = \n    base = \n    s = base/\n\n     np..rand()&lt;p:\n        H,W = .shape\n         = cv2.(,dsize=None, fx=s,fy=s)\n         = cv2.(,dsize=(W,H))\n</code></pre>",
          "rawMarkdown": "can you catch the bug?\n\nit seems to be \"easy code\" to change private resolution to public one and then convert the prediction to private one again. make sure you do it correctly!\n\n```\n\tprivate= 63.08\n\tbase = 50.00\n\ts = base/private\n\n\tif np.random.rand()<p:\n\t\tH,W = image.shape\n\t\timage = cv2.resize(image,dsize=None, fx=s,fy=s)\n\t\timage = cv2.resize(image,dsize=(W,H))\n\n```",
          "replies": [
            {
              "id": 2633610,
              "postDate": "2024-02-03T06:49:11.517Z",
              "content": "<p>after bug correction<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F8f41cc01426bbb996c6d5b4b7166a99f%2FPeek%202024-02-03%2014-38.gif?generation=1706942949714394&amp;alt=media\"></p>",
              "rawMarkdown": "after bug correction\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F8f41cc01426bbb996c6d5b4b7166a99f%2FPeek%202024-02-03%2014-38.gif?generation=1706942949714394&alt=media)"
            },
            {
              "id": 2633884,
              "postDate": "2024-02-03T10:48:28.003Z",
              "content": "<p>What was the bug here?</p>",
              "rawMarkdown": "What was the bug here?"
            },
            {
              "id": 2634157,
              "postDate": "2024-02-03T14:45:32.370Z",
              "content": "<p>How to correct the bug? The public LB score of using resize twice in inference is reduced.</p>",
              "rawMarkdown": "How to correct the bug? The public LB score of using resize twice in inference is reduced.",
              "votes": 1
            }
          ]
        }
      ]
    },
    {
      "id": 2593551,
      "postDate": "2024-01-09T09:32:03.907Z",
      "content": "<p>45 degree TTA </p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fcbda874375758ee05f1cd451ef85a8cd%2FSelection_999(4539).png?generation=1704792722382609&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "45 degree TTA \n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fcbda874375758ee05f1cd451ef85a8cd%2FSelection_999(4539).png?generation=1704792722382609&alt=media)",
      "replies": [
        {
          "id": 2593851,
          "postDate": "2024-01-09T13:55:01.400Z",
          "content": "<p>Thank you for sharing. I want to know how much the lb score has improved using this 45 degree TTA.</p>",
          "rawMarkdown": "Thank you for sharing. I want to know how much the lb score has improved using this 45 degree TTA.",
          "votes": 1
        },
        {
          "id": 2597902,
          "postDate": "2024-01-12T02:24:08.660Z",
          "content": "<p>updated </p>\n<pre><code> make_digonal_slice(shape=[,,]):#D, H, W\n    , H, W = shape\n\n     = max(H,W)\n     = min(H,W)\n     = int(.*((L**+L**)**.))\n\n    ,y = np.arange(S), np.arange(S)\n\n    \n    \n\n    =[]\n    =[]\n     h in range(H):\n         = x\n         = y+h\n         = (yy&gt;=) &amp; (yy&lt;H) &amp; (xx&gt;=) &amp; (xx&lt;W)\n         valid.sum()&gt;L:\n            , xx1 =yy[valid], xx[valid]\n            .append([yy1, xx1])\n\n             = yy1\n             = W--xx1#np.ascontiguousarray(xx1[::-])\n            .append([yy2, xx2])\n\n     w in range(,W):\n         = x+w\n         = y\n         = (yy&gt;=) &amp; (yy&lt;H) &amp; (xx&gt;=) &amp; (xx&lt;W)\n         valid.sum()&gt;L:\n            , xx1 =yy[valid], xx[valid]\n            .append([yy1, xx1])\n\n             = yy1\n             = W--xx1\n            .append([yy2, xx2])\n\n     = coord1+coord2\n     coord\n\n\n = make_digonal_slice(shape=[D, H, W])\n\n\n y,x in  coord:\n     = volume[:,y,x]\n    ('slice', slice,resize=.)\n    .waitKey()\n\n\n = np.zeros((H, W))\n y,x in  coord:\n    [y,x]+=\n    ('check', check,min=,max=,resize=.)\n    .waitKey()\n.waitKey()\n</code></pre>",
          "rawMarkdown": "updated \n\n```\n\ndef make_digonal_slice(shape=[100,120,150]):#D, H, W\n\tD, H, W = shape\n\n\tS = max(H,W)\n\tL = min(H,W)\n\tL = int(0.25*((L**2+L**2)**0.5))\n\n\tx,y = np.arange(S), np.arange(S)\n\n\t#diag = np.stack([np.arange(S),np.arange(S)]) #shape (2, 150)\n\t#diagy = diag + np.stack([np.arange(S),np.zeros(S)])\n\n\tcoord1=[]\n\tcoord2=[]\n\tfor h in range(H):\n\t\txx = x\n\t\tyy = y+h\n\t\tvalid = (yy>=0) & (yy<H) & (xx>=0) & (xx<W)\n\t\tif valid.sum()>L:\n\t\t\tyy1, xx1 =yy[valid], xx[valid]\n\t\t\tcoord1.append([yy1, xx1])\n\n\t\t\tyy2 = yy1\n\t\t\txx2 = W-1-xx1#np.ascontiguousarray(xx1[::-1])\n\t\t\tcoord2.append([yy2, xx2])\n\n\tfor w in range(1,W):\n\t\txx = x+w\n\t\tyy = y\n\t\tvalid = (yy>=0) & (yy<H) & (xx>=0) & (xx<W)\n\t\tif valid.sum()>L:\n\t\t\tyy1, xx1 =yy[valid], xx[valid]\n\t\t\tcoord1.append([yy1, xx1])\n\n\t\t\tyy2 = yy1\n\t\t\txx2 = W-1-xx1\n\t\t\tcoord2.append([yy2, xx2])\n\n\tcoord = coord1+coord2\n\treturn coord\n\n\ncoord = make_digonal_slice(shape=[D, H, W])\n\n#example usage\nfor y,x in  coord:\n\tslice = volume[:,y,x]\n\timage_show_norm('slice', slice,resize=0.5)\n\tcv2.waitKey(0)\n\n#visualisation\ncheck = np.zeros((H, W))\nfor y,x in  coord:\n\tcheck[y,x]+=1\n\timage_show_norm('check', check,min=0,max=2,resize=0.5)\n\tcv2.waitKey(1)\ncv2.waitKey(0)\n\n\n\n```",
          "votes": 1
        }
      ]
    },
    {
      "id": 2589430,
      "postDate": "2024-01-06T11:32:13.127Z",
      "content": "<p>just an initial idea to handle both public and private data. Not tested yet and not sure if it would actually work ????</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F6f061606de1cb79ad24a549ccd48af7c%2FSelection_999(4531).png?generation=1704540731627867&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "just an initial idea to handle both public and private data. Not tested yet and not sure if it would actually work ????\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F6f061606de1cb79ad24a549ccd48af7c%2FSelection_999(4531).png?generation=1704540731627867&alt=media)",
      "replies": [
        {
          "id": 2589439,
          "postDate": "2024-01-06T11:34:03.607Z",
          "content": "<p>of course a simpler idea is just upscale private data to public resolution at input, follwed by downscale at output</p>",
          "rawMarkdown": "of course a simpler idea is just upscale private data to public resolution at input, follwed by downscale at output",
          "votes": 2
        },
        {
          "id": 2617103,
          "postDate": "2024-01-24T04:28:23.467Z",
          "content": "<p>How would you validate this ? Validating on the bottom model would mean validating on resized labels (not optimal) but that's the model that would end up being used on the test data right ? </p>",
          "rawMarkdown": "How would you validate this ? Validating on the bottom model would mean validating on resized labels (not optimal) but that's the model that would end up being used on the test data right ? "
        }
      ]
    },
    {
      "id": 2561730,
      "postDate": "2023-12-14T18:46:30.470Z",
      "content": "<p>an interesing work:   Artery-Vein Separation</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F9e292f946042db3cbad2ff224193d813%2FSelection_999(4407).png?generation=1702579578310237&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F27b9b2806e1ff3034714c2f434c08037%2FSelection_999(4408).png?generation=1702579588732159&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "an interesing work:   Artery-Vein Separation\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F9e292f946042db3cbad2ff224193d813%2FSelection_999(4407).png?generation=1702579578310237&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F27b9b2806e1ff3034714c2f434c08037%2FSelection_999(4408).png?generation=1702579588732159&alt=media)",
      "replies": [
        {
          "id": 2562983,
          "postDate": "2023-12-15T21:21:47.723Z",
          "content": "<p>it will be interesting if you :</p>\n<ol>\n<li>do 3d skeletionization</li>\n<li>then for each voxel you can predict the \"direction\" of of the vessel. maybe helpful for post-processing or aux loss </li>\n</ol>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc3dc377198edb933e26b6617570ddf87%2FSelection_999(4424).png?generation=1702675246382938&amp;alt=media\" alt=\"\"></p>",
          "rawMarkdown": "it will be interesting if you :\n1. do 3d skeletionization\n2. then for each voxel you can predict the \"direction\" of of the vessel. maybe helpful for post-processing or aux loss \n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc3dc377198edb933e26b6617570ddf87%2FSelection_999(4424).png?generation=1702675246382938&alt=media)",
          "votes": 1
        }
      ]
    },
    {
      "id": 2560881,
      "postDate": "2023-12-14T04:25:17.407Z",
      "content": "<p><a href=\"https://github.com/antonioguj/bronchinet\" target=\"_blank\">https://github.com/antonioguj/bronchinet</a><br>\nAirway segmentation from chest CTs using deep Convolutional Neural Networks</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fd498a7572abcc58b241a6b738b1f7aa0%2FSelection_999(4399).png?generation=1702527914761421&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "https://github.com/antonioguj/bronchinet\nAirway segmentation from chest CTs using deep Convolutional Neural Networks\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fd498a7572abcc58b241a6b738b1f7aa0%2FSelection_999(4399).png?generation=1702527914761421&alt=media)\n"
    },
    {
      "id": 2560877,
      "postDate": "2023-12-14T04:13:25.633Z",
      "content": "<p>Hip-CT lung vasculature and microstructure youtube presentation by Dr Claire Walsh:</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F9cbb48254dd3274c7bcce5d6021aeff1%2FSelection_999(4398).png?generation=1702527034572289&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F7b75a9469be2d16c01efc56f64e77f81%2FSelection_999(4396).png?generation=1702527079702177&amp;alt=media\" alt=\"\"><br>\n<a href=\"https://www.youtube.com/watch?v=ehDRFzvwGNY\" target=\"_blank\">https://www.youtube.com/watch?v=ehDRFzvwGNY</a><br>\n<a href=\"https://profiles.ucl.ac.uk/59686-joseph-jacob/publications?favouritesFirst=true&amp;perPage=25&amp;sort=dateDesc&amp;startFrom=25\" target=\"_blank\">https://profiles.ucl.ac.uk/59686-joseph-jacob/publications?favouritesFirst=true&amp;perPage=25&amp;sort=dateDesc&amp;startFrom=25</a></p>\n<p>it would be good if unlabelled data could be used!</p>",
      "rawMarkdown": "Hip-CT lung vasculature and microstructure youtube presentation by Dr Claire Walsh:\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F9cbb48254dd3274c7bcce5d6021aeff1%2FSelection_999(4398).png?generation=1702527034572289&alt=media)\n\n ![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F7b75a9469be2d16c01efc56f64e77f81%2FSelection_999(4396).png?generation=1702527079702177&alt=media)\nhttps://www.youtube.com/watch?v=ehDRFzvwGNY\nhttps://profiles.ucl.ac.uk/59686-joseph-jacob/publications?favouritesFirst=true&perPage=25&sort=dateDesc&startFrom=25\n\nit would be good if unlabelled data could be used!"
    },
    {
      "id": 2554208,
      "postDate": "2023-12-08T22:40:48.663Z",
      "content": "<p>there is one method that one can try: supervoxel (3d superpixel) + deep net, since the ground truth is build with 3d floodfill</p>\n<p>keywords:Mask2Former, kMaX-DeepLab,: Differentiable SLIC, superpixel-transformer</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F660e76a4b215965a75228c7875066679%2FSelection_999(4284).png?generation=1702075080554884&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "there is one method that one can try: supervoxel (3d superpixel) + deep net, since the ground truth is build with 3d floodfill\n\nkeywords:Mask2Former, kMaX-DeepLab,: Differentiable SLIC, superpixel-transformer\n \n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F660e76a4b215965a75228c7875066679%2FSelection_999(4284).png?generation=1702075080554884&alt=media)"
    },
    {
      "id": 2552953,
      "postDate": "2023-12-07T22:29:26.230Z",
      "content": "<p>train log<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa93a20f8f7fa582a2ff6ed97d700ec43%2FSelection_999(4279).png?generation=1702021715695993&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "train log\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa93a20f8f7fa582a2ff6ed97d700ec43%2FSelection_999(4279).png?generation=1702021715695993&alt=media)",
      "replies": [
        {
          "id": 2560963,
          "postDate": "2023-12-14T06:48:10.870Z",
          "content": "<p>Hello, I apologize for interrupting you.   I have a question about your multiview approach.</p>\n<p>How do you ensure that the model can simultaneously see and learn features from different perspectives during multiview training?</p>\n<p>Do you randomly select different views during data loading for training, or do you have a three-branch network where each branch processes one view and then merges at a certain layer?   Or, do you feed all the data from the xy, zy, zx views into the model in each epoch?</p>",
          "rawMarkdown": "Hello, I apologize for interrupting you.   I have a question about your multiview approach.\n\nHow do you ensure that the model can simultaneously see and learn features from different perspectives during multiview training?\n\nDo you randomly select different views during data loading for training, or do you have a three-branch network where each branch processes one view and then merges at a certain layer?   Or, do you feed all the data from the xy, zy, zx views into the model in each epoch?",
          "votes": 1,
          "replies": [
            {
              "id": 2561148,
              "postDate": "2023-12-14T10:05:23.090Z",
              "content": "<p>random slection will do. i use one unet for all 3 views.<br>\nnum of slices samples =h+w+d</p>",
              "rawMarkdown": "random slection will do. i use one unet for all 3 views.\nnum of slices samples =h+w+d",
              "votes": 1
            }
          ]
        }
      ]
    },
    {
      "id": 2552796,
      "postDate": "2023-12-07T18:26:38.183Z",
      "content": "<p>my next plan:</p>\n<p>2d axial unet to 3d axial transfomer</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F398b1610236d7dc040c9984face43945%2FSelection_999(4272).png?generation=1701973596052591&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "my next plan:\n\n2d axial unet to 3d axial transfomer\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F398b1610236d7dc040c9984face43945%2FSelection_999(4272).png?generation=1701973596052591&alt=media)"
    },
    {
      "id": 2551626,
      "postDate": "2023-12-06T20:38:45.620Z",
      "content": "<p>i wonder does it make sense to download other organs and treat them as negative images?</p>",
      "rawMarkdown": "i wonder does it make sense to download other organs and treat them as negative images?"
    },
    {
      "id": 2550388,
      "postDate": "2023-12-06T02:26:48.760Z",
      "content": "<p><a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> I am a bit confused how many 2D slices make a 3D volume?</p>",
      "rawMarkdown": "@hengck23 I am a bit confused how many 2D slices make a 3D volume?"
    },
    {
      "id": 2547019,
      "postDate": "2023-12-03T05:19:37.347Z",
      "content": "<p>new BM18 results:<br>\nThe HOAHub uses the High-Throughput Large Field Phase-Contrast Tomography Beamline BM18.<br>\n<a href=\"https://mecheng.ucl.ac.uk/HOAHub/\" target=\"_blank\">https://mecheng.ucl.ac.uk/HOAHub/</a></p>",
      "rawMarkdown": "new BM18 results:\nThe HOAHub uses the High-Throughput Large Field Phase-Contrast Tomography Beamline BM18.\nhttps://mecheng.ucl.ac.uk/HOAHub/"
    },
    {
      "id": 2544843,
      "postDate": "2023-12-01T05:59:54.433Z",
      "content": "<p><a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a>  I trained on kidney_1_dense (original resolution) 5 fold cv and tested on kidney_3_dense (original resolution)using the competition metric …<br>\nmy CV was 0.82<br>\nbut my LB is 0.002. <br>\nDo you have any idea what might be the problem?</p>",
      "rawMarkdown": "@hengck23  I trained on kidney_1_dense (original resolution) 5 fold cv and tested on kidney_3_dense (original resolution)using the competition metric ...\nmy CV was 0.82\nbut my LB is 0.002. \nDo you have any idea what might be the problem?",
      "replies": [
        {
          "id": 2544844,
          "postDate": "2023-12-01T06:03:09.037Z",
          "rawMarkdown": "",
          "isDeleted": true
        },
        {
          "id": 2549241,
          "postDate": "2023-12-05T05:22:25.130Z",
          "content": "<p><a href=\"https://www.kaggle.com/arunodhayan\" target=\"_blank\">@arunodhayan</a> did you get why this was happening</p>",
          "rawMarkdown": "@arunodhayan did you get why this was happening",
          "replies": [
            {
              "id": 2549323,
              "postDate": "2023-12-05T06:23:12.280Z",
              "content": "<p>yes, there was a bug in my script during inference</p>",
              "rawMarkdown": "yes, there was a bug in my script during inference",
              "votes": 1
            }
          ]
        }
      ]
    },
    {
      "id": 2542408,
      "postDate": "2023-11-29T08:54:22.667Z",
      "content": "<p><a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> do you use binary image to train or convert it to RGB for training?</p>",
      "rawMarkdown": "@hengck23 do you use binary image to train or convert it to RGB for training?\n"
    },
    {
      "id": 2540680,
      "postDate": "2023-11-27T22:19:58.893Z",
      "content": "<p><a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> What is the metric you use for validation?</p>",
      "rawMarkdown": "@hengck23 What is the metric you use for validation?",
      "replies": [
        {
          "id": 2540763,
          "postDate": "2023-11-28T01:24:09.710Z",
          "content": "<p>version 22<br>\n<a href=\"https://www.kaggle.com/code/metric/surface-dice-metric/notebook\" target=\"_blank\">https://www.kaggle.com/code/metric/surface-dice-metric/notebook</a></p>",
          "rawMarkdown": "version 22\nhttps://www.kaggle.com/code/metric/surface-dice-metric/notebook",
          "votes": 1,
          "replies": [
            {
              "id": 2540778,
              "postDate": "2023-11-28T02:13:59.883Z",
              "content": "<p><a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> </p>\n<p>I trained a seresnext26 (I assume that is the model you use), with kidney_1_dense, on original image size (except that I had to pad it to the nearest 32 divisible number), I used no augmentations, I did not tune the learning rate, started at 1e-4, cosine-annealing scheduler, trained for 30 epochs, dice loss from smp, a very basic baseline, saw it overfit and diverge, took the last epoch and calculated the metric on kidney_3_dense</p>\n<p>To calculate the metric, I took the predictions on the original size of kidney_3_dense, removed the padding, and converted them into RLE, then I ran it on competition metric</p>\n<p><img src=\"https://pasteboard.co/YfLE4a0qsHew.png\" alt=\"\"></p>\n<p>That is the lowest I have seen this metric, I normally get 0.94-0.95 for my finetuned models which scores 0.76+ LB, so I don't know how you have it lower than 0.85 and still that good of a leaderboard, are we calculating the same thing? I just took the notebook you gave, copied the code and pasted it in a file with no change, am I doing some mistake?</p>",
              "rawMarkdown": "@hengck23 \n\nI trained a seresnext26 (I assume that is the model you use), with kidney_1_dense, on original image size (except that I had to pad it to the nearest 32 divisible number), I used no augmentations, I did not tune the learning rate, started at 1e-4, cosine-annealing scheduler, trained for 30 epochs, dice loss from smp, a very basic baseline, saw it overfit and diverge, took the last epoch and calculated the metric on kidney_3_dense\n\nTo calculate the metric, I took the predictions on the original size of kidney_3_dense, removed the padding, and converted them into RLE, then I ran it on competition metric\n\n![](https://pasteboard.co/YfLE4a0qsHew.png)\n\nThat is the lowest I have seen this metric, I normally get 0.94-0.95 for my finetuned models which scores 0.76+ LB, so I don't know how you have it lower than 0.85 and still that good of a leaderboard, are we calculating the same thing? I just took the notebook you gave, copied the code and pasted it in a file with no change, am I doing some mistake?"
            },
            {
              "id": 2540798,
              "postDate": "2023-11-28T02:46:06.533Z",
              "content": "<p>\"0.94-0.95 for my finetuned models \" seems unusually high for me.<br>\ni will put my validation code and results on public notebook soon for you to check.<br>\nplease wait for a while.</p>\n<hr>\n<p>you probably don't have to mind so much.</p>\n<hr>\n<p>I know CV vs LB can be different for different kaggler.<br>\nit is probably due to the different probability threshold (e.g. 0.5,) and threshold used in removal of false positives fp (e.g. contour object of small 2d area or 3d volume)</p>\n<p>one may have better CV score locally because less local fp.<br>\nThe LB may be better or worst becuase of \"sudden\" absence/occurence of fp in hidden test data.</p>\n<p>(at such, i think results may not be stable?)</p>",
              "rawMarkdown": "\"0.94-0.95 for my finetuned models \" seems unusually high for me.\ni will put my validation code and results on public notebook soon for you to check.\nplease wait for a while.\n\n---\n\nyou probably don't have to mind so much.\n\n---\nI know CV vs LB can be different for different kaggler.\nit is probably due to the different probability threshold (e.g. 0.5,) and threshold used in removal of false positives fp (e.g. contour object of small 2d area or 3d volume)\n\none may have better CV score locally because less local fp.\nThe LB may be better or worst becuase of \"sudden\" absence/occurence of fp in hidden test data.\n\n(at such, i think results may not be stable?)\n\n"
            },
            {
              "id": 2540828,
              "postDate": "2023-11-28T03:33:50.043Z",
              "content": "<p>do you pad or resize the original image to nearest?</p>",
              "rawMarkdown": "do you pad or resize the original image to nearest?\n"
            },
            {
              "id": 2540843,
              "postDate": "2023-11-28T03:43:20.897Z",
              "content": "<p>Zeros Padding</p>",
              "rawMarkdown": "Zeros Padding"
            },
            {
              "id": 2540878,
              "postDate": "2023-11-28T04:26:24.610Z",
              "content": "<p><a href=\"https://www.kaggle.com/harshitsheoran\" target=\"_blank\">@harshitsheoran</a> </p>\n<p><a href=\"https://www.kaggle.com/code/hengck23/check-kaggle-metric-for-cv\" target=\"_blank\">https://www.kaggle.com/code/hengck23/check-kaggle-metric-for-cv</a><br>\nexample data and notebook (all public) for</p>\n<pre><code> hr  min\nkidney_3_dense\n  \n  \n(LB)\n</code></pre>",
              "rawMarkdown": "@harshitsheoran \n\nhttps://www.kaggle.com/code/hengck23/check-kaggle-metric-for-cv\nexample data and notebook (all public) for\n\n```\n0 hr 18 min\nkidney_3_dense\nthreshold = 0.1\nscore = 0.8180253750828594\n(LB=0.782)\n```",
              "votes": 1
            },
            {
              "id": 2543598,
              "postDate": "2023-11-30T07:55:10.693Z",
              "content": "<p><a href=\"https://www.kaggle.com/harshitsheoran\" target=\"_blank\">@harshitsheoran</a> did you find out the reason for your higher CV score?</p>",
              "rawMarkdown": "@harshitsheoran did you find out the reason for your higher CV score?"
            },
            {
              "id": 2543624,
              "postDate": "2023-11-30T08:37:26.173Z",
              "content": "<p>Yes, I had height and width switched because I was using PIL the first time instead of cv2 😅, my CV and LB does not completely correlate but I have CV of 0.821 for my 0.782 LB</p>",
              "rawMarkdown": "Yes, I had height and width switched because I was using PIL the first time instead of cv2 😅, my CV and LB does not completely correlate but I have CV of 0.821 for my 0.782 LB",
              "votes": 2
            },
            {
              "id": 2543677,
              "postDate": "2023-11-30T09:15:14.090Z",
              "content": "<p><a href=\"https://www.kaggle.com/harshitsheoran\" target=\"_blank\">@harshitsheoran</a> ,</p>\n<p>How do you 'remove the padding' of kidney_3_dense when scoring?</p>\n<p>Train: kidney_1_dense (1303, 912) --&gt; pad zero --&gt; (1536x1536)<br>\nScore: kidney_3_dense (1706, 1510) --&gt; removed the padding? --&gt; (1536x1536)</p>",
              "rawMarkdown": "@harshitsheoran ,\n\nHow do you 'remove the padding' of kidney_3_dense when scoring?\n\nTrain: kidney_1_dense (1303, 912) --> pad zero --> (1536x1536)\nScore: kidney_3_dense (1706, 1510) --> removed the padding? --> (1536x1536)"
            },
            {
              "id": 2543693,
              "postDate": "2023-11-30T09:50:00.730Z",
              "content": "<p>I padded (1303, 912) -&gt; (1312, 928) [nearest multiple of 32]<br>\nI padded (1706, 1510) -&gt; (1728, 1536) [nearest multiple of 32]<br>\nI always pad zeros on the right and bottom of the image, so removing the padding on predicted mask was as simple as <br>\n<code>mask = mask[:1706, :1510]</code></p>",
              "rawMarkdown": "I padded (1303, 912) -> (1312, 928) [nearest multiple of 32]\nI padded (1706, 1510) -> (1728, 1536) [nearest multiple of 32]\nI always pad zeros on the right and bottom of the image, so removing the padding on predicted mask was as simple as \n`mask = mask[:1706, :1510]`",
              "votes": 2
            },
            {
              "id": 2543748,
              "postDate": "2023-11-30T10:31:51.090Z",
              "content": "<p><a href=\"https://www.kaggle.com/harshitsheoran\" target=\"_blank\">@harshitsheoran</a> you trained on 1303x912 and test on different image size?</p>",
              "rawMarkdown": "@harshitsheoran you trained on 1303x912 and test on different image size?"
            },
            {
              "id": 2543761,
              "postDate": "2023-11-30T10:41:04.320Z",
              "content": "<p>Yes, this is what I thought \"original\" resolution meant</p>",
              "rawMarkdown": "Yes, this is what I thought \"original\" resolution meant"
            },
            {
              "id": 2544833,
              "postDate": "2023-12-01T05:36:58.317Z",
              "content": "<p>I'm using the same model trained on kidney_1_dense, original image size and using diceloss as model selection because the competition metric is slow. However, I usually get a cv ~0.58 on kidney_3_dense for the best weights. Is this normal? It seems that everyone using this model claims a cv higher than 0.8 is achievable. </p>",
              "rawMarkdown": "I'm using the same model trained on kidney_1_dense, original image size and using diceloss as model selection because the competition metric is slow. However, I usually get a cv ~0.58 on kidney_3_dense for the best weights. Is this normal? It seems that everyone using this model claims a cv higher than 0.8 is achievable. \n"
            },
            {
              "id": 2553035,
              "postDate": "2023-12-08T01:13:48.127Z",
              "content": "<p>Hello, I would like to know if there are any methods to prevent scoring errors when using a lower threshold, such as 0.005, apart from using functions like remove_small_objects.</p>",
              "rawMarkdown": "Hello, I would like to know if there are any methods to prevent scoring errors when using a lower threshold, such as 0.005, apart from using functions like remove_small_objects.\n\n\n\n\n\n\n"
            },
            {
              "id": 2553040,
              "postDate": "2023-12-08T01:21:11.780Z",
              "content": "<p>in the final solution, your model needs to work well for higher threshold (when your LB improves, you will find that your threshold also increases, i.e. your model is more confident).</p>\n<p>during development, you can think of way to remove fp e.g. if you detect the kidney object, you can mask off vessel prediction outside the kidney region.</p>\n<p>use local validation to find the best threshold. you should train your model so that the fp is not too high.</p>",
              "rawMarkdown": "in the final solution, your model needs to work well for higher threshold (when your LB improves, you will find that your threshold also increases, i.e. your model is more confident).\n\nduring development, you can think of way to remove fp e.g. if you detect the kidney object, you can mask off vessel prediction outside the kidney region.\n\nuse local validation to find the best threshold. you should train your model so that the fp is not too high.",
              "votes": 3
            },
            {
              "id": 2553057,
              "postDate": "2023-12-08T01:46:38.500Z",
              "content": "<p>This is very helpful, thank you.</p>",
              "rawMarkdown": "This is very helpful, thank you."
            }
          ]
        }
      ]
    },
    {
      "id": 2533956,
      "postDate": "2023-11-22T10:10:48.757Z",
      "content": "<p>Tips:</p>\n<p>here is prediction results for prob&lt;0.25.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fd72f62d167530e54acfc4cf68dbb08db%2FSelection_999(4019).png?generation=1700647828309499&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "Tips:\n\nhere is prediction results for prob<0.25.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fd72f62d167530e54acfc4cf68dbb08db%2FSelection_999(4019).png?generation=1700647828309499&alt=media)",
      "replies": [
        {
          "id": 2533988,
          "postDate": "2023-11-22T10:30:15.330Z",
          "content": "<p>image resolution used during training?</p>",
          "rawMarkdown": "image resolution used during training?",
          "replies": [
            {
              "id": 2534073,
              "postDate": "2023-11-22T11:31:32.020Z",
              "content": "<p>full resolution</p>",
              "rawMarkdown": "full resolution",
              "votes": 1
            },
            {
              "id": 2534080,
              "postDate": "2023-11-22T11:40:04.460Z",
              "content": "<p>do u mean original image resolution?</p>",
              "rawMarkdown": "do u mean original image resolution?"
            },
            {
              "id": 2534096,
              "postDate": "2023-11-22T12:00:26.403Z",
              "content": "<p>yes, for both train and test</p>",
              "rawMarkdown": "yes, for both train and test",
              "votes": 2
            },
            {
              "id": 2534101,
              "postDate": "2023-11-22T12:06:23.303Z",
              "content": "<p>for inference (submission) you use train resolution?</p>",
              "rawMarkdown": "for inference (submission) you use train resolution?"
            },
            {
              "id": 2534137,
              "postDate": "2023-11-22T12:53:51.503Z",
              "content": "<p>currently, i just use the image resolution (i.e. no rescale)<br>\nbut, it is stated that<br>\n\"These scans may or may not use a different beamline or resolution from the scans used in the training set.\"<br>\nhence you should probe the best scale and then decide how to augment</p>",
              "rawMarkdown": "currently, i just use the image resolution (i.e. no rescale)\nbut, it is stated that\n\"These scans may or may not use a different beamline or resolution from the scans used in the training set.\"\nhence you should probe the best scale and then decide how to augment",
              "votes": 1
            }
          ]
        },
        {
          "id": 2534122,
          "postDate": "2023-11-22T12:39:42.670Z",
          "content": "<p>i am surprised that probably only 2d unet is sufficient:</p>\n<p>blue: ground truth<br>\nred : predicted (threshold at 0.10)</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa21fce79c1efa5172349b15d6a0a6ec9%2FPeek%202023-11-27%2008-04.gif?generation=1701043499019411&amp;alt=media\" alt=\"\"></p>\n<p>it is pretty obvious that you can use low threshold e.g. 0.10 for early development and get lb score of say 0.6 to 0.7</p>\n<p>but for high lb score of 0.8, </p>\n<ul>\n<li>you need high threshold to remove false positive (i.e. you need a better confidence deep net)</li>\n<li>you need to filter off the false positive  with post processing or some second stage 3d filtering deep net.</li>\n</ul>\n<p>```</p>",
          "rawMarkdown": "i am surprised that probably only 2d unet is sufficient:\n\nblue: ground truth\nred : predicted (threshold at 0.10)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa21fce79c1efa5172349b15d6a0a6ec9%2FPeek%202023-11-27%2008-04.gif?generation=1701043499019411&alt=media)\n\nit is pretty obvious that you can use low threshold e.g. 0.10 for early development and get lb score of say 0.6 to 0.7\n\nbut for high lb score of 0.8, \n- you need high threshold to remove false positive (i.e. you need a better confidence deep net)\n- you need to filter off the false positive  with post processing or some second stage 3d filtering deep net.\n\n\n \n\n```",
          "votes": 2,
          "replies": [
            {
              "id": 2540779,
              "postDate": "2023-11-28T02:14:54.900Z",
              "content": "<p>i previously show the false positive.<br>\nHere, i show the false negative (miss)</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F126f8735d4a7adc180dfa773f70ed50a%2FSelection_999(4088).png?generation=1701137639848452&amp;alt=media\" alt=\"\"></p>\n<p>broken vessel seems easy to fix.<br>\nHence at least for the public LB, i think greater than 0.90 is very likely</p>",
              "rawMarkdown": "i previously show the false positive.\nHere, i show the false negative (miss)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F126f8735d4a7adc180dfa773f70ed50a%2FSelection_999(4088).png?generation=1701137639848452&alt=media)\n\nbroken vessel seems easy to fix.\nHence at least for the public LB, i think greater than 0.90 is very likely",
              "votes": 2
            },
            {
              "id": 2541035,
              "postDate": "2023-11-28T07:22:11.720Z",
              "content": "<p>Hi, Heng<br>\nWhat do you use to visualize 3d volumes?<br>\nThanks!</p>",
              "rawMarkdown": "Hi, Heng\nWhat do you use to visualize 3d volumes?\nThanks!",
              "votes": 1
            },
            {
              "id": 2541056,
              "postDate": "2023-11-28T07:46:55.893Z",
              "content": "<p><a href=\"https://www.kaggle.com/sakvaua\" target=\"_blank\">@sakvaua</a> see code at : <br>\n<a href=\"https://www.kaggle.com/code/hengck23/check-kaggle-metric-for-cv\" target=\"_blank\">https://www.kaggle.com/code/hengck23/check-kaggle-metric-for-cv</a></p>\n<p>search for the below:</p>\n<pre><code>## visualisation  to produce results above\n :\n     pyvista  pv\n    pl = pv.Plotter()\n    ...\n</code></pre>",
              "rawMarkdown": "@sakvaua see code at : \nhttps://www.kaggle.com/code/hengck23/check-kaggle-metric-for-cv\n\nsearch for the below:\n```\n## visualisation code to produce results above\nif 0:\n    import pyvista as pv\n    pl = pv.Plotter()\n    ...\n\n```",
              "votes": 4
            },
            {
              "id": 2541541,
              "postDate": "2023-11-28T15:13:45.647Z",
              "content": "<p>Thanks! I like your animations!</p>",
              "rawMarkdown": "Thanks! I like your animations!"
            },
            {
              "id": 2544960,
              "postDate": "2023-12-01T07:48:19.077Z",
              "content": "<p>from the paper:</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fd4620fdeacf33576aab05f410e636fe7%2FSelection_999(4172).png?generation=1701416838855852&amp;alt=media\" alt=\"\"></p>\n<p>In my experiments, this can be solved by data augmentation, non-uniform scale to squash the vessel to make them flat, elongated</p>",
              "rawMarkdown": "from the paper:\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fd4620fdeacf33576aab05f410e636fe7%2FSelection_999(4172).png?generation=1701416838855852&alt=media)\n\nIn my experiments, this can be solved by data augmentation, non-uniform scale to squash the vessel to make them flat, elongated",
              "votes": 2
            }
          ]
        }
      ]
    },
    {
      "id": 2529362,
      "postDate": "2023-11-18T06:53:51.610Z",
      "content": "<p>were you able to differentiate between dense and sparse annotation. what do you think will be best to use</p>",
      "rawMarkdown": "were you able to differentiate between dense and sparse annotation. what do you think will be best to use",
      "replies": [
        {
          "id": 2529512,
          "postDate": "2023-11-18T10:19:24.923Z",
          "content": "<p>i haven't look into details yet. i think sparse exclude smallest vessels.<br>\n(to know the difference, i can train on sparse and then use the model to detect dense, and vice versa)</p>\n<p>my plan is to use only dense first to build a model.</p>\n<p>then think of how use sparse set as partial label set. (e.g. self supervised + label)</p>",
          "rawMarkdown": "i haven't look into details yet. i think sparse exclude smallest vessels.\n(to know the difference, i can train on sparse and then use the model to detect dense, and vice versa)\n\nmy plan is to use only dense first to build a model.\n\nthen think of how use sparse set as partial label set. (e.g. self supervised + label)",
          "votes": 1,
          "replies": [
            {
              "id": 2529518,
              "postDate": "2023-11-18T10:29:22.383Z",
              "content": "<p>blue: sparse<br>\npink: difference of dense, sparse</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F55331545290675144f2535cef4e943ff%2FSelection_999(3955).png?generation=1700303301787011&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F36d1d4753e056c4c65feb2bb129e8aab%2FSelection_999(3954).png?generation=1700303314539871&amp;alt=media\" alt=\"\"></p>",
              "rawMarkdown": "blue: sparse\npink: difference of dense, sparse\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F55331545290675144f2535cef4e943ff%2FSelection_999(3955).png?generation=1700303301787011&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F36d1d4753e056c4c65feb2bb129e8aab%2FSelection_999(3954).png?generation=1700303314539871&alt=media)",
              "votes": 3
            },
            {
              "id": 2530344,
              "postDate": "2023-11-19T04:33:03.103Z",
              "content": "<p>If sparse annotations are used for the small vessel, it may be beneficial to merge dense and sparse annotations, allowing the model to effectively capture both during prediction.</p>",
              "rawMarkdown": "If sparse annotations are used for the small vessel, it may be beneficial to merge dense and sparse annotations, allowing the model to effectively capture both during prediction.",
              "votes": 1
            }
          ]
        }
      ]
    },
    {
      "id": 2600229,
      "postDate": "2024-01-13T13:23:23.823Z",
      "rawMarkdown": "",
      "isDeleted": true
    },
    {
      "id": 2600227,
      "postDate": "2024-01-13T13:21:49.707Z",
      "rawMarkdown": "",
      "isDeleted": true
    },
    {
      "id": 2584348,
      "postDate": "2024-01-02T20:44:54.860Z",
      "rawMarkdown": "",
      "isDeleted": true
    }
  ],
  "comments": [
    {
      "id": 2583472,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2024-01-02T08:56:51.607000",
      "content": "<p>i realize something important.<br>\ni checked the fast surface dice loss and i think we can directly optimize this loss in gradient descent!</p>\n<p>i) use 3 channel input and predict 3 channel output<br>\nii) refer to the fast surface dice code by <a href=\"https://www.kaggle.com/junkoda\" target=\"_blank\">@junkoda</a> . you can apply same marching cube algorithm (2x2x2) to compute soft surface dice loss</p>\n<p>instead of unfold 3d conv with 256 kernels may be slightly faster</p>\n<hr>\n<p>this may be important because i realize the reason for missing small vessel is annotation error (even for the 100% dense label, not all smallest vessel are annotated). this causes the following</p>\n<ol>\n<li>surface dice metric is fluctuating up and down during the training iteration</li>\n<li>3d, 2.5d results are poorer than pure 2d</li>\n<li>confidence for smallest vessel are the worst (because of inconsistent label). At first i thought is this because of the small area (since deep learning minimize BCE loss for largest area first), but then i think inconsistent label has a larger effect.</li>\n</ol>",
      "votes": 10,
      "replies": [
        {
          "id": 2583668,
          "author_name": "Theo Viel",
          "author_url": "",
          "post_date": "2024-01-02T11:35:28.340000",
          "content": "<p>From my understanding the surface dice metric requires thresholding of predictions hence we cannot directly optimize it.<br>\nApplying the metric on probabilities does not seem to yield meaningful results but I did not dig very deeply nor look into the math.</p>",
          "votes": 0,
          "replies": [
            {
              "id": 2584012,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2024-01-02T16:26:24.097000",
              "content": "<p>here is the trick:<br>\n(it works because we are using tolerance =0)</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Ffdd66c33bdd0f19d58d99d17f10ea6f2%2FSelection_999(4516).png?generation=1704212727502294&amp;alt=media\" alt=\"\"></p>\n<p>if tolerance is not zero, then we have to modify the softmax loss to KL divergence loss where the ground truth probabiliy = 1 - surface distance</p>",
              "votes": 3,
              "replies": []
            },
            {
              "id": 2584045,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2024-01-02T16:39:31.320000",
              "content": "<p>surface dice code</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F30564b4aee4a40bb179931f5e3eb4b0b%2FSelection_999(4517).png?generation=1704213554962565&amp;alt=media\" alt=\"\"></p>",
              "votes": 3,
              "replies": []
            },
            {
              "id": 2584536,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2024-01-03T02:53:58.090000",
              "content": "<p>BCE is really a bad loss</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F36e00dcc86bbf8d48da4359f16e28de9%2FSelection_999(4519).png?generation=1704250434431272&amp;alt=media\" alt=\"\"></p>",
              "votes": 2,
              "replies": []
            },
            {
              "id": 2584679,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2024-01-03T05:41:01.507000",
              "content": "<p>some other good boundary/surface loss from other papers:</p>\n<p>[1] Boundary loss for highly unbalanced segmentation<br>\n<a href=\"https://arxiv.org/pdf/1812.07032.pdf\" target=\"_blank\">https://arxiv.org/pdf/1812.07032.pdf</a><br>\n<a href=\"https://github.com/LIVIAETS/boundary-loss\" target=\"_blank\">https://github.com/LIVIAETS/boundary-loss</a></p>\n<p>[2] Boundary Difference Over Union Loss For Medical Image Segmentation<br>\n<a href=\"https://arxiv.org/pdf/2308.00220.pdf\" target=\"_blank\">https://arxiv.org/pdf/2308.00220.pdf</a><br>\n<a href=\"https://github.com/sunfan-bvb/BoundaryDoULoss\" target=\"_blank\">https://github.com/sunfan-bvb/BoundaryDoULoss</a></p>",
              "votes": 3,
              "replies": []
            },
            {
              "id": 2584869,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2024-01-03T08:10:56.550000",
              "content": "<p>google new paper!!</p>\n<p>Boundary Attention: Learning to Find Faint Boundaries at Any Resolution<br>\n<a href=\"https://arxiv.org/pdf/2401.00935.pdf\" target=\"_blank\">https://arxiv.org/pdf/2401.00935.pdf</a></p>",
              "votes": 2,
              "replies": []
            },
            {
              "id": 2593073,
              "author_name": "lhwcv",
              "author_url": "",
              "post_date": "2024-01-09T03:28:51.557000",
              "content": "<p>Thanks for sharing, have you try  this loss （your surface dice code）, how effective was it?</p>",
              "votes": 0,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2537053,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-11-24T17:39:09.587000",
      "content": "<p>kidney mask dataset<br>\n<a href=\"https://www.kaggle.com/datasets/hengck23/blood-vessel-segmentation-kidney-mask\" target=\"_blank\">https://www.kaggle.com/datasets/hengck23/blood-vessel-segmentation-kidney-mask</a></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fbba65b5d04a0a7dbf4a797937bcbf624%2F0862.png?generation=1700847526884113&amp;alt=media\" alt=\"\"> <img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F87a1a0d4dd0605c9b9a4edfe22e1edea%2F0704.png?generation=1700847547606309&amp;alt=media\" alt=\"\"></p>",
      "votes": 9,
      "replies": [
        {
          "id": 2537345,
          "author_name": "kcetskcaz",
          "author_url": "",
          "post_date": "2023-11-25T04:47:08.773000",
          "content": "<p>Thanks for putting this together, I was just looking at doing something like this yesterday before getting pulled in to holiday shenanigans. I re-scaled the data back to the full image size, RLE encoded it, and saved it back to the training csv for anyone interested in using it without resizing on load: <a href=\"https://www.kaggle.com/datasets/squidinator/sennet-hoa-kidney-13-dense-full-kidney-masks\" target=\"_blank\">https://www.kaggle.com/datasets/squidinator/sennet-hoa-kidney-13-dense-full-kidney-masks</a></p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 2537722,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2023-11-25T12:40:51.590000",
          "content": "<p>this is the code to get lb710+ using kidney mask</p>\n<pre><code>   vessel, kidney = 0,0\n        with torch.cuda.amp.autocast:\n            with torch.no_grad:\n                vm, km = net \n                vessel += vm\n                kidney += km\n\n                  TTA here \n\n        \n        vessel = vessel.float\n        kidney = kidney.float\n\n        _size = len\n        for b in range:\n            mk = kidney[b, 0]\n            mk = choose_biggest_object \n\n            mv = vessel[b, 0]\n            mv =  )\n            \n            p  =   \n            rle = rle_encode\n            df_data.append\n</code></pre>",
          "votes": 2,
          "replies": [
            {
              "id": 2538038,
              "author_name": "raytency",
              "author_url": "",
              "post_date": "2023-11-25T18:04:27.380000",
              "content": "<p>What is TTA?</p>",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2538656,
              "author_name": "coderRKJ",
              "author_url": "",
              "post_date": "2023-11-26T10:56:20.430000",
              "content": "<p>TTA is Test Time Augmentation. Best summary is in this paper: <a href=\"https://arxiv.org/abs/2011.11156\" target=\"_blank\">Better Aggregation in Test-Time Augmentation</a></p>\n<blockquote>\n  <p>Test-time augmentation -- the aggregation of predictions across transformed versions of a test input</p>\n</blockquote>\n<p>TL;DR: Make N augmentations of incoming test data and then combine them (e.g. taking average of the N outputs) to output the final results. It reduces variance in model output.</p>",
              "votes": 0,
              "replies": []
            }
          ]
        },
        {
          "id": 2538673,
          "author_name": "Kafka Tamura",
          "author_url": "",
          "post_date": "2023-11-26T11:26:38.900000",
          "content": "<p>Can you please explain this a bit? What are these masks for? In the train datasets, don't we already have dense masks for kidney 1 &amp; 3? Please excuse me if this is mundane. I'm just starting out.</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 2544657,
          "author_name": "lhwcv",
          "author_url": "",
          "post_date": "2023-12-01T02:18:16.403000",
          "content": "<p>Thanks for Sharing. How you create this kidney mask dataset？</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 2568510,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-12-20T15:35:22.913000",
      "content": "<p>20-dec:</p>\n<p>recepie for LB 0.848</p>\n<ul>\n<li>use transformer  (e.g. nextVIT base)</li>\n<li>use train =  kidney1/dense + kidney3/dense</li>\n<li>use validate = kidney2 </li>\n<li>just normal unet2d (with a additional encoder layer for H,W and H/2,w/2)</li>\n<li>infer with the usual xy,zx,zy + 5 TTA</li>\n</ul>\n<p>details at  the other posts below ….</p>\n<hr>\n<p>i am surprised that it can get LB 0.862 by training for long iterations (but CV does not reflect the change … maybe because of wrong annotation on kidney2 and the segmentation sparsity (i.e. incomplete label)</p>\n<p>i.e. there is probably no reliable local validation set in this competition</p>",
      "votes": 7,
      "replies": [
        {
          "id": 2568889,
          "author_name": "samshipengs",
          "author_url": "",
          "post_date": "2023-12-21T00:10:57.317000",
          "content": "<p>maybe i missed it, but any reason just normal unet2d would be suffice? any thoughts on 3D approach?</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 2575634,
          "author_name": "Time Master",
          "author_url": "",
          "post_date": "2023-12-27T03:24:57.123000",
          "content": "<p>Hi, I don't understand what does xy,zx,zy mean，could you please explain it, thanks!</p>",
          "votes": 2,
          "replies": [
            {
              "id": 2576362,
              "author_name": "Ivan Egorov",
              "author_url": "",
              "post_date": "2023-12-27T16:50:12.083000",
              "content": "<p>As you are dealing with 3d images, you can view them at different sides, so there are XY, ZX and ZY. Think of that as a cube which you can look at from different angles.</p>",
              "votes": 3,
              "replies": []
            },
            {
              "id": 2576585,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-12-27T22:33:40.620000",
              "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa096d4423afdf74a85957f917ed604f5%2FSelection_999(4450).png?generation=1703716412990283&amp;alt=media\" alt=\"\"></p>\n<p>more infor</p>",
              "votes": 3,
              "replies": []
            }
          ]
        },
        {
          "id": 2582421,
          "author_name": "Muhammad Haseeb Ahmad",
          "author_url": "",
          "post_date": "2024-01-01T15:19:38.600000",
          "content": "<p>did you try using a combination of these strats, or did you get excellent results trying each of them individually?</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 2565193,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-12-17T18:47:04.473000",
      "content": "<p>correct way to do validation:</p>\n<ul>\n<li>just validate on kidney3 is not enough.</li>\n<li>another test (just test only, don't use it to true hyper-parameters) on kidney2 is probably more accurate</li>\n<li>low fp seems to be the key for good LB score. for me fp=0.05 is optimal for LB.</li>\n<li>transformer seems to be a \"much\" better model (maybe more rubust against salt noise,etc see segformer paper)</li>\n</ul>\n<p>NOTE: </p>\n<ul>\n<li>all models below have local CV of 0.90 for kidney3 (dense). But when it comes to kidney2, results are different, as hsown in the table below.</li>\n<li>all models are trained on kidney1 (dense) only</li>\n<li>top upper half of kidney2 has annotation error (shift) … see anotehr post below</li>\n</ul>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F1c0c51894ac5dfa54adf769e3819685a%2FSelection_999(4439).png?generation=1702839533752331&amp;alt=media\" alt=\"\"></p>",
      "votes": 7,
      "replies": [
        {
          "id": 2565535,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2023-12-18T05:42:24.293000",
          "content": "<p>another tip:<br>\nmy previous two winning kaggle solution has huge shake up. I could win because i kept to the follwing principles. instead of the best parameter (e.g. threshold)  for the solution:</p>\n<ul>\n<li>try to improve your solution so that it is not sensitive to thresholds, i.e. performance is optimal over a range of threshold. e.g. best AP verus MAP</li>\n<li>try to improve your solution so that it is not sensitive to data, i.e. there is low variance in accuracy for different validation samples</li>\n</ul>\n<p>in summary, in addition to best results, think of ways to</p>\n<ul>\n<li>measure variance</li>\n<li>reduce variance</li>\n</ul>",
          "votes": 14,
          "replies": []
        }
      ]
    },
    {
      "id": 2556920,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-12-11T04:55:13.287000",
      "content": "<p><a href=\"https://www.kaggle.com/code/junkoda/fast-surface-dice-computation\" target=\"_blank\">https://www.kaggle.com/code/junkoda/fast-surface-dice-computation</a></p>\n<p>based on the fast surface dice computation by <a href=\"https://www.kaggle.com/junkoda\" target=\"_blank\">@junkoda</a>, i did an extensive study on the effect of threshold and the local lb metric. For each model after the training epoch, i made measurements.</p>\n<p>conclusion:</p>\n<ul>\n<li>TTA and TTA+xy,zx,zy always improve surface-dice, even if the model is under or over-fitted.</li>\n<li>there are two optimum:<ul>\n<li>early stopping (high threshold &gt;0.5)</li>\n<li>just before over fitted (0.2 to 0.3 threshold)</li></ul></li>\n<li>BCE loss seems not suitable. both train and validation loss are decreasing steadily. But surface-dice are moving up and down. One may want to take a look at e.g. edge loss, Hausdorff Distance loss, etc</li>\n</ul>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F16d9246986625481df350c42a67d8e98%2FSelection_999(4341).png?generation=1702270136436198&amp;alt=media\" alt=\"\"></p>",
      "votes": 7,
      "replies": [
        {
          "id": 2556936,
          "author_name": "Huang Jin Feng",
          "author_url": "",
          "post_date": "2023-12-11T05:01:33.273000",
          "content": "<p>I'm using a combination of 0.5<em>Dice loss and 0.5</em>BCE loss. The loss is continuously decreasing, but it seems that the surface dice and LB are also increasing. Perhaps Dice loss is more suitable?</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 2556937,
          "author_name": "Snorf",
          "author_url": "",
          "post_date": "2023-12-11T05:02:50.523000",
          "content": "<p>Is the model trained on xy xz yz or only inferred on xy xz yz?</p>",
          "votes": 1,
          "replies": [
            {
              "id": 2556969,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-12-11T05:41:15.430000",
              "content": "<p>model is trained in xy xz yz </p>",
              "votes": 4,
              "replies": []
            }
          ]
        },
        {
          "id": 2562703,
          "author_name": "Lingxi",
          "author_url": "",
          "post_date": "2023-12-15T16:01:34.850000",
          "content": "<p>Hello, may I ask how you do multi-view training during the training process, is it cycling three axes training in one epoch? I put the data of the three views into a dataset, set the batchsize to 1, and shuffle it, but it doesn't seem to work well. Could you please make a reply? Thank you very much</p>",
          "votes": 2,
          "replies": [
            {
              "id": 2562785,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-12-15T16:46:53.713000",
              "content": "<pre><code> ():\n    train_id=[]\n     n  name:\n        d = meta_data[n]\n        D,H,W = d.image.shape\n        train_id += [ (d.name, i, )  i  (H) ]\n        train_id += [ (d.name, i, )  i  (D) ]\n        train_id += [ (d.name, i, )  i  (W) ]\n     train_id\n\ntrain_id = make_train_id(...)\n\n\n ():\n     ():\n        self.sample_id = sample_id\n        self.augment = augment\n        self.length = (self.sample_id)\n\n        unique_name=[]\n         name,i,axis  sample_id:\n              name  unique_name:\n                unique_name.append(name)\n        self.unique_name=(unique_name)\n\n     ():\n        string = \n        string += \n        string += \n         string\n\n     ():\n         self.length\n\n     ():\n        name,i,axis = self.sample_id[index]\n\n        d = DATA_META[name]\n        D,H,W = d.image.shape\n\n         axis == :\n            image = d.image[i]\n            vessel = d.vessel[i]\n         axis == :\n            image = d.image[:, i]\n            vessel = d.vessel[:, i]\n         axis == :\n            image = d.image[:, :, i]\n            vessel = d.vessel[:, :, i]\n\n        image  = np.ascontiguousarray(image)\n        vessel = np.ascontiguousarray(vessel)\n\n         self.augment   :\n            image, vessel = self.augment(image, vessel)\n\n        image  = np.ascontiguousarray(image)\n        vessel = np.ascontiguousarray(vessel)\n        \n\n        r = {}\n        r[] = index\n        r[ ] = (name,i,axis)\n        r[ ] = torch.from_numpy(image).()\n        r[] = torch.from_numpy(vessel).()\n         r\n</code></pre>",
              "votes": 3,
              "replies": []
            },
            {
              "id": 2563371,
              "author_name": "Lingxi",
              "author_url": "",
              "post_date": "2023-12-16T08:34:03.630000",
              "content": "<p>This seems similar to doing a three-view dataset offline, whether you used a batchsize of 1 or padded the  different viewing images to the same size.</p>",
              "votes": 1,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2555308,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-12-09T20:32:34.497000",
      "content": "<p>example of simple 3d flood fill</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F56ca19ca89d0f127a7e210ec6700bc3e%2FPeek%202023-12-10%2004-15.gif?generation=1702153952547969&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa4fc9bf7de3d501b6aa9b03373731039%2FSelection_999(4312).png?generation=1702153942671435&amp;alt=media\" alt=\"\"></p>",
      "votes": 8,
      "replies": [
        {
          "id": 2555311,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2023-12-09T20:34:43.617000",
          "content": "<pre><code> iteration in range():\n \n  t in range(,,-): \n    (t)\n      = dense[t+]\n     = image[t+]\n     = image[t]\n\n     = curr_image[:-,:-]\n     = prev_mask*prev_image\n\n    =\n     = \n     += np.abs(m-prev[:-,:-])&lt;th #[ , ]\n     += np.abs(m-prev[:  ,:-])&lt;th #[ , ]\n     += np.abs(m-prev[:-,:-])&lt;th #[-, ]\n     += np.abs(m-prev[:-,:-])&lt;th #[ ,-]\n     += np.abs(m-prev[:  ,:-])&lt;th #[ ,-]\n     += np.abs(m-prev[:-,:  ])&lt;th #[-,-]\n     += np.abs(m-prev[:-,:  ])&lt;th #[ , ]\n     += np.abs(m-prev[:  ,:  ])&lt;th #[ , ]\n     += np.abs(m-prev[:-,:  ])&lt;th #[-, ]\n\n     = diff&gt;\n    \n\n     += grow\n    \n    ('predict',(predict&gt;).astype(np.float32))\n    .waitKey()\n</code></pre>",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 2543888,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-11-30T12:35:19.300000",
      "content": "<p>IMPORTANT!!!!!<br>\nThis is the black magic and the trick to winning!!!!</p>\n<p>results of 3d flood fill with seed = one pixel</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fdc2eabf5b33f2f89c160fdeb94532138%2FSelection_999(4168).png?generation=1701347716526450&amp;alt=media\" alt=\"\"></p>",
      "votes": 7,
      "replies": [
        {
          "id": 2543944,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2023-11-30T13:12:05.883000",
          "content": "<p>this reminds me of 3d SAM (segment anything model)<br>\nif so, we can use self-supervised learning to train the encoder  </p>\n<p>the seed will be prompt.  </p>\n<p>the decoder is to perform floodfill segmentation   </p>",
          "votes": 2,
          "replies": [
            {
              "id": 2544343,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-11-30T19:01:08.027000",
              "content": "<p>volumetric rendering of image volume</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F4b30a20e48d5434eb5d9e3263c7591fd%2FPeek%202023-12-01%2002-57.gif?generation=1701370799773034&amp;alt=media\" alt=\"\"></p>\n<p>it shows the uniform intensity of walls of the vessel. that is why flood fill works well</p>",
              "votes": 1,
              "replies": []
            },
            {
              "id": 2544387,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-11-30T19:32:36.910000",
              "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F00e9ea02daf6924a01066d9704166d59%2FSelection_999(4171).png?generation=1701372684763901&amp;alt=media\" alt=\"\"></p>\n<p>this solves the puzzle why there are so much noise in prediction.<br>\nwe need some median filtering layer?<br>\n<a href=\"https://github.com/llmpass/medianDenoise\" target=\"_blank\">https://github.com/llmpass/medianDenoise</a></p>",
              "votes": 2,
              "replies": []
            },
            {
              "id": 2545013,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-12-01T08:32:41.507000",
              "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F6f8c6f09bb13beef8496958bca3a2a97%2FSelection_999(4186).png?generation=1701419507768841&amp;alt=media\" alt=\"\"></p>\n<p>hyptersis thresholding prediction as an alterantive to flood filling on input</p>",
              "votes": 3,
              "replies": []
            },
            {
              "id": 2547016,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-12-03T05:16:38.150000",
              "content": "<p>nice rendering<br>\n<a href=\"https://www.youtube.com/watch?v=wZbfNJxTxqc\" target=\"_blank\">https://www.youtube.com/watch?v=wZbfNJxTxqc</a></p>\n<p><a href=\"https://www.nationalgeographic.com/science/article/worlds-brightest-x-rays-reveal-covid-19-damage-to-the-body\" target=\"_blank\">https://www.nationalgeographic.com/science/article/worlds-brightest-x-rays-reveal-covid-19-damage-to-the-body</a><br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fe3425d8daff24d619bd70dcbd5704ba4%2FSelection_999(4214).png?generation=1701580587953427&amp;alt=media\" alt=\"\"></p>",
              "votes": 0,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2543380,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-11-30T03:24:50.710000",
      "content": "<p>wrong annotation !!!!!<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Ff8f783cd4318a8853e5d628435131879%2FSelection_999(4156).png?generation=1701314688469717&amp;alt=media\" alt=\"\"></p>",
      "votes": 7,
      "replies": [
        {
          "id": 2543402,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2023-11-30T04:07:21.747000",
          "content": "<p>i think there is offset bug in annotion for kidney2</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc736ce3630a4beae36d445ef2e97a962%2FSelection_999(4159).png?generation=1701317221007709&amp;alt=media\" alt=\"\"><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Ff09a93d56aeca55fd5a4e253f3e9f919%2FSelection_999(4158).png?generation=1701317230860236&amp;alt=media\" alt=\"\"><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc7cd3b6255a02c133a72e4c8ba7afb84%2FSelection_999(4157).png?generation=1701317239646900&amp;alt=media\" alt=\"\"></p>",
          "votes": 2,
          "replies": [
            {
              "id": 2555809,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-12-10T08:08:00.093000",
              "content": "<p>shift error happens in hidden test datat ground truth before in kaggle competitions…<br>\nanyone want to probe that?</p>",
              "votes": 1,
              "replies": []
            },
            {
              "id": 2563972,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-12-16T17:50:06.877000",
              "content": "<p>only top half of kidney 2 annotation are shifted</p>\n<p>TOP:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fbe2a7252e15844c7b88eb3db63a324b6%2FSelection_999(4437).png?generation=1702748975416857&amp;alt=media\" alt=\"\"></p>\n<p>BOTTOM:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fe33a6f4a697a929c884f53d4d74e6200%2FSelection_999(4435).png?generation=1702748999529614&amp;alt=media\" alt=\"\"></p>\n<pre><code>    pl = pv.\n\n    mhit = pv.).T).glyph(geom=pv.)\n    mfp = pv.).T).glyph(geom=pv.)\n    mmiss = pv.).T).glyph(geom=pv.)\n    pl.add\n    pl.add\n    pl.add\n    pl.show\n</code></pre>",
              "votes": 5,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2621747,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2024-01-27T00:29:18.097000",
      "content": "<p>my estimate at one week before the competition:</p>\n<ol>\n<li>for a good ML/deep learning practitioner:  performance of single model : &gt;= public lb 0.865</li>\n<li>experienced practitioner:  performance of single model : &gt;=  public lb 0.875 ~ 0.880<br>\n(e.g. better model, augmentation, pre/post processing, hyperprameters, learning/meta framework)</li>\n<li>emsemble : &lt;= ~0.01+</li>\n<li>shakeup (i.e. std in score under various test data, if available) at 50um per voxel &lt;= 0.04</li>\n<li>shakeup (i.e. transfer from high resolution to low resolution) at 63um per voxel &lt;= 0.07</li>\n</ol>\n<hr>\n<p>final top-1 private leaderboard: private lb  0.890 to 0.880<br>\ngold cut-off : private lb  0.875 to 0.880</p>",
      "votes": 5,
      "replies": [
        {
          "id": 2623002,
          "author_name": "chemdatafarmer",
          "author_url": "",
          "post_date": "2024-01-27T20:59:09.037000",
          "content": "<p>It will be interesting to see how it plays out. I am looking forward to people's write ups so I can understand how they go from 0.8 -&gt; ~0.86 on the leaderboard. I've struggled to get my 2D models (based on SeResNet) to score higher than 0.8. I have learned a lot, but there is plenty more to learn.</p>",
          "votes": 0,
          "replies": [
            {
              "id": 2623007,
              "author_name": "chemdatafarmer",
              "author_url": "",
              "post_date": "2024-01-27T21:02:10.803000",
              "content": "<p>Actually, I have struggled to get train and validation dice scores over 0.84 (kidney 1 train, kidney 3 val) without overfitting</p>",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2623113,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2024-01-28T01:36:22.463000",
              "content": "<p>\"so I can understand how they go from 0.8 -&gt; ~0.86 on the leaderboard. \"<br>\n\"I have struggled to get train and validation dice  … without overfitting\"</p>\n<p>answer to both : train augmentation.</p>\n<p>generally(i.e. this and other competitions) all image train augmentation can be classified as</p>\n<ul>\n<li>affine transform (most important: scale , rotate)</li>\n<li>noise (from pixel wise , block wise, object wise, … image artifacts)</li>\n<li>intensity (color, contrast hue, gray/color, shift,)</li>\n<li>generation: cutout, mixup, crop, slicing, draw foreign objects, …….</li>\n<li>others: flip, rotate90</li>\n</ul>\n<p>some make the results very worst, some will improve significantly</p>\n<hr>\n<p>visualise, visualise, visualise</p>\n<ul>\n<li>draw inspect the miss and fp.</li>\n<li>draw the prediction probability at each early iterations … inspect how the model learns ….<br>\n(you will see which objects is learned first and how the training evolved)</li>\n</ul>",
              "votes": 6,
              "replies": []
            },
            {
              "id": 2623134,
              "author_name": "chemdatafarmer",
              "author_url": "",
              "post_date": "2024-01-28T02:13:53.993000",
              "content": "<p>Thank you <a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> for always being so helpful on these forums! I noticed that the train augmentation helps improve the consistency between the train, test, and even leaderboard. Perhaps I need to try more! I appreciate the advice to inspect early epochs. I hadn't done that, I typically just save the best weights and inspect the result. I'll give it a try :). </p>",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2626979,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2024-01-30T12:08:10.753000",
              "content": "<p>visualisation for the first 0.25 epoch<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F425a8cc975f235331a07db0a06f88ad1%2FSelection_999(4713).png?generation=1706616477661913&amp;alt=media\"><br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc5236e5a84bfd183891f8a229094914f%2FSelection_999(4714).png?generation=1706616489116957&amp;alt=media\"></p>",
              "votes": 1,
              "replies": []
            },
            {
              "id": 2629597,
              "author_name": "chemdatafarmer",
              "author_url": "",
              "post_date": "2024-01-31T22:26:30.590000",
              "content": "<p>Very interesting! I've been working on doing similar after your comment. Your advice has been very helpful, I've been implementing it and hoping it can help me move up on the leaderboard before the final :)</p>",
              "votes": 0,
              "replies": []
            }
          ]
        },
        {
          "id": 2623085,
          "author_name": "Cody_Null",
          "author_url": "",
          "post_date": "2024-01-28T00:27:55.863000",
          "content": "<p>This one has been a heart breaker, I have been stuck with my current score for about a month now and it seems unless I come up with something I will be just shy of gold. I am interested to see what others did because I feel like I have tried so many things that just don’t seem to help.</p>",
          "votes": 2,
          "replies": [
            {
              "id": 2623137,
              "author_name": "chemdatafarmer",
              "author_url": "",
              "post_date": "2024-01-28T02:15:48.037000",
              "content": "<p>I understand. I got really excited about a custom loss function I found in the literature and for my models below 0.8 on the public leaderboard it always seemed to improve the score, but when I tried it with the model that scored well it didn't improve. I keep hitting a wall. Still, it's been a fun competition! I've never worked on a proper segmentation problem before and I've learned a lot! Good luck getting into gold as the leaderboard shifts with the private data.</p>",
              "votes": 1,
              "replies": []
            },
            {
              "id": 2623175,
              "author_name": "Cody_Null",
              "author_url": "",
              "post_date": "2024-01-28T03:23:09.900000",
              "content": "<p>Thank you! Good luck to you too! Yes the learning is what is important and I have definitely done a lot of that! Good to get reminders every once in awhile!</p>",
              "votes": 1,
              "replies": []
            }
          ]
        },
        {
          "id": 2625364,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2024-01-29T11:09:57.290000",
          "content": "<p>one more information. from the paper: if train = kidney1 upper, valid = kidney1 lower, surface dice is 0.95.<br>\nBut i think that is not using TTA.<br>\n(i haven't done experiment on upper/lower split).</p>\n<p>I estimate with TTA and better processing,  surface dice is 0.96+.</p>\n<p>This means that under perfect data (i.e. no domain shift), expect a 0.03+</p>",
          "votes": 0,
          "replies": [
            {
              "id": 2625675,
              "author_name": "Muhammad Haseeb Ahmad",
              "author_url": "",
              "post_date": "2024-01-29T14:38:28.967000",
              "content": "<p>I noticed something today which you might find interesting.<br>\nFor my validation set, which is kidney 3 dense, I generated a submission.csv using all the images.<br>\nThen I broke it into 10 samples to calculate the surface dice score, each sample with a step size of 10, such that my first sample would consider img 0, 10, 20 etc., the second would consider img 1, 11, 21 and so on.<br>\nEach individual sample scored above 0.94, and the avg was over .94 as well. However, when I calculated dice score over the full CV set without breaking it into sub samples, the dice score became 0.86. This has been confusing me. Im using <a href=\"https://www.kaggle.com/Jun\" target=\"_blank\">@Jun</a> Koda's method. <a href=\"https://www.kaggle.com/datasets/junkoda/sennet-score\" target=\"_blank\">https://www.kaggle.com/datasets/junkoda/sennet-score</a>.<br>\nObviously my actual score on the public test set is around .835, which is much closer to .86 than .94.<br>\nI thought that the surface dice scores are being averaged over the sample, but that doesn't seem to be the case.<br>\nDo you have any thoughts?</p>",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2625735,
              "author_name": "Optimo",
              "author_url": "",
              "post_date": "2024-01-29T14:58:09.980000",
              "content": "<p>What you are doing does not make sense -&gt; the competition metric is computed over consecutive frames: the dice score is computed on the surface area defined by two consecutive frames. So if you compute the score with images separated by 10 images this will create a very poor ground truth for the surface area.</p>\n<p>If you wish to see you scores on subsets, you should take adjacent frames like 0 to 100, then 100 to 200 etc… The local scores should then average to the global score.</p>",
              "votes": 2,
              "replies": []
            },
            {
              "id": 2625774,
              "author_name": "Muhammad Haseeb Ahmad",
              "author_url": "",
              "post_date": "2024-01-29T15:26:32.107000",
              "content": "<p>Wow, that clarifies so much for me. Thank you very much. I suppose dice loss is very different.<br>\nI have learned a valuable lesson.</p>",
              "votes": 1,
              "replies": []
            },
            {
              "id": 2626468,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2024-01-30T03:40:49.027000",
              "content": "<p>i wonder did anyone try this:</p>\n<ol>\n<li>use kidney1 upper as train and kidney1 lower as validation.</li>\n<li>then use \" kidney1 upper truth + kidney1 lower pseudo label\"to make a model. Compare it against another model using  \" kidney1 all\".</li>\n<li>you you succeed in (2), then you can use \" kidney3 dense\" to relabel \" kidney3 sparse\"</li>\n</ol>",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2626615,
              "author_name": "JEANMPIA",
              "author_url": "",
              "post_date": "2024-01-30T06:18:28.613000",
              "content": "<p>That's a really good idea, will try and let everyone know the results here</p>",
              "votes": 3,
              "replies": []
            },
            {
              "id": 2626640,
              "author_name": "HB",
              "author_url": "",
              "post_date": "2024-01-30T06:33:05.297000",
              "content": "<p>from the paper: if train = kidney1 upper, valid = kidney1 lower, surface dice is 0.95.</p>\n<p>Can you tell me about this paper?</p>\n<p>Relabeling \"kidney3 sparse\" will help, but I don't think it's easy to get a perfect model by using k1 and k2 for validation in \"kidney3 dense\" training. I'm very curious about how much validation data was used for training in the above paper, including the specific training model.</p>",
              "votes": 0,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2589018,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2024-01-06T01:16:46.003000",
      "content": "<p>wrong strategy?</p>\n<pre><code>i have been trying  detect  small vessels  improve  LB score becuase   stated   paper  this  one   problem.\nBut  i realize  this may  be a good strategy?\n\ni use train= kidney1 dense + kidney3 dense\nvalidation= kidney2 sparse ( slice &gt;=   avoid annotation shift )\n\ni  note  recent popular public kernel based  seresnext50_32x4d dunet which can easily object lb . seresnext50_32x4d has imagenet top1  range  ~. My experiments shows   seresnext50_32x4d dunet has low hit rate (&gt;),  has very low fp rate (~)  well. i am surprise   can   lb single model.\n\ni have been using nextVIT base transformer, imagenet top1 ~,   lb . It has very high hitrate (&gt;)  low fp rate (~).\n\n turns out   lb  based  surface pixels, small vessel has less surface ( contribute little  lb score) !!!\ne.g.  kidney3 sparse (% annotation) has surface dice  compared  kidney3 dense\n\n other ,   wrong choice  metric   host interest   detect small vessel\n</code></pre>",
      "votes": 6,
      "replies": [
        {
          "id": 2589179,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2024-01-06T06:30:26.443000",
          "content": "<p>update on 06-JAN<br>\ntrick to get lb 0.87+</p>\n<ul>\n<li><p>make a base model in the range of 0.864 (e.g. either seresnext50_32x4d or  nextVIT base  2d unet)</p></li>\n<li><p>ensemble of the two will give  0.87+</p></li>\n<li><p>ensemble  improve lb score:</p></li>\n</ul>\n<ol>\n<li>detect more instance  </li>\n<li>for an already detected instance improve its boudary to improve the dice score for that instance</li>\n<li>reduce fp</li>\n</ol>",
          "votes": 2,
          "replies": [
            {
              "id": 2589240,
              "author_name": "lhwcv",
              "author_url": "",
              "post_date": "2024-01-06T07:31:23.673000",
              "content": "<p>Thank you for sharing. Different models might have different thresholds. How do you perform model fusion? Do you average the probabilities and then use a compromise threshold?</p>",
              "votes": 2,
              "replies": []
            },
            {
              "id": 2589337,
              "author_name": "wpl",
              "author_url": "",
              "post_date": "2024-01-06T09:44:17.340000",
              "content": "<p>Thank you for sharing. I would like to know approximately how long it takes for a single model of amp inference, and would it be faster to use TensorRT instead</p>",
              "votes": 1,
              "replies": []
            },
            {
              "id": 2589420,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2024-01-06T11:20:49.200000",
              "content": "<p>seresnext50_32x4d : 2hr +<br>\nnextVIT base 2d : 3hr +</p>\n<p>i haven't use tensorRT yet</p>",
              "votes": 1,
              "replies": []
            },
            {
              "id": 2589498,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2024-01-06T12:40:51.307000",
              "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fb2411a886d57c613e767a0aaff915faf%2FSelection_999(4532).png?generation=1704544815068725&amp;alt=media\" alt=\"\"></p>\n<p><a href=\"https://www.kaggle.com/lihaoweicvch\" target=\"_blank\">@lihaoweicvch</a> </p>\n<p>i have not decided. but the threshold is smiliar for same validation set even for different model</p>",
              "votes": 4,
              "replies": []
            },
            {
              "id": 2589696,
              "author_name": "wpl",
              "author_url": "",
              "post_date": "2024-01-06T15:17:07.227000",
              "content": "<p>Thank you for answer.Is this the duration of reasoning for only one perspective without TTA? When I take TTA from three perspectives, seresnext50_ 32x4d took approximately 6 hours to reason</p>",
              "votes": 1,
              "replies": []
            },
            {
              "id": 2589706,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2024-01-06T15:25:31.097000",
              "content": "<p>time is for infer with the usual xy,zx,zy + 5 TTA</p>",
              "votes": 1,
              "replies": []
            }
          ]
        },
        {
          "id": 2590673,
          "author_name": "Theo Viel",
          "author_url": "",
          "post_date": "2024-01-07T11:19:37.070000",
          "content": "<p><a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> How do you compute your FPR ? Your definition probably differs from the one I'm used to regarding normalization.</p>\n<p>Do you use <code>(pred * (1 - truth)).sum() / truth.sum()</code> ?<br>\nSame for TPR, you are using <code>(pred * truth).sum() / truth.sum()</code>, right ?</p>\n<p>Thanks!</p>",
          "votes": 1,
          "replies": [
            {
              "id": 2590803,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2024-01-07T12:53:54.400000",
              "content": "<pre><code>def np_metric(, truth):\n    p = (&gt;0.5)\n    t = (truth&gt;0.5)\n    hit = (p*t).()\n    fp  = (p*(1-t)).()\n    t_sum = t.()\n    p_sum = p.()\n     hit, fp, t_sum, p_sum\n\n#-------------------------------------\n = &gt;0.5\nhit, fp, t_sum, p_sum = np_metric(, truth)\nhit = hit/t_sum\nfp = fp/p_sum\n</code></pre>\n<p>precision and recall are better words</p>",
              "votes": 4,
              "replies": []
            },
            {
              "id": 2590930,
              "author_name": "Theo Viel",
              "author_url": "",
              "post_date": "2024-01-07T14:46:00.647000",
              "content": "<p>Gotcha, thanks.</p>\n<p>FYI, those are my scores on <code>kidney_2</code>: <br>\n<code>\nhit: 0.9549\nfp: 0.0507\nCV: 0.84\nLB ~0.80\n</code><br>\nMy LB scores are lagging behind compared to yours but my CV scores are close. Not sure if it is because I have too many FPs or not.</p>",
              "votes": 2,
              "replies": []
            },
            {
              "id": 2591172,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2024-01-07T17:44:08.753000",
              "content": "<p>submit with different thresholds.</p>\n<p>CV and LB correlations are weak. but i do see a general linear relationship: lb = cv + bias<br>\n(cv and lb don't share the best optimal threshold, which is a** problem for us to avoid shakeup**)</p>\n<p>\"FYI, those are my scores on kidney_2:\"</p>\n<p>There are annotation errors in kidney 2. so your lb score should be better if your threshold is correct</p>",
              "votes": 2,
              "replies": []
            },
            {
              "id": 2591184,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2024-01-07T17:50:56.710000",
              "content": "<p><a href=\"https://www.kaggle.com/theoviel\" target=\"_blank\">@theoviel</a> <br>\ni think your metric are for model without TTA.</p>\n<p>you need to do TTA (it is common that 2d Unet can completely  miss vessel in one view and detect in another). TTA may not improve CV, but it should improve LB.</p>",
              "votes": 3,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2554978,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-12-09T15:30:08.363000",
      "content": "<p>trick to get lb 0.835<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F7f8c7dca190065f9d3b98f880ef7cd21%2FSelection_999(4310).png?generation=1702135804600547&amp;alt=media\" alt=\"\"></p>",
      "votes": 6,
      "replies": [
        {
          "id": 2554980,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2023-12-09T15:32:07.580000",
          "content": "<pre><code>    def forward(self, batch):\n        x = batch['image']\n        x = x.(-1,3,-1,-1) \n        B, C, , W = x.shape\n\n         = []\n        xx = self.stem0(x); .(xx)\n        xx = F.avg_pool2d(xx,kernel_size=2,stride=2)\n        xx = self.stem1(xx); .(xx)\n\n         = self.encoder #convnext\n        x = .(x);\n\n        x = .stages[0](x); .(x)\n        x = .stages[1](x); .(x)\n        x = .stages[2](x); .(x)\n        x = .stages[3](x); .(x)\n        ##[(f'encode_{i}', .shape)  i,  enumerate()]\n\n        last,  = self.decoder(\n            feature=[-1], skip=[:-1][::-1]\n        )\n        ##[(f'decode_{i}', .shape)  i,  enumerate()]\n        ##('last', last.shape)\n\n        vessel = self.vessel(last)\n</code></pre>",
          "votes": 3,
          "replies": [
            {
              "id": 2554998,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-12-09T15:46:19.803000",
              "content": "<p>you can go to super-resolution</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F86402d134c124fd64c7695762e052762%2FSelection_999(4311).png?generation=1702136734642968&amp;alt=media\" alt=\"\"></p>\n<p>HINT:<br>\nalternatively, you can train a real super-resolution net (you have 20um imags from the HIP-CT website)</p>",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2555495,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-12-10T00:53:29.737000",
              "content": "<p>local CV/LB<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa034d0e1646416700a5b6fadd8e26bbb%2FSelection_999(4315).png?generation=1702169707335185&amp;alt=media\" alt=\"\"></p>",
              "votes": 1,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2552053,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-12-07T06:39:19.887000",
      "content": "<p>lb0.829 …</p>\n<p>normalisation is the key</p>\n<pre><code> norm_by_percentile(volume, low=, high=., alpha=.):\n     = np.percentile(volume,low)\n     = np.percentile(volume,high)\n     = (volume-xmin)/(xmax-xmin)\n     :\n        [x&gt;]=(x[x&gt;]-)*alpha +\n        [x&lt;]=(x[x&lt;])*alpha\n    \n     x\n</code></pre>\n<p>normalised by volume/subvolume, not image</p>",
      "votes": 6,
      "replies": [
        {
          "id": 2554394,
          "author_name": "Arunodhayan",
          "author_url": "",
          "post_date": "2023-12-09T05:50:07.933000",
          "content": "<p><a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a> - is this the right way to read 3D volume because i get negative stride error </p>\n<pre><code> (torch.utils.data.Dataset):\n ():\n    self.img_voxel = create_3d_voxel(img_voxel_paths)  \n    self.msk_voxel = create_3d_voxel_msk(msk_voxel_paths)  msk_voxel_paths    \n    self.transforms = transforms\n\n ():\n     self.img_voxel.shape[]  \n\n ():\n    img = self.img_voxel[index, :, :].copy()  \n    img = np.expand_dims(img, axis=)  \n\n     self.msk_voxel   :\n        msk = self.msk_voxel[index, :, :].copy()  \n        msk = np.expand_dims(msk, axis=)  \n\n         self.transforms:\n            data = self.transforms(image=img, mask=msk)\n            img = data[]\n            msk = data[]\n\n         torch.tensor(img, dtype=torch.float32), torch.tensor(msk, dtype=torch.float32)\n    :\n         self.transforms:\n            data = self.transforms(image=img)\n            img = data[]\n\n         torch.tensor(img, dtype=torch.float32)\n</code></pre>",
          "votes": 0,
          "replies": [
            {
              "id": 2554986,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-12-09T15:36:51.937000",
              "content": "<pre><code>def do_random_flip_rotate(, vessel):\n     ..rand()&lt;:\n          = .flip(, axis=) #horizontal\n        vessel = .flip(vessel,axis=)\n     ..rand()&lt;:\n          = .flip(, axis=)\n        vessel = .flip(vessel,axis=)\n     ..rand()&lt;:\n        k = ..choice([,,])\n          = .rot90(, k, =[,])\n        vessel = .rot90(vessel,k, =[,])\n\n     = .ascontiguousarray()\n    vessel = .ascontiguousarray(vessel)\n     , vessel\n</code></pre>",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2555557,
              "author_name": "Arunodhayan",
              "author_url": "",
              "post_date": "2023-12-10T03:06:33.673000",
              "content": "<p>still i face the same error </p>",
              "votes": 0,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2541221,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-11-28T09:58:56.980000",
      "content": "<p>Yellow: MISS<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F88f268f9b529a2f68e9e111d53662121%2FPeek%202023-11-28%2017-51.gif?generation=1701165525275937&amp;alt=media\" alt=\"\"><br>\nGreen: FP<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F5cc5e3d3dcdca56155b2f4fa5b1ed96e%2FPeek%202023-11-28%2017-53.gif?generation=1701165506289118&amp;alt=media\" alt=\"\"><br>\nRed: HIT<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F57447a54514accc6fd1d3b1cfdebcef6%2FPeek%202023-11-28%2017-55.gif?generation=1701165488221412&amp;alt=media\" alt=\"\"><br>\nALL<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F65417fbd421b7741d417ae9ac74ee5ab%2FPeek%202023-11-28%2017-56.gif?generation=1701165472038050&amp;alt=media\" alt=\"\"></p>",
      "votes": 5,
      "replies": []
    },
    {
      "id": 2538299,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-11-26T02:17:31.723000",
      "content": "<p>beware !!!<br>\nit is not any vessel, but those from \" arterial vascular tree \"</p>\n<p>data page: \"kidney_1_dense - The whole of a right kidney at 50um resolution. The entire 3D arterial vascular tree … \"</p>\n<hr>\n<p>here you can see that not all vessel are annotated (kidney dense 1)<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F36a823d5c809fe74c99f774a7cfbd507%2FSelection_999(4051).png?generation=1700964826477601&amp;alt=media\" alt=\"\"><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F0a6889dcdc38de11f00ae61ae74b68f1%2FSelection_999(4050).png?generation=1700964841203613&amp;alt=media\" alt=\"\"></p>\n<p>i was wondering do we need to separate arterial and venous?<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F622be63c31bba65e4de644cad69ae98f%2FSelection_999(4052).png?generation=1700965019077924&amp;alt=media\" alt=\"\"></p>",
      "votes": 5,
      "replies": [
        {
          "id": 2539277,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2023-11-26T23:46:45.630000",
          "content": "<p>i am surprised that the deep CNN nework can somhow differentate between venous and arterial (target) vessel from one imgae.</p>\n<p>can anyone explain why?<br>\n(e.g.  they have different apperance due to dye/contrast when the Hip CT scan is taken ??? or arterial vessel have thicker wall ???)</p>",
          "votes": 2,
          "replies": [
            {
              "id": 2539288,
              "author_name": "YYama",
              "author_url": "",
              "post_date": "2023-11-27T00:02:44.373000",
              "content": "<p>The structure of the membrane differs significantly between arteries and veins. Arteries are richer in elastic fibres and thicker than veins. The walls of arteries and veins are very different, as can be seen in the linked histological image (HE-stain).<br>\n<a href=\"https://www.kidneypathology.com/English_version/Vessels_histology.htm\" target=\"_blank\">https://www.kidneypathology.com/English_version/Vessels_histology.htm</a></p>",
              "votes": 6,
              "replies": []
            },
            {
              "id": 2539290,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-11-27T00:10:58.743000",
              "content": "<p><a href=\"https://www.kaggle.com/yosukeyama\" target=\"_blank\">@yosukeyama</a> <br>\n\"The walls of arteries and veins are very different, \"</p>\n<p>Thanks. <br>\nThat is good news<br>\nso it seen that we need not grow the tree from scratch. just pure detection (+ post processing) is probably enough.</p>",
              "votes": 2,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2537534,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-11-25T08:57:03.293000",
      "content": "<p><strong>very bad news !!!</strong><br>\ni try to do some probing.</p>\n<p>public lb set: kidney 5<br>\nprivate lb set: kidney 6</p>\n<h2>don't overfit … there could be shakeup. worst still, what if kidney 5 and 6 are of different um resolution???</h2>\n<p>you may want to verify yourself ( just in case my code is buggy)</p>",
      "votes": 6,
      "replies": [
        {
          "id": 2537624,
          "author_name": "YumeNeko",
          "author_url": "",
          "post_date": "2023-11-25T11:05:56.733000",
          "content": "<p>I think your guess is correct because I had the same result when I did LB Probing before. (Public is calculated on kidney_5 only, Private is calculated on kidney_6 only.)<br>\nI think it was reasonable to separate Public and Private by kidney_5 and kidney_6 because it is difficult to calculate metrics with such a high computational load more times than necessary.</p>\n<p>I agree with you that the information on the test dataset is rarely publicly available, which causes Big Shake in the worst case scenario.</p>",
          "votes": 3,
          "replies": [
            {
              "id": 2537870,
              "author_name": "YYama",
              "author_url": "",
              "post_date": "2023-11-25T15:06:39.347000",
              "content": "<p>It was not hard to imagine that this kind of data split is being used.</p>\n<p>If the resolution is different, I believe it essentially becomes a completely different image. Since we only have two types of resolution available, appropriate validation is very difficult. While it's not entirely unfeasible, there is a concern that it will turn into a competition heavily influenced by luck. In this case, the top solutions may not necessarily be the superior solutions…</p>",
              "votes": 1,
              "replies": []
            },
            {
              "id": 2547015,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-12-03T05:10:06.350000",
              "content": "<p>what if private kidney6 (500 images) is actually like kidney1 voi set at about 5.2um resolution.<br>\ni cannot think of a reason why kidney1 voi set is included in the train set ….</p>",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2549080,
              "author_name": "Parabellum",
              "author_url": "",
              "post_date": "2023-12-05T02:07:19.907000",
              "content": "<p>Something funny is my best score 0.62 is from mixing everything… I will probably remove the sparse and see if that makes a difference</p>",
              "votes": 0,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2612593,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2024-01-21T13:42:56.723000",
      "content": "<p>experiments on scale … yet another proof that it is FP that matters …</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F689d2443d12433d50098972a223f2516%2FSelection_999(4657).png?generation=1705844574982811&amp;alt=media\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F97a9b38d338e4373bd8c7463fcaca5bc%2FSelection_999(4658).png?generation=1705844565213916&amp;alt=media\"></p>",
      "votes": 3,
      "replies": [
        {
          "id": 2612649,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2024-01-21T14:14:09.037000",
          "content": "<p>OOPS!!! there is a metric bug<br>\n(this is behaviour for kidney2. maybe different behaviour for different kidney)</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F612b59de52eaa1179ccb4c3b16394857%2FSelection_999(4662).png?generation=1705846447352595&amp;alt=media\"></p>",
          "votes": 0,
          "replies": [
            {
              "id": 2612806,
              "author_name": "JEANMPIA",
              "author_url": "",
              "post_date": "2024-01-21T16:30:28.037000",
              "content": "<p>Hello <a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a>,<br>\nSince your conclusion is that fp matters, have you considered using the <a href=\"https://smp.readthedocs.io/en/latest/losses.html#segmentation_models_pytorch.losses.TverskyLoss\" target=\"_blank\">TverskyLoss</a> ? </p>\n<p>With it you can weight the impact of FP and FN, making the loss closer to the metric. What do you think ?</p>",
              "votes": 1,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2589059,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2024-01-06T03:02:02.963000",
      "content": "<p>an interesting idea<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc777e469f711c48ae77c01ff5632bc8b%2FSelection_999(4527).png?generation=1704510120822206&amp;alt=media\" alt=\"\"></p>",
      "votes": 4,
      "replies": []
    },
    {
      "id": 2568987,
      "author_name": "lhwcv",
      "author_url": "",
      "post_date": "2023-12-21T02:37:35.190000",
      "content": "<p>How long does it take for you to inference with Transformer, it seems that P100 without fp16 inference is very slow for Transformer, do you have any suggestions for this?</p>",
      "votes": 3,
      "replies": [
        {
          "id": 2568996,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2023-12-21T02:45:12.713000",
          "content": "<p>you can google for fast transformer. i use nextvit, which was used in kaggle rnsa breast mamnographs before. it takes 3to4 hr and can be speedup further by tensort rt to 3 hr</p>",
          "votes": 2,
          "replies": [
            {
              "id": 2569002,
              "author_name": "lhwcv",
              "author_url": "",
              "post_date": "2023-12-21T02:53:01.587000",
              "content": "<p>Thank you so much! </p>",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2569013,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-12-21T03:04:22.723000",
              "content": "<p>update: nextVIT-base can get LB0.682 3hr 20 min (just complete in few minutes along so i can get the timing in minutes).</p>\n<p>it uses 5xTTA + 3 axis (xy,yz,xz) in P100</p>",
              "votes": 2,
              "replies": []
            },
            {
              "id": 2593750,
              "author_name": "Rafael Javier Cruz",
              "author_url": "",
              "post_date": "2024-01-09T12:30:04.533000",
              "content": "<p>Seems that nextVIT  is a kind of detection model. Should I modify the configuration of Q1&amp;Q2 Net for segmentation task when using? Thanks!</p>",
              "votes": 0,
              "replies": []
            }
          ]
        },
        {
          "id": 2569004,
          "author_name": "slime",
          "author_url": "",
          "post_date": "2023-12-21T02:55:23.350000",
          "content": "<p>Try fp16 + 2xT4 + nn.DataParallel, for me it's faster than using single P100</p>\n<p>The model I choose is very slow [maxvit-small], <br>\nand scoring single checkpoint with xy/yz/xz + 5tta takes 8 hours… </p>\n<p>should try Next-ViT I think :D </p>",
          "votes": 0,
          "replies": [
            {
              "id": 2569034,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-12-21T03:23:30.103000",
              "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F2d5e11a186a047d2f13d10b613c413a7%2FSelection_999(4447).png?generation=1703128978938372&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F859e0cdb0b7ab614c159c4721cbc7623%2FSelection_999(4446).png?generation=1703128988887048&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F22550ca323f59dec3a1069decd0042db%2FSelection_999(4445).png?generation=1703129001328081&amp;alt=media\" alt=\"\"></p>\n<p>the fastest i can find</p>",
              "votes": 2,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2583079,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2024-01-02T03:59:54.163000",
      "content": "<p>did we just find the missing labels (for sparsely annotated ground truth labels)?<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F7d59d1157c40bcddd6013b488ad8adbc%2FSelection_999(4513).png?generation=1704167987606057&amp;alt=media\" alt=\"\"></p>",
      "votes": 4,
      "replies": [
        {
          "id": 2584002,
          "author_name": "Ol",
          "author_url": "",
          "post_date": "2024-01-02T16:20:37.963000",
          "content": "<p>GJ. I believe both sparse and dense have labeling issues (imho, cuz I`m not a doctor). Looked through and found even pretty big vessels missed. Thx for sharing.<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F621304%2F6ffbfd469eb507bb65297d3740dc3cba%2Fezgif-1-83993798fe_3.gif?generation=1704212371219171&amp;alt=media\" alt=\"\"></p>",
          "votes": 4,
          "replies": [
            {
              "id": 2584509,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2024-01-03T02:12:53.013000",
              "content": "<p>yes you are correct.</p>\n<p>an easy way to prove label error is to check train error after overfitting.</p>\n<ol>\n<li>slowly increase the network parameter (e.g. resnet18,34,50,101 …)</li>\n<li>train with small datsaet until overfit</li>\n</ol>\n<p>now if the train error cannot get to zero, waht can be the reason?</p>\n<ol>\n<li>not enough parameter (can be verify by increasing parameter)</li>\n<li>wrong label (can be verify by visualisation, i.e. draw the fp and miss)</li>\n</ol>",
              "votes": 3,
              "replies": []
            },
            {
              "id": 2585299,
              "author_name": "Ol",
              "author_url": "",
              "post_date": "2024-01-03T14:01:55.690000",
              "content": "<p>Exactly. Heavy backbones perform nearly identically as small ones</p>",
              "votes": 0,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2560936,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-12-14T06:01:20.913000",
      "content": "<p>just an idea:</p>\n<p>takes 2 nearby slices and generate vessels in between, both image and mask</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F4ee1367bb6b99b88ba2d31c938b15191%2FSelection_999(4402).png?generation=1702533674316871&amp;alt=media\" alt=\"\"></p>",
      "votes": 3,
      "replies": []
    },
    {
      "id": 2542002,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-11-29T01:59:04.420000",
      "content": "<p>i hope there is no bug, but mixing kidney 1 and 3 in train make LB (much worse)<br>\nreference: train with kidney 1 only: LB 0.757</p>\n<p>submit inference mode: add TTA 2xflip,3xrot90 only<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F71837a4178ef96b35c64d94684f90a50%2FSelection_999(4107).png?generation=1701223141188369&amp;alt=media\" alt=\"\"></p>\n<p>since there is no validation set, i just train to the same number of iterations from previous experiments.<br>\nthis may not be optimal (and hence not optimal lb)???</p>",
      "votes": 3,
      "replies": [
        {
          "id": 2542803,
          "author_name": "Chris Cross",
          "author_url": "",
          "post_date": "2023-11-29T14:34:10.877000",
          "content": "<p>I trained initially on kidney 1, by adding also kidney 3 improved my LB from 0.65 -&gt; 0.7. I do not know how to compare their resolutions but looks like they have pretty similar ones with 50um and 50.16um. The question would be if LB is also 50um and private something completly different </p>",
          "votes": 2,
          "replies": [
            {
              "id": 2542830,
              "author_name": "hengck23",
              "author_url": "",
              "post_date": "2023-11-29T14:48:01.933000",
              "content": "<p>Thanks, i will check again</p>",
              "votes": 0,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2539766,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-11-27T09:53:46.590000",
      "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F9815c2618468fcef78460941c6ec295b%2FSelection_999(4078).png?generation=1701078765760475&amp;alt=media\" alt=\"\"></p>\n<p>use 3d connected components to filter false positive errors<br>\n<a href=\"https://pypi.org/project/connected-components-3d/\" target=\"_blank\">https://pypi.org/project/connected-components-3d/</a></p>",
      "votes": 3,
      "replies": [
        {
          "id": 2585165,
          "author_name": "Aleksandr Kruchinin",
          "author_url": "",
          "post_date": "2024-01-03T12:05:58.397000",
          "content": "<p>In your notebook <a href=\"url\" target=\"_blank\">https://www.kaggle.com/code/hengck23/lb0-808-resnet50-2d-unet-xy-zy-zx-cc3d</a> you didn't use connected-components-3d:<br>\n<code>cc_threshold = -1</code><br>\nWhat were your results using cc3d?</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 2537011,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-11-24T16:50:32.557000",
      "content": "<p>useful:<br>\n<a href=\"https://github.com/JacobBumgarner/VesselVio/tree/main\" target=\"_blank\">https://github.com/JacobBumgarner/VesselVio/tree/main</a><br>\nVesselVio is an open-source application designed for the analysis and visualization of segmented vasculature datasets.</p>",
      "votes": 3,
      "replies": []
    },
    {
      "id": 2539668,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-11-27T08:53:42.917000",
      "content": "<p><a href=\"https://blog.research.google/2021/06/a-browsable-petascale-reconstruction-of.html\" target=\"_blank\">https://blog.research.google/2021/06/a-browsable-petascale-reconstruction-of.html</a><br>\nthis competition reminds me of the ancient google paper on flood filling network (FFN)</p>\n<pre><code>grow_mask = \n</code></pre>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fac63fb84563f14ea23aa7d6aa4f5f80a%2Fartificialne.jpg?generation=1701075207180931&amp;alt=media\" alt=\"\"><br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F8c6ac1934b1a49c53455c5d6e9059b22%2Fimage4.gif?generation=1701075219778016&amp;alt=media\" alt=\"\"><br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa301038a9c7d5635edc5ded3b75d674d%2FSelection_999(4077).png?generation=1701075493076458&amp;alt=media\" alt=\"\"><br>\nHigh-precision automated reconstruction of neurons with flood-filling networks<br>\n<a href=\"https://www.nature.com/articles/s41592-018-0049-4\" target=\"_blank\">https://www.nature.com/articles/s41592-018-0049-4</a><br>\n<a href=\"https://www.biorxiv.org/content/10.1101/200675v1.full\" target=\"_blank\">https://www.biorxiv.org/content/10.1101/200675v1.full</a><br>\n<a href=\"https://www.mpg.de/12130750/neural-networks-connectome\" target=\"_blank\">https://www.mpg.de/12130750/neural-networks-connectome</a><br>\n<a href=\"https://www.youtube.com/watch?v=46SksPonI8I\" target=\"_blank\">https://www.youtube.com/watch?v=46SksPonI8I</a></p>",
      "votes": 4,
      "replies": []
    },
    {
      "id": 2539259,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-11-26T22:40:58.537000",
      "content": "<p>GCO post processing:<br>\n(Global Constructive Optimization algorithm for generating smaller vessels)<br>\n[1] A Hybrid Approach to Full-Scale Reconstruction of Renal Arterial Network<br>\n<a href=\"https://arxiv.org/pdf/2303.01837.pdf\" target=\"_blank\">https://arxiv.org/pdf/2303.01837.pdf</a></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fd5798930fc9496d763a11c85748f2ed1%2FSelection_999(4060).png?generation=1701038372973913&amp;alt=media\" alt=\"\"></p>\n<p>(e) is results from your deep network. <br>\n(j) is the results of tree growing with GCO</p>",
      "votes": 4,
      "replies": []
    },
    {
      "id": 2539254,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-11-26T22:21:04.207000",
      "content": "<p>proposed solution:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F23665654c97f956393f163ab991e4bb6%2FSelection_999(4059).png?generation=1701037259106090&amp;alt=media\" alt=\"\"></p>",
      "votes": 4,
      "replies": [
        {
          "id": 2541716,
          "author_name": "dhinesh",
          "author_url": "",
          "post_date": "2023-11-28T18:04:49.917000",
          "content": "<p>are you planning to apply a patch based approach? or taking the whole image into account? will we be able to fit the whole image into memory with the kaggle infrastructure? </p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 2560267,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-12-13T12:29:28.990000",
      "content": "<p>useful<br>\n<a href=\"https://github.com/PengyiZhang/RegionGrowth\" target=\"_blank\">https://github.com/PengyiZhang/RegionGrowth</a><br>\n<a href=\"https://github.com/ylmzkaan/3DRegionGrowing\" target=\"_blank\">https://github.com/ylmzkaan/3DRegionGrowing</a><br>\n<a href=\"http://notmatthancock.github.io/2017/10/09/region-growing-wrapping-c.html\" target=\"_blank\">http://notmatthancock.github.io/2017/10/09/region-growing-wrapping-c.html</a></p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 2557787,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "2023-12-11T17:02:19.657000",
      "content": "<p>high resolution 2d/3d unet solution !!!</p>\n<p>demo notebook :<a href=\"https://www.kaggle.com/code/hengck23/2d-to-3d-unet-demo\" target=\"_blank\">https://www.kaggle.com/code/hengck23/2d-to-3d-unet-demo</a></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F1616c648d75df30b4c8ccceedb5eb8f6%2FSelection_999(4362).png?generation=1702314125458912&amp;alt=media\" alt=\"\"><br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F74e23e8d6c4b12748102003e0981e98a%2FSelection_999(4363).png?generation=1702314137160715&amp;alt=media\" alt=\"\"></p>",
      "votes": 1,
      "replies": [
        {
          "id": 2557825,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2023-12-11T17:36:11.030000",
          "content": "<p>how to properly design 3d solution.</p>\n<p>if you cannot fit a single 3d net work (because of memory GPU constraint), <br>\nyou properly need at least 2 net (of different hierarchy scale).</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Faba1ca9b68fe072afcf39f2eb9398793%2FSelection_999(4365).png?generation=1702316114508754&amp;alt=media\" alt=\"\"></p>",
          "votes": 3,
          "replies": []
        }
      ]
    },
    {
      "id": 2557712,
      "author_name": "dhinesh",
      "author_url": "",
      "post_date": "2023-12-11T16:16:41.053000",
      "content": "<p>posting it here for visibility Patch based 3D UNET + TF + TPU: <a href=\"https://www.kaggle.com/code/dhinkris/training-patch-based-3d-unet-tf-tpu\" target=\"_blank\">https://www.kaggle.com/code/dhinkris/training-patch-based-3d-unet-tf-tpu</a></p>",
      "votes": 1,
      "replies": [
        {
          "id": 2557807,
          "author_name": "hengck23",
          "author_url": "",
          "post_date": "2023-12-11T17:15:07.697000",
          "content": "<p>you should try these pretrain 3d unet<br>\n<a href=\"https://github.com/Tencent/MedicalNet\" target=\"_blank\">https://github.com/Tencent/MedicalNet</a></p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 2556787,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-11T01:36:50.620000",
      "content": "",
      "votes": 1,
      "replies": [
        {
          "id": 2556823,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-12-11T02:48:57.367000",
          "content": "",
          "votes": 0,
          "replies": [
            {
              "id": 2557162,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-12-11T09:00:58.290000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2557166,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-12-11T09:03:24.763000",
              "content": "",
              "votes": 1,
              "replies": []
            },
            {
              "id": 2557175,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-12-11T09:13:26.270000",
              "content": "",
              "votes": 1,
              "replies": []
            }
          ]
        },
        {
          "id": 2558273,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-12-12T03:28:12.807000",
          "content": "",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 2555747,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-10T06:38:29.373000",
      "content": "",
      "votes": 1,
      "replies": []
    },
    {
      "id": 2552494,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-07T14:01:56.467000",
      "content": "",
      "votes": 1,
      "replies": []
    },
    {
      "id": 2552429,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-07T12:58:51.760000",
      "content": "",
      "votes": 1,
      "replies": [
        {
          "id": 2552480,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-12-07T13:52:21.577000",
          "content": "",
          "votes": 0,
          "replies": [
            {
              "id": 2552505,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-12-07T14:12:46.793000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2558270,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-12-12T03:17:16.893000",
              "content": "",
              "votes": 0,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2550965,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-06T12:40:54.223000",
      "content": "",
      "votes": 1,
      "replies": []
    },
    {
      "id": 2541738,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-11-28T18:29:58.130000",
      "content": "",
      "votes": 1,
      "replies": [
        {
          "id": 2541739,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-11-28T18:32:52.837000",
          "content": "",
          "votes": 1,
          "replies": [
            {
              "id": 2541787,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-28T19:34:21.820000",
              "content": "",
              "votes": 3,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2558139,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-11T23:43:12.623000",
      "content": "",
      "votes": 2,
      "replies": []
    },
    {
      "id": 2556821,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-11T02:46:43.043000",
      "content": "",
      "votes": 2,
      "replies": [
        {
          "id": 2556824,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-12-11T02:49:32.700000",
          "content": "",
          "votes": 0,
          "replies": [
            {
              "id": 2557364,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-12-11T12:46:43.260000",
              "content": "",
              "votes": 0,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2554297,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-09T03:00:08.730000",
      "content": "",
      "votes": 2,
      "replies": []
    },
    {
      "id": 2550076,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-05T18:25:24.043000",
      "content": "",
      "votes": 2,
      "replies": [
        {
          "id": 2592806,
          "author_name": "",
          "author_url": "",
          "post_date": "2024-01-08T19:58:10.850000",
          "content": "",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 2549368,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-05T07:25:52.270000",
      "content": "",
      "votes": 2,
      "replies": [
        {
          "id": 2549549,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-12-05T10:47:54.530000",
          "content": "",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 2529617,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-11-18T11:39:22.003000",
      "content": "",
      "votes": 2,
      "replies": [
        {
          "id": 2530323,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-11-19T03:10:31.813000",
          "content": "",
          "votes": 1,
          "replies": []
        },
        {
          "id": 2536860,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-11-24T14:54:51.810000",
          "content": "",
          "votes": 1,
          "replies": [
            {
              "id": 2537142,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-24T19:36:07.547000",
              "content": "",
              "votes": 3,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2633595,
      "author_name": "",
      "author_url": "",
      "post_date": "2024-02-03T06:41:17.043000",
      "content": "",
      "votes": -3,
      "replies": [
        {
          "id": 2633598,
          "author_name": "",
          "author_url": "",
          "post_date": "2024-02-03T06:43:17.013000",
          "content": "",
          "votes": 0,
          "replies": [
            {
              "id": 2633610,
              "author_name": "",
              "author_url": "",
              "post_date": "2024-02-03T06:49:11.517000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2633884,
              "author_name": "",
              "author_url": "",
              "post_date": "2024-02-03T10:48:28.003000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2634157,
              "author_name": "",
              "author_url": "",
              "post_date": "2024-02-03T14:45:32.370000",
              "content": "",
              "votes": 1,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2593551,
      "author_name": "",
      "author_url": "",
      "post_date": "2024-01-09T09:32:03.907000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 2593851,
          "author_name": "",
          "author_url": "",
          "post_date": "2024-01-09T13:55:01.400000",
          "content": "",
          "votes": 1,
          "replies": []
        },
        {
          "id": 2597902,
          "author_name": "",
          "author_url": "",
          "post_date": "2024-01-12T02:24:08.660000",
          "content": "",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 2589430,
      "author_name": "",
      "author_url": "",
      "post_date": "2024-01-06T11:32:13.127000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 2589439,
          "author_name": "",
          "author_url": "",
          "post_date": "2024-01-06T11:34:03.607000",
          "content": "",
          "votes": 2,
          "replies": []
        },
        {
          "id": 2617103,
          "author_name": "",
          "author_url": "",
          "post_date": "2024-01-24T04:28:23.467000",
          "content": "",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 2561730,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-14T18:46:30.470000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 2562983,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-12-15T21:21:47.723000",
          "content": "",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 2560881,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-14T04:25:17.407000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 2560877,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-14T04:13:25.633000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 2554208,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-08T22:40:48.663000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 2552953,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-07T22:29:26.230000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 2560963,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-12-14T06:48:10.870000",
          "content": "",
          "votes": 1,
          "replies": [
            {
              "id": 2561148,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-12-14T10:05:23.090000",
              "content": "",
              "votes": 1,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2552796,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-07T18:26:38.183000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 2551626,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-06T20:38:45.620000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 2550388,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-06T02:26:48.760000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 2547019,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-03T05:19:37.347000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 2544843,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-12-01T05:59:54.433000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 2544844,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-12-01T06:03:09.037000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 2549241,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-12-05T05:22:25.130000",
          "content": "",
          "votes": 0,
          "replies": [
            {
              "id": 2549323,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-12-05T06:23:12.280000",
              "content": "",
              "votes": 1,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2542408,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-11-29T08:54:22.667000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 2540680,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-11-27T22:19:58.893000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 2540763,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-11-28T01:24:09.710000",
          "content": "",
          "votes": 1,
          "replies": [
            {
              "id": 2540778,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-28T02:13:59.883000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2540798,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-28T02:46:06.533000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2540828,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-28T03:33:50.043000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2540843,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-28T03:43:20.897000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2540878,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-28T04:26:24.610000",
              "content": "",
              "votes": 1,
              "replies": []
            },
            {
              "id": 2543598,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-30T07:55:10.693000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2543624,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-30T08:37:26.173000",
              "content": "",
              "votes": 2,
              "replies": []
            },
            {
              "id": 2543677,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-30T09:15:14.090000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2543693,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-30T09:50:00.730000",
              "content": "",
              "votes": 2,
              "replies": []
            },
            {
              "id": 2543748,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-30T10:31:51.090000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2543761,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-30T10:41:04.320000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2544833,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-12-01T05:36:58.317000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2553035,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-12-08T01:13:48.127000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2553040,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-12-08T01:21:11.780000",
              "content": "",
              "votes": 3,
              "replies": []
            },
            {
              "id": 2553057,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-12-08T01:46:38.500000",
              "content": "",
              "votes": 0,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2533956,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-11-22T10:10:48.757000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 2533988,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-11-22T10:30:15.330000",
          "content": "",
          "votes": 0,
          "replies": [
            {
              "id": 2534073,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-22T11:31:32.020000",
              "content": "",
              "votes": 1,
              "replies": []
            },
            {
              "id": 2534080,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-22T11:40:04.460000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2534096,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-22T12:00:26.403000",
              "content": "",
              "votes": 2,
              "replies": []
            },
            {
              "id": 2534101,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-22T12:06:23.303000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2534137,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-22T12:53:51.503000",
              "content": "",
              "votes": 1,
              "replies": []
            }
          ]
        },
        {
          "id": 2534122,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-11-22T12:39:42.670000",
          "content": "",
          "votes": 2,
          "replies": [
            {
              "id": 2540779,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-28T02:14:54.900000",
              "content": "",
              "votes": 2,
              "replies": []
            },
            {
              "id": 2541035,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-28T07:22:11.720000",
              "content": "",
              "votes": 1,
              "replies": []
            },
            {
              "id": 2541056,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-28T07:46:55.893000",
              "content": "",
              "votes": 4,
              "replies": []
            },
            {
              "id": 2541541,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-28T15:13:45.647000",
              "content": "",
              "votes": 0,
              "replies": []
            },
            {
              "id": 2544960,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-12-01T07:48:19.077000",
              "content": "",
              "votes": 2,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2529362,
      "author_name": "",
      "author_url": "",
      "post_date": "2023-11-18T06:53:51.610000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 2529512,
          "author_name": "",
          "author_url": "",
          "post_date": "2023-11-18T10:19:24.923000",
          "content": "",
          "votes": 1,
          "replies": [
            {
              "id": 2529518,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-18T10:29:22.383000",
              "content": "",
              "votes": 3,
              "replies": []
            },
            {
              "id": 2530344,
              "author_name": "",
              "author_url": "",
              "post_date": "2023-11-19T04:33:03.103000",
              "content": "",
              "votes": 1,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 2600229,
      "author_name": "",
      "author_url": "",
      "post_date": "2024-01-13T13:23:23.823000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 2600227,
      "author_name": "",
      "author_url": "",
      "post_date": "2024-01-13T13:21:49.707000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 2584348,
      "author_name": "",
      "author_url": "",
      "post_date": "2024-01-02T20:44:54.860000",
      "content": "",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "2529318": "more to come later ‎‏.... ㅤㅤㅤㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ㅤ ㅤㅤㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ‎‏\n\n🦟 nov-21:\n- a simple baseline notebook to check reading of images and model inferenceㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ㅤ\nhttps://www.kaggle.com/code/hengck23/lb0-534-baseline-simple-unet-seresnext26d-32x4\n\n🦟 nov-28:\n- advanced baseline with more augmentation and 3d post-processing ㅤㅤㅤ‎‏‏‎ ‎‏‏‎ ‎‏‎ ‎‏‏‎ ㅤ\nhttps://www.kaggle.com/code/hengck23/lb0-808-resnet50-cc3d2d-unet-xy-zy-zx-cc3d\n- this concluded my one-week feasibility study:\n   - estimated upperbound: lb 0.93\n   - identified key problems: miss (broken large vessels, missing small vessels), fp (noise, sometimes out of kidney volume)\n   - solutions: multiscale and 3d model (i think 3d transformer/hybrid/cnn should work well, need long range attention)\n\n\n\ni am obviously? overfitting the public LB data ...\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F9d2a1890f2fb71476d7f68beb7c6bbfe%2FSelection_999(4173).png?generation=1701417195707587&alt=media)\n\n\n---\n\nhere is a visualization of the target vessel we are segmenting:\n ![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fb10649f7ef86cac4a3a7fd5b8d72126d%2FSelection_999(4053).png?generation=1700993033873139&alt=media)\n\nobviously, 3d segmentation will get better results. you probably can't just rely on deep net, and need some very smart 3d image post processing to win.\n",
    "2583472": "i realize something important.\ni checked the fast surface dice loss and i think we can directly optimize this loss in gradient descent!\n\ni) use 3 channel input and predict 3 channel output\nii) refer to the fast surface dice code by @junkoda . you can apply same marching cube algorithm (2x2x2) to compute soft surface dice loss\n\ninstead of unfold 3d conv with 256 kernels may be slightly faster\n\n---\n\nthis may be important because i realize the reason for missing small vessel is annotation error (even for the 100% dense label, not all smallest vessel are annotated). this causes the following\n1. surface dice metric is fluctuating up and down during the training iteration\n2. 3d, 2.5d results are poorer than pure 2d\n3. confidence for smallest vessel are the worst (because of inconsistent label). At first i thought is this because of the small area (since deep learning minimize BCE loss for largest area first), but then i think inconsistent label has a larger effect.\n\n",
    "2537053": "kidney mask dataset\nhttps://www.kaggle.com/datasets/hengck23/blood-vessel-segmentation-kidney-mask\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fbba65b5d04a0a7dbf4a797937bcbf624%2F0862.png?generation=1700847526884113&alt=media) ![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F87a1a0d4dd0605c9b9a4edfe22e1edea%2F0704.png?generation=1700847547606309&alt=media)",
    "2568510": "20-dec:\n\nrecepie for LB 0.848\n- use transformer  (e.g. nextVIT base)\n- use train =  kidney1/dense + kidney3/dense\n- use validate = kidney2 \n- just normal unet2d (with a additional encoder layer for H,W and H/2,w/2)\n- infer with the usual xy,zx,zy + 5 TTA\n\ndetails at  the other posts below ....\n\n---\n\ni am surprised that it can get LB 0.862 by training for long iterations (but CV does not reflect the change ... maybe because of wrong annotation on kidney2 and the segmentation sparsity (i.e. incomplete label)\n\ni.e. there is probably no reliable local validation set in this competition",
    "2565193": "correct way to do validation:\n- just validate on kidney3 is not enough.\n- another test (just test only, don't use it to true hyper-parameters) on kidney2 is probably more accurate\n- low fp seems to be the key for good LB score. for me fp=0.05 is optimal for LB.\n- transformer seems to be a \"much\" better model (maybe more rubust against salt noise,etc see segformer paper)\n\n\nNOTE: \n- all models below have local CV of 0.90 for kidney3 (dense). But when it comes to kidney2, results are different, as hsown in the table below.\n- all models are trained on kidney1 (dense) only\n- top upper half of kidney2 has annotation error (shift) ... see anotehr post below\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F1c0c51894ac5dfa54adf769e3819685a%2FSelection_999(4439).png?generation=1702839533752331&alt=media)",
    "2556920": "https://www.kaggle.com/code/junkoda/fast-surface-dice-computation\n\nbased on the fast surface dice computation by @junkoda, i did an extensive study on the effect of threshold and the local lb metric. For each model after the training epoch, i made measurements.\n\nconclusion:\n- TTA and TTA+xy,zx,zy always improve surface-dice, even if the model is under or over-fitted.\n- there are two optimum:\n  - early stopping (high threshold >0.5)\n  - just before over fitted (0.2 to 0.3 threshold)\n- BCE loss seems not suitable. both train and validation loss are decreasing steadily. But surface-dice are moving up and down. One may want to take a look at e.g. edge loss, Hausdorff Distance loss, etc\n\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F16d9246986625481df350c42a67d8e98%2FSelection_999(4341).png?generation=1702270136436198&alt=media)",
    "2555308": "example of simple 3d flood fill\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F56ca19ca89d0f127a7e210ec6700bc3e%2FPeek%202023-12-10%2004-15.gif?generation=1702153952547969&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa4fc9bf7de3d501b6aa9b03373731039%2FSelection_999(4312).png?generation=1702153942671435&alt=media)",
    "2543888": "IMPORTANT!!!!!\nThis is the black magic and the trick to winning!!!!\n\nresults of 3d flood fill with seed = one pixel\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fdc2eabf5b33f2f89c160fdeb94532138%2FSelection_999(4168).png?generation=1701347716526450&alt=media)",
    "2543380": "wrong annotation !!!!!\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Ff8f783cd4318a8853e5d628435131879%2FSelection_999(4156).png?generation=1701314688469717&alt=media)",
    "2621747": "my estimate at one week before the competition:\n1. for a good ML/deep learning practitioner:  performance of single model : >= public lb 0.865\n2. experienced practitioner:  performance of single model : >=  public lb 0.875 ~ 0.880\n(e.g. better model, augmentation, pre/post processing, hyperprameters, learning/meta framework)\n3. emsemble : <= ~0.01+\n4. shakeup (i.e. std in score under various test data, if available) at 50um per voxel <= 0.04\n5. shakeup (i.e. transfer from high resolution to low resolution) at 63um per voxel <= 0.07\n\n\n----\n\nfinal top-1 private leaderboard: private lb  0.890 to 0.880\ngold cut-off : private lb  0.875 to 0.880",
    "2589018": "wrong strategy?\n```\ni have been trying to detect the small vessels to improve my LB score becuase it is stated in the paper that this is one of the problem.\nBut then i realize that this may not be a good strategy?\n\ni use train= kidney1 dense + kidney3 dense\nvalidation= kidney2 sparse (from slice >= 900 to avoid annotation shift error)\n\ni first note the recent popular public kernel based on seresnext50_32x4d 2dunet which can easily object lb 0.859. seresnext50_32x4d has imagenet top1 in range of ~0.79. My experiments shows that while seresnext50_32x4d 2dunet has low hit rate (>0.83), it has very low fp rate (~0.111) as well. i am surprise that it can get 0.864 lb single model.\n\ni have been using nextVIT base transformer, imagenet top1 ~0.82, to get lb 0.863. It has very high hitrate (>0.93) and low fp rate (~0.183).\n\nit turns out that since lb is based on surface pixels, small vessel has less surface (and contribute little to lb score) !!!\ne.g. for kidney3 sparse (85% annotation) has surface dice 0.98 compared to kidney3 dense\n\nin other words, it is wrong choice of metric if the host interest is to detect small vessel\n```",
    "2554978": "trick to get lb 0.835\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F7f8c7dca190065f9d3b98f880ef7cd21%2FSelection_999(4310).png?generation=1702135804600547&alt=media)",
    "2552053": "lb0.829 ...\n\nnormalisation is the key\n\n```\ndef norm_by_percentile(volume, low=10, high=99.8, alpha=0.01):\n\txmin = np.percentile(volume,low)\n\txmax = np.percentile(volume,high)\n\tx = (volume-xmin)/(xmax-xmin)\n\tif 1:\n\t\tx[x>1]=(x[x>1]-1)*alpha +1\n\t\tx[x<0]=(x[x<0])*alpha\n\t#x = np.clip(x,0,1)\n\treturn x\n\n```\n\nnormalised by volume/subvolume, not image\n",
    "2541221": "Yellow: MISS\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F88f268f9b529a2f68e9e111d53662121%2FPeek%202023-11-28%2017-51.gif?generation=1701165525275937&alt=media)\nGreen: FP\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F5cc5e3d3dcdca56155b2f4fa5b1ed96e%2FPeek%202023-11-28%2017-53.gif?generation=1701165506289118&alt=media)\nRed: HIT\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F57447a54514accc6fd1d3b1cfdebcef6%2FPeek%202023-11-28%2017-55.gif?generation=1701165488221412&alt=media)\nALL\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F65417fbd421b7741d417ae9ac74ee5ab%2FPeek%202023-11-28%2017-56.gif?generation=1701165472038050&alt=media)",
    "2538299": "beware !!!\nit is not any vessel, but those from \" arterial vascular tree \"\n\ndata page: \"kidney_1_dense - The whole of a right kidney at 50um resolution. The entire 3D arterial vascular tree ... \"\n\n---\n\n\nhere you can see that not all vessel are annotated (kidney dense 1)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F36a823d5c809fe74c99f774a7cfbd507%2FSelection_999(4051).png?generation=1700964826477601&alt=media)![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F0a6889dcdc38de11f00ae61ae74b68f1%2FSelection_999(4050).png?generation=1700964841203613&alt=media)\n\n\ni was wondering do we need to separate arterial and venous?\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F622be63c31bba65e4de644cad69ae98f%2FSelection_999(4052).png?generation=1700965019077924&alt=media)\n",
    "2537534": "**very bad news !!!**\ni try to do some probing.\n\npublic lb set: kidney 5\nprivate lb set: kidney 6\n\ndon't overfit ... there could be shakeup. worst still, what if kidney 5 and 6 are of different um resolution???\n---\n\nyou may want to verify yourself ( just in case my code is buggy)",
    "2612593": "experiments on scale ... yet another proof that it is FP that matters ...\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F689d2443d12433d50098972a223f2516%2FSelection_999(4657).png?generation=1705844574982811&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F97a9b38d338e4373bd8c7463fcaca5bc%2FSelection_999(4658).png?generation=1705844565213916&alt=media)",
    "2589059": "an interesting idea\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc777e469f711c48ae77c01ff5632bc8b%2FSelection_999(4527).png?generation=1704510120822206&alt=media)",
    "2568987": "How long does it take for you to inference with Transformer, it seems that P100 without fp16 inference is very slow for Transformer, do you have any suggestions for this?",
    "2583079": "did we just find the missing labels (for sparsely annotated ground truth labels)?\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F7d59d1157c40bcddd6013b488ad8adbc%2FSelection_999(4513).png?generation=1704167987606057&alt=media)\n",
    "2560936": "just an idea:\n\ntakes 2 nearby slices and generate vessels in between, both image and mask\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F4ee1367bb6b99b88ba2d31c938b15191%2FSelection_999(4402).png?generation=1702533674316871&alt=media)",
    "2542002": "i hope there is no bug, but mixing kidney 1 and 3 in train make LB (much worse)\nreference: train with kidney 1 only: LB 0.757\n\nsubmit inference mode: add TTA 2xflip,3xrot90 only\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F71837a4178ef96b35c64d94684f90a50%2FSelection_999(4107).png?generation=1701223141188369&alt=media)\n\nsince there is no validation set, i just train to the same number of iterations from previous experiments.\nthis may not be optimal (and hence not optimal lb)???",
    "2539766": "![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F9815c2618468fcef78460941c6ec295b%2FSelection_999(4078).png?generation=1701078765760475&alt=media)\n\nuse 3d connected components to filter false positive errors\nhttps://pypi.org/project/connected-components-3d/",
    "2537011": "useful:\nhttps://github.com/JacobBumgarner/VesselVio/tree/main\nVesselVio is an open-source application designed for the analysis and visualization of segmented vasculature datasets.",
    "2539668": "\nhttps://blog.research.google/2021/06/a-browsable-petascale-reconstruction-of.html\nthis competition reminds me of the ancient google paper on flood filling network (FFN)\n\n```\ngrow_mask = FFN(input, mask)\n\n```\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fac63fb84563f14ea23aa7d6aa4f5f80a%2Fartificialne.jpg?generation=1701075207180931&alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F8c6ac1934b1a49c53455c5d6e9059b22%2Fimage4.gif?generation=1701075219778016&alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa301038a9c7d5635edc5ded3b75d674d%2FSelection_999(4077).png?generation=1701075493076458&alt=media)\n\n\n\nHigh-precision automated reconstruction of neurons with flood-filling networks\nhttps://www.nature.com/articles/s41592-018-0049-4\nhttps://www.biorxiv.org/content/10.1101/200675v1.full\n\n\nhttps://www.mpg.de/12130750/neural-networks-connectome\nhttps://www.youtube.com/watch?v=46SksPonI8I",
    "2539259": "GCO post processing:\n(Global Constructive Optimization algorithm for generating smaller vessels)\n[1] A Hybrid Approach to Full-Scale Reconstruction of Renal Arterial Network\nhttps://arxiv.org/pdf/2303.01837.pdf\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fd5798930fc9496d763a11c85748f2ed1%2FSelection_999(4060).png?generation=1701038372973913&alt=media)\n\n(e) is results from your deep network. \n(j) is the results of tree growing with GCO",
    "2539254": "proposed solution:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F23665654c97f956393f163ab991e4bb6%2FSelection_999(4059).png?generation=1701037259106090&alt=media)",
    "2560267": "useful\nhttps://github.com/PengyiZhang/RegionGrowth\nhttps://github.com/ylmzkaan/3DRegionGrowing\nhttp://notmatthancock.github.io/2017/10/09/region-growing-wrapping-c.html",
    "2557787": "high resolution 2d/3d unet solution !!!\n\ndemo notebook :https://www.kaggle.com/code/hengck23/2d-to-3d-unet-demo\n\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F1616c648d75df30b4c8ccceedb5eb8f6%2FSelection_999(4362).png?generation=1702314125458912&alt=media)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F74e23e8d6c4b12748102003e0981e98a%2FSelection_999(4363).png?generation=1702314137160715&alt=media)\n\n",
    "2557712": "posting it here for visibility Patch based 3D UNET + TF + TPU: https://www.kaggle.com/code/dhinkris/training-patch-based-3d-unet-tf-tpu",
    "2556787": "@hengck23 how do you stack the 2Dslice to 3D in kaggle inference , i get memory overflow error ",
    "2555747": "discrepancies happens and takes me several \"wasting\" hours to debug\nthis affects how we set the threshold ...\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Ff40d26a2fd0ef81938725dd053bf9dfe%2FSelection_999(4317).png?generation=1702190263074677&alt=media)",
    "2552494": "trying augmentation\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F711961849f08998cf722c6a864bfc5b7%2FPeek%202023-12-07%2022-00.gif?generation=1701957714420766&alt=media)",
    "2552429": "i think this is a good pretrain/self-supervised or aux loss:\n\n```\ninput vol(d,h,w)\npredict mask(d,h,w)\naux target vol(d+delta,h,w)\n\npredict how the volume will extrapolate\n(this requires the model to \"understand vessel\" and grow them)\n\n```",
    "2550965": "quick experiments for kidney3 sparse as train:\n\nresnext26d- single class\nthreshold=0.25\nTTA=flip+rot90\n\nsurface dice for kidney3 sparse/dense = 0.98 \n\n---\n\ntrain =  kidney1 dense \nvalid = kidney3 dense\nLB = 0.747\n\n---\n\ntrain =  kidney1 dense + kidney3 sparse \nvalid = kidney3 dense\nLB = 0.764\n\nno parameter tuning, etc\n",
    "2541738": "What does \"model trained with multiview\" mean? Does it mean that supppose you have a simple 2d unet model and 3d voxel input, and during training you randomly choose which plane (XY, YZ, XZ) to take from that voxel and take the according mask?\n\nDuring inference we can use 3 tta (take 3 different views) for the same pixel, am I correct?",
    "2558139": "[1] Memory transformers for full context and high-resolution 3D Medical Segmentation\nhttps://arxiv.org/pdf/2210.05313.pdf\n\n\"Combined, they allow full attention over high resolution images, e.g. 512 x 512 x 256 voxels and above. Experiments on the BCV image segmentation dataset shows better performances than state-of-the-art CNN and transformer baselines, ....\"\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F81a6490b732e022cd6f0678f6c602a51%2FSelection_999(4370).png?generation=1702338190685756&alt=media)\n",
    "2556821": "why you need self-supervised learning\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F16ab1afd3a595132b6488e6dab19dc1e%2FSelection_999(4338).png?generation=1702262797754051&alt=media)\n\n_50um_LADAF-2020-31_kidney : 1644x1108,2141\n",
    "2554297": "if the holding cylinder is the same, this gives away the size and voxel resolution of the object\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F8f786a337a36b871e100035520f0e34f%2FSelection_999(4289).png?generation=1702090766447526&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F396b2c54d8a93cd1aab3f9ca168f6468%2FSelection_999(4328).png?generation=1702258596888327&alt=media)",
    "2550076": "this is why the vessel are detected as broken\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fc82f66f71452b66518ef361f8c2a58ca%2FSelection_999(4258).png?generation=1701800721703848&alt=media)",
    "2549368": "Thank you very much for your sharing, based on your methods and information, here are the experimental data on my side. \nBy the way, how did you generate the kidney's mask? I haven't used it yet.![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F856355%2F2993476c17278115668affe8cee63e35%2F5101701761042_.pic.jpg?generation=1701761134544839&alt=media)",
    "2529617": "![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa452e22583e2afc291b2842af7cebc3a%2FSelection_999(3956).png?generation=1700307537301570&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F493812cfdecb2d890397597413ff1cea%2FSelection_999(3957).png?generation=1700307550363042&alt=media)\n\nwhat solution to expect",
    "2633595": "OOPS!!!!\n\nunexpected shift in reszing ....\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F4e5901add416e6912b114e17c9296e49%2FPeek%202024-02-03%2014-37.gif?generation=1706942464276991&alt=media)",
    "2593551": "45 degree TTA \n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fcbda874375758ee05f1cd451ef85a8cd%2FSelection_999(4539).png?generation=1704792722382609&alt=media)",
    "2589430": "just an initial idea to handle both public and private data. Not tested yet and not sure if it would actually work ????\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F6f061606de1cb79ad24a549ccd48af7c%2FSelection_999(4531).png?generation=1704540731627867&alt=media)",
    "2561730": "an interesing work:   Artery-Vein Separation\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F9e292f946042db3cbad2ff224193d813%2FSelection_999(4407).png?generation=1702579578310237&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F27b9b2806e1ff3034714c2f434c08037%2FSelection_999(4408).png?generation=1702579588732159&alt=media)",
    "2560881": "https://github.com/antonioguj/bronchinet\nAirway segmentation from chest CTs using deep Convolutional Neural Networks\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fd498a7572abcc58b241a6b738b1f7aa0%2FSelection_999(4399).png?generation=1702527914761421&alt=media)\n",
    "2560877": "Hip-CT lung vasculature and microstructure youtube presentation by Dr Claire Walsh:\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F9cbb48254dd3274c7bcce5d6021aeff1%2FSelection_999(4398).png?generation=1702527034572289&alt=media)\n\n ![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F7b75a9469be2d16c01efc56f64e77f81%2FSelection_999(4396).png?generation=1702527079702177&alt=media)\nhttps://www.youtube.com/watch?v=ehDRFzvwGNY\nhttps://profiles.ucl.ac.uk/59686-joseph-jacob/publications?favouritesFirst=true&perPage=25&sort=dateDesc&startFrom=25\n\nit would be good if unlabelled data could be used!",
    "2554208": "there is one method that one can try: supervoxel (3d superpixel) + deep net, since the ground truth is build with 3d floodfill\n\nkeywords:Mask2Former, kMaX-DeepLab,: Differentiable SLIC, superpixel-transformer\n \n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F660e76a4b215965a75228c7875066679%2FSelection_999(4284).png?generation=1702075080554884&alt=media)",
    "2552953": "train log\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fa93a20f8f7fa582a2ff6ed97d700ec43%2FSelection_999(4279).png?generation=1702021715695993&alt=media)",
    "2552796": "my next plan:\n\n2d axial unet to 3d axial transfomer\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2F398b1610236d7dc040c9984face43945%2FSelection_999(4272).png?generation=1701973596052591&alt=media)",
    "2551626": "i wonder does it make sense to download other organs and treat them as negative images?",
    "2550388": "@hengck23 I am a bit confused how many 2D slices make a 3D volume?",
    "2547019": "new BM18 results:\nThe HOAHub uses the High-Throughput Large Field Phase-Contrast Tomography Beamline BM18.\nhttps://mecheng.ucl.ac.uk/HOAHub/",
    "2544843": "@hengck23  I trained on kidney_1_dense (original resolution) 5 fold cv and tested on kidney_3_dense (original resolution)using the competition metric ...\nmy CV was 0.82\nbut my LB is 0.002. \nDo you have any idea what might be the problem?",
    "2542408": "@hengck23 do you use binary image to train or convert it to RGB for training?\n",
    "2540680": "@hengck23 What is the metric you use for validation?",
    "2533956": "Tips:\n\nhere is prediction results for prob<0.25.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F113660%2Fd72f62d167530e54acfc4cf68dbb08db%2FSelection_999(4019).png?generation=1700647828309499&alt=media)",
    "2529362": "were you able to differentiate between dense and sparse annotation. what do you think will be best to use",
    "2600229": "",
    "2600227": "",
    "2584348": ""
  }
}