{
  "id": 452591,
  "title": "51 Place Solution for the RSNA 2023 Abdominal Trauma Detection",
  "url": "/competitions/rsna-2023-abdominal-trauma-detection/discussion/452591",
  "author_name": "MaxChen303",
  "post_date": "2023-11-02T17:08:45.598000",
  "votes": 2,
  "comment_count": 0,
  "views": 0,
  "content": "<p>This solution only focused on solid organ classification because I didn't find a good solution for the bowel and extravasation. In the final submission, the bowel and extravasation predictions are the same as the mean baseline.</p>\n<h1>Overview of the Approach</h1>\n<ul>\n<li>2D UNet Segmentation (<a href=\"https://github.com/qubvel/segmentation_models.pytorch\" target=\"_blank\">Pytorch Segmentation Model</a> with efficientnet-b0) + Bbox crop</li>\n<li>2.5D CNN classification (timm EfficientNetV2-s + FC head)</li>\n<li>4-fold Ensemble</li>\n</ul>\n<h1>Details of the submission</h1>\n<h2>2D UNet Segmentation</h2>\n<p>A 2D UNet is trained on the front view (coronal) slices from the given segmentations. This is because my main goal is to roughly crop the solid organs from the full height CT scans to avoid extra dataloading and remove noise for classification training.</p>\n<p>The model is trained on 256x256 resolution because the pixel-wise accuracy is not critial for getting the bounding box, which makes the training very fast (&lt;1hr).</p>\n<h3>GT vs predicted mask:</h3>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F3964695%2F07ac8b5d37ea68487242c15b67c549f3%2FScreenshot%20from%202023-11-02%2011-37-46.png?generation=1698943423363415&amp;alt=media\"></p>\n<p>The bbox of each slice is retrieved from the segmentation mask. The solid organs bbox of entire CT scan can be found from the union of the slice bboxes with a small margin. </p>\n<p>All the solid organ volumes are then cropped from the full-height scans and saved as 3D arrays (.npy) for classification training and inference.</p>\n<h2>2.5D CNN Classification</h2>\n<p>A 2.5D CNN Classification model is trained on the cropped solid organ volume.<br>\nEach volume is resized and augmented by the data loader. (Some sample  have a large amount of scans(tensor height), it is faster to do the interpolation before augmentations). </p>\n<h3>DataLoader Example (Batch x 160 x 352 x 352):</h3>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F3964695%2F4b5f19a8b6cb0943b748898573e777df%2FScreenshot%20from%202023-11-02%2011-38-15.png?generation=1698943501191093&amp;alt=media\" alt=\"\"></p>\n<p>The model is trained at the series level and the final prediction for each patient is calculated from the mean of the series predictions.</p>\n<h1>Sources</h1>\n<p><a href=\"https://github.com/qubvel/segmentation_models.pytorch\" target=\"_blank\">Pytorch Segmentation Model</a> </p>",
  "messages": [
    {
      "id": 2509978,
      "postDate": "2023-11-02T17:08:45.600Z",
      "content": "<p>This solution only focused on solid organ classification because I didn't find a good solution for the bowel and extravasation. In the final submission, the bowel and extravasation predictions are the same as the mean baseline.</p>\n<h1>Overview of the Approach</h1>\n<ul>\n<li>2D UNet Segmentation (<a href=\"https://github.com/qubvel/segmentation_models.pytorch\" target=\"_blank\">Pytorch Segmentation Model</a> with efficientnet-b0) + Bbox crop</li>\n<li>2.5D CNN classification (timm EfficientNetV2-s + FC head)</li>\n<li>4-fold Ensemble</li>\n</ul>\n<h1>Details of the submission</h1>\n<h2>2D UNet Segmentation</h2>\n<p>A 2D UNet is trained on the front view (coronal) slices from the given segmentations. This is because my main goal is to roughly crop the solid organs from the full height CT scans to avoid extra dataloading and remove noise for classification training.</p>\n<p>The model is trained on 256x256 resolution because the pixel-wise accuracy is not critial for getting the bounding box, which makes the training very fast (&lt;1hr).</p>\n<h3>GT vs predicted mask:</h3>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F3964695%2F07ac8b5d37ea68487242c15b67c549f3%2FScreenshot%20from%202023-11-02%2011-37-46.png?generation=1698943423363415&amp;alt=media\"></p>\n<p>The bbox of each slice is retrieved from the segmentation mask. The solid organs bbox of entire CT scan can be found from the union of the slice bboxes with a small margin. </p>\n<p>All the solid organ volumes are then cropped from the full-height scans and saved as 3D arrays (.npy) for classification training and inference.</p>\n<h2>2.5D CNN Classification</h2>\n<p>A 2.5D CNN Classification model is trained on the cropped solid organ volume.<br>\nEach volume is resized and augmented by the data loader. (Some sample  have a large amount of scans(tensor height), it is faster to do the interpolation before augmentations). </p>\n<h3>DataLoader Example (Batch x 160 x 352 x 352):</h3>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F3964695%2F4b5f19a8b6cb0943b748898573e777df%2FScreenshot%20from%202023-11-02%2011-38-15.png?generation=1698943501191093&amp;alt=media\" alt=\"\"></p>\n<p>The model is trained at the series level and the final prediction for each patient is calculated from the mean of the series predictions.</p>\n<h1>Sources</h1>\n<p><a href=\"https://github.com/qubvel/segmentation_models.pytorch\" target=\"_blank\">Pytorch Segmentation Model</a> </p>",
      "rawMarkdown": "This solution only focused on solid organ classification because I didn't find a good solution for the bowel and extravasation. In the final submission, the bowel and extravasation predictions are the same as the mean baseline.\n\n# Overview of the Approach\n- 2D UNet Segmentation ([Pytorch Segmentation Model](https://github.com/qubvel/segmentation_models.pytorch) with efficientnet-b0) + Bbox crop\n- 2.5D CNN classification (timm EfficientNetV2-s + FC head)\n- 4-fold Ensemble\n\n#Details of the submission\n## 2D UNet Segmentation\nA 2D UNet is trained on the front view (coronal) slices from the given segmentations. This is because my main goal is to roughly crop the solid organs from the full height CT scans to avoid extra dataloading and remove noise for classification training.\n\nThe model is trained on 256x256 resolution because the pixel-wise accuracy is not critial for getting the bounding box, which makes the training very fast (<1hr).\n### GT vs predicted mask:\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F3964695%2F07ac8b5d37ea68487242c15b67c549f3%2FScreenshot%20from%202023-11-02%2011-37-46.png?generation=1698943423363415&alt=media\" width=\"640\">\n\nThe bbox of each slice is retrieved from the segmentation mask. The solid organs bbox of entire CT scan can be found from the union of the slice bboxes with a small margin. \n\nAll the solid organ volumes are then cropped from the full-height scans and saved as 3D arrays (.npy) for classification training and inference.\n\n\n## 2.5D CNN Classification\nA 2.5D CNN Classification model is trained on the cropped solid organ volume.\nEach volume is resized and augmented by the data loader. (Some sample  have a large amount of scans(tensor height), it is faster to do the interpolation before augmentations). \n### DataLoader Example (Batch x 160 x 352 x 352):\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F3964695%2F4b5f19a8b6cb0943b748898573e777df%2FScreenshot%20from%202023-11-02%2011-38-15.png?generation=1698943501191093&alt=media)\n\nThe model is trained at the series level and the final prediction for each patient is calculated from the mean of the series predictions.\n\n# Sources\n[Pytorch Segmentation Model](https://github.com/qubvel/segmentation_models.pytorch) \n\n",
      "votes": 2
    }
  ],
  "comments": [],
  "raw_markdown_by_id": {
    "2509978": "This solution only focused on solid organ classification because I didn't find a good solution for the bowel and extravasation. In the final submission, the bowel and extravasation predictions are the same as the mean baseline.\n\n# Overview of the Approach\n- 2D UNet Segmentation ([Pytorch Segmentation Model](https://github.com/qubvel/segmentation_models.pytorch) with efficientnet-b0) + Bbox crop\n- 2.5D CNN classification (timm EfficientNetV2-s + FC head)\n- 4-fold Ensemble\n\n#Details of the submission\n## 2D UNet Segmentation\nA 2D UNet is trained on the front view (coronal) slices from the given segmentations. This is because my main goal is to roughly crop the solid organs from the full height CT scans to avoid extra dataloading and remove noise for classification training.\n\nThe model is trained on 256x256 resolution because the pixel-wise accuracy is not critial for getting the bounding box, which makes the training very fast (<1hr).\n### GT vs predicted mask:\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F3964695%2F07ac8b5d37ea68487242c15b67c549f3%2FScreenshot%20from%202023-11-02%2011-37-46.png?generation=1698943423363415&alt=media\" width=\"640\">\n\nThe bbox of each slice is retrieved from the segmentation mask. The solid organs bbox of entire CT scan can be found from the union of the slice bboxes with a small margin. \n\nAll the solid organ volumes are then cropped from the full-height scans and saved as 3D arrays (.npy) for classification training and inference.\n\n\n## 2.5D CNN Classification\nA 2.5D CNN Classification model is trained on the cropped solid organ volume.\nEach volume is resized and augmented by the data loader. (Some sample  have a large amount of scans(tensor height), it is faster to do the interpolation before augmentations). \n### DataLoader Example (Batch x 160 x 352 x 352):\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F3964695%2F4b5f19a8b6cb0943b748898573e777df%2FScreenshot%20from%202023-11-02%2011-38-15.png?generation=1698943501191093&alt=media)\n\nThe model is trained at the series level and the final prediction for each patient is calculated from the mean of the series predictions.\n\n# Sources\n[Pytorch Segmentation Model](https://github.com/qubvel/segmentation_models.pytorch) \n\n"
  }
}