{
  "id": 540001,
  "title": "12th place solution",
  "url": "/competitions/rsna-2024-lumbar-spine-degenerative-classification/writeups/no-war-12th-place-solution",
  "author_name": "",
  "post_date": "2024-10-12T02:22:44.780Z",
  "votes": 11,
  "comment_count": 2,
  "views": 0,
  "content": "<p>First of all, I would like to sincerely thank the organizers for hosting this competition. I have learned a lot from it. </p>\n<p>My approach is very simple and follows a two-stage method. In the first stage, a point detection model is used to extract the ROI based on the predicted points. In the second stage, classification is performed on the ROI.</p>\n<p><strong>First stage</strong></p>\n<p>In fact, I used a separate point detection model for each type of disease. It is important to note that for subarticular conditions, i can locate the corresponding vertebrae from the spinal points. Therefore, the point model for subarticular only involves <strong>localization on the x and y axes</strong>, which helps differentiate between left and right during the subsequent classification.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8171978%2F2bf2ecaf105d3d4d3fa1a96faa16294a%2F2567a20b32031caa71592fee2d9ccae.png?generation=1728699581616930&amp;alt=media\" alt=\"\"></p>\n<p><strong>Second stage</strong></p>\n<p>Since the first stage involves differentiating between left and right, there is no need for the model to perform this distinction in the second stage. I trained a separate classification model for each disease (2.5D CNN + GRU + AttentionHead), and developed a combined multi-modal model for the three diseases (3<em>2.5D CNN + GRU + 3</em>AttentionHead). The final results are derived from the weighted average of these models. It is noteworthy that, in order to simulate potential inaccuracies in point localization from the first stage, I introduced <strong>random jitter</strong> within a specified range during the training of the second stage. This approach allowed the ROI to shift slightly within a confined area, thereby enhancing my performance. Furthermore, to address the issue of label distribution imbalance, I implemented oversampling of the data from the severe category. I used ResNet50 and SE-ResNeXt50 as the backbones for my models.</p>\n<p><strong>Post-process</strong></p>\n<p>I multiplied all the probabilities by a temperature value of 1.3.</p>\n<p>Finally, I reviewed the approaches shared by everyone, and I found that some of my methods are also included among them. I won't elaborate further here. Thank you all, and I look forward to seeing you in the next competition!</p>",
  "messages": [
    {
      "id": "3015102",
      "postDate": "10/12/2024 02:21:48",
      "content": "<p>First of all, I would like to sincerely thank the organizers for hosting this competition. I have learned a lot from it. </p>\n<p>My approach is very simple and follows a two-stage method. In the first stage, a point detection model is used to extract the ROI based on the predicted points. In the second stage, classification is performed on the ROI.</p>\n<p><strong>First stage</strong></p>\n<p>In fact, I used a separate point detection model for each type of disease. It is important to note that for subarticular conditions, i can locate the corresponding vertebrae from the spinal points. Therefore, the point model for subarticular only involves <strong>localization on the x and y axes</strong>, which helps differentiate between left and right during the subsequent classification.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8171978%2F2bf2ecaf105d3d4d3fa1a96faa16294a%2F2567a20b32031caa71592fee2d9ccae.png?generation=1728699581616930&amp;alt=media\" alt=\"\"></p>\n<p><strong>Second stage</strong></p>\n<p>Since the first stage involves differentiating between left and right, there is no need for the model to perform this distinction in the second stage. I trained a separate classification model for each disease (2.5D CNN + GRU + AttentionHead), and developed a combined multi-modal model for the three diseases (3<em>2.5D CNN + GRU + 3</em>AttentionHead). The final results are derived from the weighted average of these models. It is noteworthy that, in order to simulate potential inaccuracies in point localization from the first stage, I introduced <strong>random jitter</strong> within a specified range during the training of the second stage. This approach allowed the ROI to shift slightly within a confined area, thereby enhancing my performance. Furthermore, to address the issue of label distribution imbalance, I implemented oversampling of the data from the severe category. I used ResNet50 and SE-ResNeXt50 as the backbones for my models.</p>\n<p><strong>Post-process</strong></p>\n<p>I multiplied all the probabilities by a temperature value of 1.3.</p>\n<p>Finally, I reviewed the approaches shared by everyone, and I found that some of my methods are also included among them. I won't elaborate further here. Thank you all, and I look forward to seeing you in the next competition!</p>",
      "rawMarkdown": "First of all, I would like to sincerely thank the organizers for hosting this competition. I have learned a lot from it. \n\nMy approach is very simple and follows a two-stage method. In the first stage, a point detection model is used to extract the ROI based on the predicted points. In the second stage, classification is performed on the ROI.\n\n**First stage**\n\nIn fact, I used a separate point detection model for each type of disease. It is important to note that for subarticular conditions, i can locate the corresponding vertebrae from the spinal points. Therefore, the point model for subarticular only involves **localization on the x and y axes**, which helps differentiate between left and right during the subsequent classification.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8171978%2F2bf2ecaf105d3d4d3fa1a96faa16294a%2F2567a20b32031caa71592fee2d9ccae.png?generation=1728699581616930&alt=media)\n\n**Second stage**\n\nSince the first stage involves differentiating between left and right, there is no need for the model to perform this distinction in the second stage. I trained a separate classification model for each disease (2.5D CNN + GRU + AttentionHead), and developed a combined multi-modal model for the three diseases (3*2.5D CNN + GRU + 3*AttentionHead). The final results are derived from the weighted average of these models. It is noteworthy that, in order to simulate potential inaccuracies in point localization from the first stage, I introduced **random jitter** within a specified range during the training of the second stage. This approach allowed the ROI to shift slightly within a confined area, thereby enhancing my performance. Furthermore, to address the issue of label distribution imbalance, I implemented oversampling of the data from the severe category. I used ResNet50 and SE-ResNeXt50 as the backbones for my models.\n\n**Post-process**\n\nI multiplied all the probabilities by a temperature value of 1.3.\n\nFinally, I reviewed the approaches shared by everyone, and I found that some of my methods are also included among them. I won't elaborate further here. Thank you all, and I look forward to seeing you in the next competition!",
      "votes": null
    },
    {
      "id": "3015109",
      "postDate": "10/12/2024 02:28:45",
      "content": "<p>CV </p>\n<pre><code>ss score: \nforaminal score: \nscs score: \n</code></pre>",
      "rawMarkdown": "CV \n\n```python\nss score: 0.502\nforaminal score: 0.461\nscs score: 0.268\n```",
      "votes": null
    },
    {
      "id": "3015118",
      "postDate": "10/12/2024 02:59:37",
      "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8171978%2F2070a13f48982b8b15e44f432da82359%2F32aa3ddef69c9a897c131651729e302.png?generation=1728701963282556&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8171978%2F5fd69340acfc7dcf8711dbd8c391f8c5%2F0efc7a6dc3b26cdafdf00d141805d99.png?generation=1728701975611840&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8171978%2F2070a13f48982b8b15e44f432da82359%2F32aa3ddef69c9a897c131651729e302.png?generation=1728701963282556&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8171978%2F5fd69340acfc7dcf8711dbd8c391f8c5%2F0efc7a6dc3b26cdafdf00d141805d99.png?generation=1728701975611840&alt=media)",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 3015109,
      "author_name": "chenxupeng",
      "author_url": "",
      "post_date": "10/12/2024 02:28:45",
      "content": "<p>CV </p>\n<pre><code>ss score: \nforaminal score: \nscs score: \n</code></pre>",
      "votes": null,
      "replies": []
    },
    {
      "id": 3015118,
      "author_name": "chenxupeng",
      "author_url": "",
      "post_date": "10/12/2024 02:59:37",
      "content": "<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8171978%2F2070a13f48982b8b15e44f432da82359%2F32aa3ddef69c9a897c131651729e302.png?generation=1728701963282556&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8171978%2F5fd69340acfc7dcf8711dbd8c391f8c5%2F0efc7a6dc3b26cdafdf00d141805d99.png?generation=1728701975611840&amp;alt=media\" alt=\"\"></p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "3015102": "First of all, I would like to sincerely thank the organizers for hosting this competition. I have learned a lot from it. \n\nMy approach is very simple and follows a two-stage method. In the first stage, a point detection model is used to extract the ROI based on the predicted points. In the second stage, classification is performed on the ROI.\n\n**First stage**\n\nIn fact, I used a separate point detection model for each type of disease. It is important to note that for subarticular conditions, i can locate the corresponding vertebrae from the spinal points. Therefore, the point model for subarticular only involves **localization on the x and y axes**, which helps differentiate between left and right during the subsequent classification.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8171978%2F2bf2ecaf105d3d4d3fa1a96faa16294a%2F2567a20b32031caa71592fee2d9ccae.png?generation=1728699581616930&alt=media)\n\n**Second stage**\n\nSince the first stage involves differentiating between left and right, there is no need for the model to perform this distinction in the second stage. I trained a separate classification model for each disease (2.5D CNN + GRU + AttentionHead), and developed a combined multi-modal model for the three diseases (3*2.5D CNN + GRU + 3*AttentionHead). The final results are derived from the weighted average of these models. It is noteworthy that, in order to simulate potential inaccuracies in point localization from the first stage, I introduced **random jitter** within a specified range during the training of the second stage. This approach allowed the ROI to shift slightly within a confined area, thereby enhancing my performance. Furthermore, to address the issue of label distribution imbalance, I implemented oversampling of the data from the severe category. I used ResNet50 and SE-ResNeXt50 as the backbones for my models.\n\n**Post-process**\n\nI multiplied all the probabilities by a temperature value of 1.3.\n\nFinally, I reviewed the approaches shared by everyone, and I found that some of my methods are also included among them. I won't elaborate further here. Thank you all, and I look forward to seeing you in the next competition!",
    "3015109": "CV \n\n```python\nss score: 0.502\nforaminal score: 0.461\nscs score: 0.268\n```",
    "3015118": "![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8171978%2F2070a13f48982b8b15e44f432da82359%2F32aa3ddef69c9a897c131651729e302.png?generation=1728701963282556&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F8171978%2F5fd69340acfc7dcf8711dbd8c391f8c5%2F0efc7a6dc3b26cdafdf00d141805d99.png?generation=1728701975611840&alt=media)"
  },
  "source": "meta"
}