{
  "id": 117223,
  "title": "3rd place solution & become GM!! (updated with code)",
  "url": "/competitions/rsna-intracranial-hemorrhage-detection/discussion/117223",
  "author_name": "takuoko",
  "post_date": "2019-11-14T01:40:24.766000",
  "votes": 103,
  "comment_count": 53,
  "views": 0,
  "content": "<h2>update</h2>\n\n<p>code is <a href=\"https://github.com/okotaku/kaggle_rsna2019_3rd_solution\">here</a>.</p>\n\n<p>Hi, dear kagglers. First of all, thank you very much RSNA and kaggle for hosting such a fantastic competition. And congrats winners and all kagglers:) \nI finally became kaggle Grandmaster. It was a super tough road but all experience made me stronger. I am very proud of it😆</p>\n\n<p>Here is my solution. I will write details in later parts and will share my github repo after I clean up it.</p>\n\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F841938%2Fbba0a58dc68950ba36d51fb210b8329c%2Fimage1.png?generation=1573695201895407&amp;alt=media\" alt=\"\"></p>\n\n<p>Final model: private 0.045\nUser stacking model only: private 0.043 (I couldn't select it qq)</p>\n\n<h2>Special Preprocessing</h2>\n\n<h3>windowing</h3>\n\n<p>I used 2 types of windowing.\n- <a href=\"https://www.kaggle.com/c/rsna-intracranial-hemorrhage-detection/discussion/110728#latest-659011\">subdural window</a>\n- <a href=\"https://github.com/appian42/kaggle-rsna-intracranial-hemorrhage/blob/master/src/cnn/dataset/custom_dataset.py#L16\">Appian’s 3 types windows</a></p>\n\n<p>For me subdural was a little better.</p>\n\n<h3>concat user slice</h3>\n\n<p>This method gave me much improvement. There are some images (about20 - 40) in one SeriesInstanceUID. And when sorted by ImagePositionPatient2, you can see that targets are continuous. I will call those images, s1, s2, s3, ..., st, st+1, … in my post.\nHere is the example. You can see more details in <a href=\"https://www.kaggle.com/takuok/eda-of-rsna\">my kernel</a>.</p>\n\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F841938%2Fc11506e3c3a5c81bf6277b2963f5df83%2Fimage3.png?generation=1573695232477620&amp;alt=media\" alt=\"\"></p>\n\n<p>So I decided to concat some images from the same SeriesInstanceUID. \n- st-1, st, st+1\n- st, st+1, st+2\n- st-2, st-1, st\n- st-2, st, st+2\n- np.mean (st-3, st-2, st-1), st, np.mean(st+1, st+2, st+3)\n- np.mean (st-5, st-4, st-3, st-2, st-1), st, np.mean(st+1, st+2, st+3, st+4, st+5)\n- np.mean (st-X for X in all values), st, np.mean(st+X for X in all values)</p>\n\n<p>Then predicted st’s target.</p>\n\n<p>And I tried multi task training.\n- st-1, st, st+1 then predict targets of st-1, st, st+1\n- st-2, st, st+2 then predict targets of st-2, st, st+2</p>\n\n<p>This model got 0.060~0.062(sry I forgot) on stage1 Public. It was my best single model and those 2 models improved my ensemble score from 0.057 to 0.056 on stage1.</p>\n\n<h2>User Stacking</h2>\n\n<p>I used “concat user slice” method to show models multiple slices of the user. And I used this method on ensemble parts. I call it User Stacking.</p>\n\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F841938%2F8599bb8cc52e1ebac3c14203f98e5427%2Fimage2.png?generation=1573695252564269&amp;alt=media\" alt=\"\"></p>\n\n<h2>Other things I used</h2>\n\n<ul>\n<li>They didn’t have much improvement, but I write up.</li>\n<li>Appian’s 0.066 models</li>\n<li>predict 5 classed and fill “any” on max prediction.</li>\n<li><a href=\"https://www.kaggle.com/c/rsna-intracranial-hemorrhage-detection/discussion/113339#latest-664918\">CQ500 External Data</a></li>\n<li>crop black area</li>\n<li>retrain stage2 data</li>\n<li><a href=\"https://www.kaggle.com/c/aptos2019-blindness-detection/discussion/108065#latest-636669\">generalized mean pooling</a></li>\n</ul>\n\n<h2>What didn’t work.</h2>\n\n<ul>\n<li>EfficientNet</li>\n<li>Cbam Resnet</li>\n</ul>\n\n<p>*Slide design: Japanese Autumn leaves (紅葉: koyo)</p>",
  "messages": [
    {
      "id": 672552,
      "postDate": "2019-11-14T01:40:24.767Z",
      "content": "<h2>update</h2>\n\n<p>code is <a href=\"https://github.com/okotaku/kaggle_rsna2019_3rd_solution\">here</a>.</p>\n\n<p>Hi, dear kagglers. First of all, thank you very much RSNA and kaggle for hosting such a fantastic competition. And congrats winners and all kagglers:) \nI finally became kaggle Grandmaster. It was a super tough road but all experience made me stronger. I am very proud of it😆</p>\n\n<p>Here is my solution. I will write details in later parts and will share my github repo after I clean up it.</p>\n\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F841938%2Fbba0a58dc68950ba36d51fb210b8329c%2Fimage1.png?generation=1573695201895407&amp;alt=media\" alt=\"\"></p>\n\n<p>Final model: private 0.045\nUser stacking model only: private 0.043 (I couldn't select it qq)</p>\n\n<h2>Special Preprocessing</h2>\n\n<h3>windowing</h3>\n\n<p>I used 2 types of windowing.\n- <a href=\"https://www.kaggle.com/c/rsna-intracranial-hemorrhage-detection/discussion/110728#latest-659011\">subdural window</a>\n- <a href=\"https://github.com/appian42/kaggle-rsna-intracranial-hemorrhage/blob/master/src/cnn/dataset/custom_dataset.py#L16\">Appian’s 3 types windows</a></p>\n\n<p>For me subdural was a little better.</p>\n\n<h3>concat user slice</h3>\n\n<p>This method gave me much improvement. There are some images (about20 - 40) in one SeriesInstanceUID. And when sorted by ImagePositionPatient2, you can see that targets are continuous. I will call those images, s1, s2, s3, ..., st, st+1, … in my post.\nHere is the example. You can see more details in <a href=\"https://www.kaggle.com/takuok/eda-of-rsna\">my kernel</a>.</p>\n\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F841938%2Fc11506e3c3a5c81bf6277b2963f5df83%2Fimage3.png?generation=1573695232477620&amp;alt=media\" alt=\"\"></p>\n\n<p>So I decided to concat some images from the same SeriesInstanceUID. \n- st-1, st, st+1\n- st, st+1, st+2\n- st-2, st-1, st\n- st-2, st, st+2\n- np.mean (st-3, st-2, st-1), st, np.mean(st+1, st+2, st+3)\n- np.mean (st-5, st-4, st-3, st-2, st-1), st, np.mean(st+1, st+2, st+3, st+4, st+5)\n- np.mean (st-X for X in all values), st, np.mean(st+X for X in all values)</p>\n\n<p>Then predicted st’s target.</p>\n\n<p>And I tried multi task training.\n- st-1, st, st+1 then predict targets of st-1, st, st+1\n- st-2, st, st+2 then predict targets of st-2, st, st+2</p>\n\n<p>This model got 0.060~0.062(sry I forgot) on stage1 Public. It was my best single model and those 2 models improved my ensemble score from 0.057 to 0.056 on stage1.</p>\n\n<h2>User Stacking</h2>\n\n<p>I used “concat user slice” method to show models multiple slices of the user. And I used this method on ensemble parts. I call it User Stacking.</p>\n\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F841938%2F8599bb8cc52e1ebac3c14203f98e5427%2Fimage2.png?generation=1573695252564269&amp;alt=media\" alt=\"\"></p>\n\n<h2>Other things I used</h2>\n\n<ul>\n<li>They didn’t have much improvement, but I write up.</li>\n<li>Appian’s 0.066 models</li>\n<li>predict 5 classed and fill “any” on max prediction.</li>\n<li><a href=\"https://www.kaggle.com/c/rsna-intracranial-hemorrhage-detection/discussion/113339#latest-664918\">CQ500 External Data</a></li>\n<li>crop black area</li>\n<li>retrain stage2 data</li>\n<li><a href=\"https://www.kaggle.com/c/aptos2019-blindness-detection/discussion/108065#latest-636669\">generalized mean pooling</a></li>\n</ul>\n\n<h2>What didn’t work.</h2>\n\n<ul>\n<li>EfficientNet</li>\n<li>Cbam Resnet</li>\n</ul>\n\n<p>*Slide design: Japanese Autumn leaves (紅葉: koyo)</p>",
      "rawMarkdown": "## update\ncode is [here](https://github.com/okotaku/kaggle_rsna2019_3rd_solution).\n\nHi, dear kagglers. First of all, thank you very much RSNA and kaggle for hosting such a fantastic competition. And congrats winners and all kagglers:) \nI finally became kaggle Grandmaster. It was a super tough road but all experience made me stronger. I am very proud of it😆\n \nHere is my solution. I will write details in later parts and will share my github repo after I clean up it.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F841938%2Fbba0a58dc68950ba36d51fb210b8329c%2Fimage1.png?generation=1573695201895407&amp;alt=media)\n\nFinal model: private 0.045\nUser stacking model only: private 0.043 (I couldn't select it qq)\n\n## Special Preprocessing\n### windowing\nI used 2 types of windowing.\n- [subdural window](https://www.kaggle.com/c/rsna-intracranial-hemorrhage-detection/discussion/110728#latest-659011)\n- [Appian’s 3 types windows](https://github.com/appian42/kaggle-rsna-intracranial-hemorrhage/blob/master/src/cnn/dataset/custom_dataset.py#L16)\n\nFor me subdural was a little better.\n\n### concat user slice\nThis method gave me much improvement. There are some images (about20 - 40) in one SeriesInstanceUID. And when sorted by ImagePositionPatient2, you can see that targets are continuous. I will call those images, s1, s2, s3, ..., st, st+1, … in my post.\nHere is the example. You can see more details in [my kernel](https://www.kaggle.com/takuok/eda-of-rsna).\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F841938%2Fc11506e3c3a5c81bf6277b2963f5df83%2Fimage3.png?generation=1573695232477620&amp;alt=media)\n\nSo I decided to concat some images from the same SeriesInstanceUID. \n- st-1, st, st+1\n- st, st+1, st+2\n- st-2, st-1, st\n- st-2, st, st+2\n- np.mean (st-3, st-2, st-1), st, np.mean(st+1, st+2, st+3)\n- np.mean (st-5, st-4, st-3, st-2, st-1), st, np.mean(st+1, st+2, st+3, st+4, st+5)\n- np.mean (st-X for X in all values), st, np.mean(st+X for X in all values)\n\nThen predicted st’s target.\n\nAnd I tried multi task training.\n- st-1, st, st+1 then predict targets of st-1, st, st+1\n- st-2, st, st+2 then predict targets of st-2, st, st+2\n\nThis model got 0.060~0.062(sry I forgot) on stage1 Public. It was my best single model and those 2 models improved my ensemble score from 0.057 to 0.056 on stage1.\n\n## User Stacking\nI used “concat user slice” method to show models multiple slices of the user. And I used this method on ensemble parts. I call it User Stacking.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F841938%2F8599bb8cc52e1ebac3c14203f98e5427%2Fimage2.png?generation=1573695252564269&amp;alt=media)\n\n## Other things I used\n- They didn’t have much improvement, but I write up.\n- Appian’s 0.066 models\n- predict 5 classed and fill “any” on max prediction.\n- [CQ500 External Data](https://www.kaggle.com/c/rsna-intracranial-hemorrhage-detection/discussion/113339#latest-664918)\n- crop black area\n- retrain stage2 data\n- [generalized mean pooling](https://www.kaggle.com/c/aptos2019-blindness-detection/discussion/108065#latest-636669)\n\n## What didn’t work.\n- EfficientNet\n- Cbam Resnet\n\n*Slide design: Japanese Autumn leaves (紅葉: koyo)",
      "votes": 103
    },
    {
      "id": 673615,
      "postDate": "2019-11-15T08:15:45.793Z",
      "content": "<p><a href=\"/takuok\">@takuok</a>  Congratulations to you! \nI want to ask how did you concat st-1, st, st+1\nyour preprocessing contains three type windowing\nIs each of the images 3 * 512 * 512, did you concat to a rectangle image 3 * 512 * 1536  or what </p>\n\n<p>thank you very much.  congrats again for being a GM!</p>",
      "rawMarkdown": "@takuok  Congratulations to you! \nI want to ask how did you concat st-1, st, st+1\nyour preprocessing contains three type windowing\nIs each of the images 3 * 512 * 512, did you concat to a rectangle image 3 * 512 * 1536  or what \n\nthank you very much.  congrats again for being a GM!",
      "votes": 1,
      "replies": [
        {
          "id": 673783,
          "postDate": "2019-11-15T13:29:52.897Z",
          "content": "<p>Thank you for your comments! <br>\n<a href=\"https://github.com/okotaku/kaggle_rsna2019_3rd_solution/blob/master/src/dataset_concat.py#L59-L80\">Here</a> is the concat parts. <br>\n1. load st-1's image -&gt; resize 512*512 -&gt; window preprocessing\n2. load st's image -&gt; resize 512*512 -&gt; window preprocessing\n3. load st+1's image -&gt; resize 512*512 -&gt; window preprocessing\n4. concat all</p>",
          "rawMarkdown": "Thank you for your comments!  \n[Here](https://github.com/okotaku/kaggle_rsna2019_3rd_solution/blob/master/src/dataset_concat.py#L59-L80) is the concat parts.  \n1. load st-1's image -&gt; resize 512*512 -&gt; window preprocessing\n2. load st's image -&gt; resize 512*512 -&gt; window preprocessing\n3. load st+1's image -&gt; resize 512*512 -&gt; window preprocessing\n4. concat all"
        },
        {
          "id": 674887,
          "postDate": "2019-11-17T08:02:13.520Z",
          "content": "<p>thank you</p>",
          "rawMarkdown": "thank you"
        },
        {
          "id": 676228,
          "postDate": "2019-11-19T03:21:09.417Z",
          "content": "<p>can I ask one more question</p>\n\n<p>what's your cv score of best single model in stage2 training, thanks</p>",
          "rawMarkdown": "can I ask one more question\n\nwhat's your cv score of best single model in stage2 training, thanks"
        },
        {
          "id": 676753,
          "postDate": "2019-11-19T13:33:52.510Z",
          "content": "<p>I didn't use validation data. I used whole data for training so I couldn't check cv score.</p>",
          "rawMarkdown": "I didn't use validation data. I used whole data for training so I couldn't check cv score."
        }
      ]
    },
    {
      "id": 673488,
      "postDate": "2019-11-15T03:40:55.747Z",
      "content": "<p>congratulations!</p>",
      "rawMarkdown": "congratulations!",
      "votes": 1,
      "replies": [
        {
          "id": 673643,
          "postDate": "2019-11-15T09:06:27.780Z",
          "content": "<p>😆</p>",
          "rawMarkdown": "😆"
        }
      ]
    },
    {
      "id": 673420,
      "postDate": "2019-11-15T00:25:50.240Z",
      "content": "<p>Congrats for becoming GM!!! And thank you for write up.\nI saw it was a competition with big shake up. I guess you trust your CV to get this result.</p>",
      "rawMarkdown": "Congrats for becoming GM!!! And thank you for write up.\nI saw it was a competition with big shake up. I guess you trust your CV to get this result.",
      "votes": 1,
      "replies": [
        {
          "id": 673641,
          "postDate": "2019-11-15T09:06:15.847Z",
          "content": "<p>thank  you!\nI trust my 1st stage public score:)</p>",
          "rawMarkdown": "thank  you!\nI trust my 1st stage public score:)",
          "votes": 1
        }
      ]
    },
    {
      "id": 673018,
      "postDate": "2019-11-14T12:03:53.163Z",
      "content": "<p>Congratulations <a href=\"/takuok\">@takuok</a> for becoming GM and for this competition. Looking forward for your repo.</p>",
      "rawMarkdown": "Congratulations @takuok for becoming GM and for this competition. Looking forward for your repo.",
      "votes": 1,
      "replies": [
        {
          "id": 673640,
          "postDate": "2019-11-15T09:05:34.450Z",
          "content": "<p>thank  you!\nI am preparing my document now.</p>",
          "rawMarkdown": "thank  you!\nI am preparing my document now."
        }
      ]
    },
    {
      "id": 672980,
      "postDate": "2019-11-14T11:03:29.607Z",
      "content": "<p>Congrats on the result and on becoming a GM! Looking forward to seeing the code :).</p>",
      "rawMarkdown": "Congrats on the result and on becoming a GM! Looking forward to seeing the code :).",
      "votes": 1,
      "replies": [
        {
          "id": 673639,
          "postDate": "2019-11-15T09:04:58.947Z",
          "content": "<p>thank  you!</p>",
          "rawMarkdown": "thank  you!"
        }
      ]
    },
    {
      "id": 672850,
      "postDate": "2019-11-14T08:22:08.777Z",
      "content": "<p>Good job, double congrats to you <a href=\"/takuok\">@takuok</a>  !!</p>",
      "rawMarkdown": "Good job, double congrats to you @takuok  !!",
      "votes": 1,
      "replies": [
        {
          "id": 673637,
          "postDate": "2019-11-15T09:04:23.110Z",
          "content": "<p>thank  you!</p>",
          "rawMarkdown": "thank  you!"
        }
      ]
    },
    {
      "id": 672798,
      "postDate": "2019-11-14T07:01:14.263Z",
      "content": "<p><a href=\"/takuok\">@takuok</a> , double congratulations. I look forward to your code to reproduce the results.</p>",
      "rawMarkdown": "@takuok , double congratulations. I look forward to your code to reproduce the results.",
      "votes": 1,
      "replies": [
        {
          "id": 672833,
          "postDate": "2019-11-14T08:05:27.953Z",
          "content": "<p>Thank you! I will upload it later;)</p>",
          "rawMarkdown": "Thank you! I will upload it later;)"
        }
      ]
    },
    {
      "id": 672761,
      "postDate": "2019-11-14T06:05:40.787Z",
      "content": "<p>Hai Nice Job. Congrats! When you concat the images, did you also avoided concating the last and first images of two consecutive patients? If so how! Also what image size you used for single best model. Thanks!</p>",
      "rawMarkdown": "Hai Nice Job. Congrats! When you concat the images, did you also avoided concating the last and first images of two consecutive patients? If so how! Also what image size you used for single best model. Thanks!",
      "votes": 1,
      "replies": [
        {
          "id": 672832,
          "postDate": "2019-11-14T08:04:52.303Z",
          "content": "<blockquote>\n  <p>did you also avoided concating the last and first images of two consecutive patients?</p>\n</blockquote>\n\n<p>Yes I did. First I made dataframe that has slice information like patientID0, slice1ID=XXX, slice2ID=XXX, ...</p>\n\n<blockquote>\n  <p>what image size you used for single best model.</p>\n</blockquote>\n\n<p>512*512</p>",
          "rawMarkdown": "&gt; did you also avoided concating the last and first images of two consecutive patients?\n\nYes I did. First I made dataframe that has slice information like patientID0, slice1ID=XXX, slice2ID=XXX, ...\n\n&gt;what image size you used for single best model.\n\n512*512"
        },
        {
          "id": 672899,
          "postDate": "2019-11-14T09:00:17.243Z",
          "content": "<p>Thank you! I appreciate.</p>",
          "rawMarkdown": "Thank you! I appreciate."
        }
      ]
    },
    {
      "id": 672754,
      "postDate": "2019-11-14T05:54:15.147Z",
      "content": "<p>Congrats!</p>",
      "rawMarkdown": "Congrats!",
      "votes": 1,
      "replies": [
        {
          "id": 672831,
          "postDate": "2019-11-14T08:02:46.687Z",
          "content": "<p>Congrats you too!!</p>",
          "rawMarkdown": "Congrats you too!!"
        }
      ]
    },
    {
      "id": 672718,
      "postDate": "2019-11-14T04:50:56.277Z",
      "content": "<p>Congratulations\nGreat Write-Up\nThanks for Sharing your Valuable Insights &amp; Approach <a href=\"/takuok\">@takuok</a> </p>",
      "rawMarkdown": "Congratulations\nGreat Write-Up\nThanks for Sharing your Valuable Insights &amp; Approach @takuok ",
      "votes": 1,
      "replies": [
        {
          "id": 672830,
          "postDate": "2019-11-14T08:02:02.853Z",
          "content": "<p>Thank you😃 </p>",
          "rawMarkdown": "Thank you😃 "
        }
      ]
    },
    {
      "id": 672660,
      "postDate": "2019-11-14T03:51:45.983Z",
      "content": "<p>how about your best single model</p>",
      "rawMarkdown": "how about your best single model",
      "votes": 1,
      "replies": [
        {
          "id": 672704,
          "postDate": "2019-11-14T04:32:14.973Z",
          "content": "<p>Se-ResNeXt50 <br>\ninput=st-1, st, st+1 <br>\ntargets=st-1, st, st+1 <br>\n1st stage Public=0.061 2nd stage private=0.048</p>",
          "rawMarkdown": "Se-ResNeXt50  \ninput=st-1, st, st+1  \ntargets=st-1, st, st+1  \n1st stage Public=0.061 2nd stage private=0.048",
          "votes": 1
        }
      ]
    },
    {
      "id": 672641,
      "postDate": "2019-11-14T03:17:51.887Z",
      "content": "<p>Congrats with GM !\nAnd great solution of course!</p>",
      "rawMarkdown": "Congrats with GM !\nAnd great solution of course!",
      "votes": 1,
      "replies": [
        {
          "id": 672702,
          "postDate": "2019-11-14T04:29:32.287Z",
          "content": "<p>Thank you! </p>",
          "rawMarkdown": "Thank you! "
        }
      ]
    },
    {
      "id": 672639,
      "postDate": "2019-11-14T03:16:15.697Z",
      "content": "<p>Congrats! 👍 Looking forward for the repo.</p>",
      "rawMarkdown": "Congrats! 👍 Looking forward for the repo.",
      "votes": 1,
      "replies": [
        {
          "id": 672701,
          "postDate": "2019-11-14T04:29:17.707Z",
          "content": "<p>Thank you!</p>",
          "rawMarkdown": "Thank you!"
        }
      ]
    },
    {
      "id": 672605,
      "postDate": "2019-11-14T02:32:06.820Z",
      "content": "<p>Congrats! nice write up. How did you concat the slices? blend/avg? if so, did you also blend the labels too? i.e. (0 + 0 + 1) = 0.33 positive?</p>",
      "rawMarkdown": "Congrats! nice write up. How did you concat the slices? blend/avg? if so, did you also blend the labels too? i.e. (0 + 0 + 1) = 0.33 positive?",
      "votes": 1,
      "replies": [
        {
          "id": 672699,
          "postDate": "2019-11-14T04:28:44.493Z",
          "content": "<p>I used 2 types of input. <br>\n1. st-1, st, st+1-&gt;concat\n2. avg(st-3, st-2, st-1), st, avg(st+1, st+2, st+3)-&gt;concat</p>\n\n<p>And 2 types of target.\n1. st's target\n2. st's target, st-1's target, st-2's target-&gt;concat (so predict 18 targets)</p>",
          "rawMarkdown": "I used 2 types of input.  \n1. st-1, st, st+1-&gt;concat\n2. avg(st-3, st-2, st-1), st, avg(st+1, st+2, st+3)-&gt;concat\n\nAnd 2 types of target.\n1. st's target\n2. st's target, st-1's target, st-2's target-&gt;concat (so predict 18 targets)",
          "votes": 1
        }
      ]
    },
    {
      "id": 672589,
      "postDate": "2019-11-14T02:17:34.460Z",
      "content": "<p>Congrats Takuoko!!!</p>",
      "rawMarkdown": "Congrats Takuoko!!!",
      "votes": 1,
      "replies": [
        {
          "id": 672695,
          "postDate": "2019-11-14T04:25:58.810Z",
          "content": "<p>Thank you;)  I am looking forward to see you again😃 </p>",
          "rawMarkdown": "Thank you;)  I am looking forward to see you again😃 ",
          "votes": 1
        }
      ]
    },
    {
      "id": 672583,
      "postDate": "2019-11-14T02:08:08.650Z",
      "content": "<p>Very Nice! Congratulations and you deserve to become grandmaster! :-)</p>",
      "rawMarkdown": "Very Nice! Congratulations and you deserve to become grandmaster! :-)",
      "votes": 1,
      "replies": [
        {
          "id": 672694,
          "postDate": "2019-11-14T04:24:29.673Z",
          "content": "<p>Thank you😆 </p>",
          "rawMarkdown": "Thank you😆 "
        }
      ]
    },
    {
      "id": 672572,
      "postDate": "2019-11-14T02:01:09.753Z",
      "content": "<p>Congrat <a href=\"/takuok\">@takuok</a> !! I have been admired your performance ... Well deserve for a GM!!</p>",
      "rawMarkdown": "Congrat @takuok !! I have been admired your performance ... Well deserve for a GM!!",
      "votes": 1,
      "replies": [
        {
          "id": 672692,
          "postDate": "2019-11-14T04:23:14.100Z",
          "content": "<p>&gt;Well deserve for a GM!!  </p>\n\n<p>Hahaha, thank you very much. I am so glad to hear that.</p>",
          "rawMarkdown": "&gt;Well deserve for a GM!!  \n\nHahaha, thank you very much. I am so glad to hear that.",
          "votes": 1
        }
      ]
    },
    {
      "id": 672569,
      "postDate": "2019-11-14T01:59:53.317Z",
      "content": "<p>Congratulations on becoming GM, and the wonderful solution!  Thanks in advance for the repo.</p>",
      "rawMarkdown": "Congratulations on becoming GM, and the wonderful solution!  Thanks in advance for the repo.",
      "votes": 1,
      "replies": [
        {
          "id": 672690,
          "postDate": "2019-11-14T04:22:38.510Z",
          "content": "<p>Thank you! </p>",
          "rawMarkdown": "Thank you! "
        }
      ]
    },
    {
      "id": 672555,
      "postDate": "2019-11-14T01:44:43.963Z",
      "content": "<p>Congrats!</p>",
      "rawMarkdown": "Congrats!",
      "votes": 1,
      "replies": [
        {
          "id": 672564,
          "postDate": "2019-11-14T01:56:53.677Z",
          "content": "<p>Thank you😊 </p>",
          "rawMarkdown": "Thank you😊 "
        }
      ]
    },
    {
      "id": 672611,
      "postDate": "2019-11-14T02:38:12.843Z",
      "content": "<p>Congrats to the New GMs! <a href=\"/takuok\">@takuok</a> <a href=\"/lanjunyelan\">@lanjunyelan</a> </p>",
      "rawMarkdown": "Congrats to the New GMs! @takuok @lanjunyelan ",
      "votes": 2,
      "replies": [
        {
          "id": 672700,
          "postDate": "2019-11-14T04:29:05.093Z",
          "content": "<p>Thank you! <br>\nCongrats to win;)</p>",
          "rawMarkdown": "Thank you!  \nCongrats to win;)"
        }
      ]
    },
    {
      "id": 672896,
      "postDate": "2019-11-14T08:58:53.450Z",
      "content": "<p>congrats, I have to say, you need to practice your spoken english :)</p>",
      "rawMarkdown": "congrats, I have to say, you need to practice your spoken english :)",
      "votes": -3,
      "replies": [
        {
          "id": 673638,
          "postDate": "2019-11-15T09:04:45.903Z",
          "content": "<p>haha, thank  you🙄</p>",
          "rawMarkdown": "haha, thank  you🙄"
        }
      ]
    },
    {
      "id": 1052487,
      "postDate": "2020-10-17T19:30:24.327Z",
      "content": "<p>you probably didn't expect to get a reply one year later 😆</p>\n<p>I just have a question. why do you think effnet didn't work?</p>",
      "rawMarkdown": "you probably didn't expect to get a reply one year later 😆\n\nI just have a question. why do you think effnet didn't work?"
    },
    {
      "id": 675589,
      "postDate": "2019-11-18T09:12:36.200Z",
      "content": "<p>Congratulations to you!. </p>",
      "rawMarkdown": "Congratulations to you!. "
    },
    {
      "id": 674611,
      "postDate": "2019-11-16T19:22:54.023Z",
      "content": "<p>congrats would look up the solution thanks saw it on linkedin</p>",
      "rawMarkdown": "congrats would look up the solution thanks saw it on linkedin"
    },
    {
      "id": 673778,
      "postDate": "2019-11-15T13:27:29.370Z",
      "content": "<p>I updated with my code.</p>",
      "rawMarkdown": "I updated with my code.",
      "replies": [
        {
          "id": 674486,
          "postDate": "2019-11-16T15:02:08.420Z",
          "content": "<p><a href=\"/takuok\">@takuok</a> congrats for becoming GM.\n1) .how studyinstance id different from series instanceUID. I saw people are using this also for sequencing i.e studyintanceId.\n2) What benefit you get when  u order by ImagePositionPatient2 \n3) in stacking what is done</p>",
          "rawMarkdown": "@takuok congrats for becoming GM.\n1) .how studyinstance id different from series instanceUID. I saw people are using this also for sequencing i.e studyintanceId.\n2) What benefit you get when  u order by ImagePositionPatient2 \n3) in stacking what is done"
        },
        {
          "id": 676755,
          "postDate": "2019-11-19T13:36:18.480Z",
          "content": "<ol>\n<li>I didn't use studyinstance.</li>\n<li>stage1 public LB 0.066-&gt;0.060. Ensemble with ImagePositionPatient2 model.</li>\n<li>sry what is the meaning of this question?</li>\n</ol>",
          "rawMarkdown": "1. I didn't use studyinstance.\n2. stage1 public LB 0.066-&gt;0.060. Ensemble with ImagePositionPatient2 model.\n3. sry what is the meaning of this question?"
        }
      ]
    },
    {
      "id": 673817,
      "postDate": "2019-11-15T14:21:33.790Z",
      "content": "<p>Wow ! Congrats! Thanks for sharing!</p>",
      "rawMarkdown": "Wow ! Congrats! Thanks for sharing!"
    }
  ],
  "comments": [
    {
      "id": 673615,
      "author_name": "yangDDD",
      "author_url": "",
      "post_date": "2019-11-15T08:15:45.793000",
      "content": "<p><a href=\"/takuok\">@takuok</a>  Congratulations to you! \nI want to ask how did you concat st-1, st, st+1\nyour preprocessing contains three type windowing\nIs each of the images 3 * 512 * 512, did you concat to a rectangle image 3 * 512 * 1536  or what </p>\n\n<p>thank you very much.  congrats again for being a GM!</p>",
      "votes": 1,
      "replies": [
        {
          "id": 673783,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-15T13:29:52.897000",
          "content": "<p>Thank you for your comments! <br>\n<a href=\"https://github.com/okotaku/kaggle_rsna2019_3rd_solution/blob/master/src/dataset_concat.py#L59-L80\">Here</a> is the concat parts. <br>\n1. load st-1's image -&gt; resize 512*512 -&gt; window preprocessing\n2. load st's image -&gt; resize 512*512 -&gt; window preprocessing\n3. load st+1's image -&gt; resize 512*512 -&gt; window preprocessing\n4. concat all</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 674887,
          "author_name": "yangDDD",
          "author_url": "",
          "post_date": "2019-11-17T08:02:13.520000",
          "content": "<p>thank you</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 676228,
          "author_name": "yangDDD",
          "author_url": "",
          "post_date": "2019-11-19T03:21:09.417000",
          "content": "<p>can I ask one more question</p>\n\n<p>what's your cv score of best single model in stage2 training, thanks</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 676753,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-19T13:33:52.510000",
          "content": "<p>I didn't use validation data. I used whole data for training so I couldn't check cv score.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 673488,
      "author_name": "Krishna Katyal",
      "author_url": "",
      "post_date": "2019-11-15T03:40:55.747000",
      "content": "<p>congratulations!</p>",
      "votes": 1,
      "replies": [
        {
          "id": 673643,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-15T09:06:27.780000",
          "content": "<p>😆</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 673420,
      "author_name": "corochann",
      "author_url": "",
      "post_date": "2019-11-15T00:25:50.240000",
      "content": "<p>Congrats for becoming GM!!! And thank you for write up.\nI saw it was a competition with big shake up. I guess you trust your CV to get this result.</p>",
      "votes": 1,
      "replies": [
        {
          "id": 673641,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-15T09:06:15.847000",
          "content": "<p>thank  you!\nI trust my 1st stage public score:)</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 673018,
      "author_name": "Deep Chatterjee",
      "author_url": "",
      "post_date": "2019-11-14T12:03:53.163000",
      "content": "<p>Congratulations <a href=\"/takuok\">@takuok</a> for becoming GM and for this competition. Looking forward for your repo.</p>",
      "votes": 1,
      "replies": [
        {
          "id": 673640,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-15T09:05:34.450000",
          "content": "<p>thank  you!\nI am preparing my document now.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 672980,
      "author_name": "César Parra Rojas",
      "author_url": "",
      "post_date": "2019-11-14T11:03:29.607000",
      "content": "<p>Congrats on the result and on becoming a GM! Looking forward to seeing the code :).</p>",
      "votes": 1,
      "replies": [
        {
          "id": 673639,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-15T09:04:58.947000",
          "content": "<p>thank  you!</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 672850,
      "author_name": "KhanhVD",
      "author_url": "",
      "post_date": "2019-11-14T08:22:08.777000",
      "content": "<p>Good job, double congrats to you <a href=\"/takuok\">@takuok</a>  !!</p>",
      "votes": 1,
      "replies": [
        {
          "id": 673637,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-15T09:04:23.110000",
          "content": "<p>thank  you!</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 672798,
      "author_name": "YaGana Sheriff-Hussaini",
      "author_url": "",
      "post_date": "2019-11-14T07:01:14.263000",
      "content": "<p><a href=\"/takuok\">@takuok</a> , double congratulations. I look forward to your code to reproduce the results.</p>",
      "votes": 1,
      "replies": [
        {
          "id": 672833,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-14T08:05:27.953000",
          "content": "<p>Thank you! I will upload it later;)</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 672761,
      "author_name": "Selva",
      "author_url": "",
      "post_date": "2019-11-14T06:05:40.787000",
      "content": "<p>Hai Nice Job. Congrats! When you concat the images, did you also avoided concating the last and first images of two consecutive patients? If so how! Also what image size you used for single best model. Thanks!</p>",
      "votes": 1,
      "replies": [
        {
          "id": 672832,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-14T08:04:52.303000",
          "content": "<blockquote>\n  <p>did you also avoided concating the last and first images of two consecutive patients?</p>\n</blockquote>\n\n<p>Yes I did. First I made dataframe that has slice information like patientID0, slice1ID=XXX, slice2ID=XXX, ...</p>\n\n<blockquote>\n  <p>what image size you used for single best model.</p>\n</blockquote>\n\n<p>512*512</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 672899,
          "author_name": "Selva",
          "author_url": "",
          "post_date": "2019-11-14T09:00:17.243000",
          "content": "<p>Thank you! I appreciate.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 672754,
      "author_name": "yelan",
      "author_url": "",
      "post_date": "2019-11-14T05:54:15.147000",
      "content": "<p>Congrats!</p>",
      "votes": 1,
      "replies": [
        {
          "id": 672831,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-14T08:02:46.687000",
          "content": "<p>Congrats you too!!</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 672718,
      "author_name": "Ailurophile",
      "author_url": "",
      "post_date": "2019-11-14T04:50:56.277000",
      "content": "<p>Congratulations\nGreat Write-Up\nThanks for Sharing your Valuable Insights &amp; Approach <a href=\"/takuok\">@takuok</a> </p>",
      "votes": 1,
      "replies": [
        {
          "id": 672830,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-14T08:02:02.853000",
          "content": "<p>Thank you😃 </p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 672660,
      "author_name": "spongebob",
      "author_url": "",
      "post_date": "2019-11-14T03:51:45.983000",
      "content": "<p>how about your best single model</p>",
      "votes": 1,
      "replies": [
        {
          "id": 672704,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-14T04:32:14.973000",
          "content": "<p>Se-ResNeXt50 <br>\ninput=st-1, st, st+1 <br>\ntargets=st-1, st, st+1 <br>\n1st stage Public=0.061 2nd stage private=0.048</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 672641,
      "author_name": "Alexey Kotlik",
      "author_url": "",
      "post_date": "2019-11-14T03:17:51.887000",
      "content": "<p>Congrats with GM !\nAnd great solution of course!</p>",
      "votes": 1,
      "replies": [
        {
          "id": 672702,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-14T04:29:32.287000",
          "content": "<p>Thank you! </p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 672639,
      "author_name": "wangyunpeng_bio",
      "author_url": "",
      "post_date": "2019-11-14T03:16:15.697000",
      "content": "<p>Congrats! 👍 Looking forward for the repo.</p>",
      "votes": 1,
      "replies": [
        {
          "id": 672701,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-14T04:29:17.707000",
          "content": "<p>Thank you!</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 672605,
      "author_name": "Tim Yee",
      "author_url": "",
      "post_date": "2019-11-14T02:32:06.820000",
      "content": "<p>Congrats! nice write up. How did you concat the slices? blend/avg? if so, did you also blend the labels too? i.e. (0 + 0 + 1) = 0.33 positive?</p>",
      "votes": 1,
      "replies": [
        {
          "id": 672699,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-14T04:28:44.493000",
          "content": "<p>I used 2 types of input. <br>\n1. st-1, st, st+1-&gt;concat\n2. avg(st-3, st-2, st-1), st, avg(st+1, st+2, st+3)-&gt;concat</p>\n\n<p>And 2 types of target.\n1. st's target\n2. st's target, st-1's target, st-2's target-&gt;concat (so predict 18 targets)</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 672589,
      "author_name": "Yiheng Wang",
      "author_url": "",
      "post_date": "2019-11-14T02:17:34.460000",
      "content": "<p>Congrats Takuoko!!!</p>",
      "votes": 1,
      "replies": [
        {
          "id": 672695,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-14T04:25:58.810000",
          "content": "<p>Thank you;)  I am looking forward to see you again😃 </p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 672583,
      "author_name": "FGPC",
      "author_url": "",
      "post_date": "2019-11-14T02:08:08.650000",
      "content": "<p>Very Nice! Congratulations and you deserve to become grandmaster! :-)</p>",
      "votes": 1,
      "replies": [
        {
          "id": 672694,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-14T04:24:29.673000",
          "content": "<p>Thank you😆 </p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 672572,
      "author_name": "Neuron Engineer",
      "author_url": "",
      "post_date": "2019-11-14T02:01:09.753000",
      "content": "<p>Congrat <a href=\"/takuok\">@takuok</a> !! I have been admired your performance ... Well deserve for a GM!!</p>",
      "votes": 1,
      "replies": [
        {
          "id": 672692,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-14T04:23:14.100000",
          "content": "<p>&gt;Well deserve for a GM!!  </p>\n\n<p>Hahaha, thank you very much. I am so glad to hear that.</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 672569,
      "author_name": "yukiya",
      "author_url": "",
      "post_date": "2019-11-14T01:59:53.317000",
      "content": "<p>Congratulations on becoming GM, and the wonderful solution!  Thanks in advance for the repo.</p>",
      "votes": 1,
      "replies": [
        {
          "id": 672690,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-14T04:22:38.510000",
          "content": "<p>Thank you! </p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 672555,
      "author_name": "Yifeng (Ethan) Zou",
      "author_url": "",
      "post_date": "2019-11-14T01:44:43.963000",
      "content": "<p>Congrats!</p>",
      "votes": 1,
      "replies": [
        {
          "id": 672564,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-14T01:56:53.677000",
          "content": "<p>Thank you😊 </p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 672611,
      "author_name": "SeuTao",
      "author_url": "",
      "post_date": "2019-11-14T02:38:12.843000",
      "content": "<p>Congrats to the New GMs! <a href=\"/takuok\">@takuok</a> <a href=\"/lanjunyelan\">@lanjunyelan</a> </p>",
      "votes": 2,
      "replies": [
        {
          "id": 672700,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-14T04:29:05.093000",
          "content": "<p>Thank you! <br>\nCongrats to win;)</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 672896,
      "author_name": "liuze",
      "author_url": "",
      "post_date": "2019-11-14T08:58:53.450000",
      "content": "<p>congrats, I have to say, you need to practice your spoken english :)</p>",
      "votes": -3,
      "replies": [
        {
          "id": 673638,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-15T09:04:45.903000",
          "content": "<p>haha, thank  you🙄</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1052487,
      "author_name": "DarkCube",
      "author_url": "",
      "post_date": "2020-10-17T19:30:24.327000",
      "content": "<p>you probably didn't expect to get a reply one year later 😆</p>\n<p>I just have a question. why do you think effnet didn't work?</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 675589,
      "author_name": "sabari nathan",
      "author_url": "",
      "post_date": "2019-11-18T09:12:36.200000",
      "content": "<p>Congratulations to you!. </p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 674611,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-11-16T19:22:54.023000",
      "content": "<p>congrats would look up the solution thanks saw it on linkedin</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 673778,
      "author_name": "takuoko",
      "author_url": "",
      "post_date": "2019-11-15T13:27:29.370000",
      "content": "<p>I updated with my code.</p>",
      "votes": 0,
      "replies": [
        {
          "id": 674486,
          "author_name": "Jaideep",
          "author_url": "",
          "post_date": "2019-11-16T15:02:08.420000",
          "content": "<p><a href=\"/takuok\">@takuok</a> congrats for becoming GM.\n1) .how studyinstance id different from series instanceUID. I saw people are using this also for sequencing i.e studyintanceId.\n2) What benefit you get when  u order by ImagePositionPatient2 \n3) in stacking what is done</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 676755,
          "author_name": "takuoko",
          "author_url": "",
          "post_date": "2019-11-19T13:36:18.480000",
          "content": "<ol>\n<li>I didn't use studyinstance.</li>\n<li>stage1 public LB 0.066-&gt;0.060. Ensemble with ImagePositionPatient2 model.</li>\n<li>sry what is the meaning of this question?</li>\n</ol>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 673817,
      "author_name": "Caesar Lupum",
      "author_url": "",
      "post_date": "2019-11-15T14:21:33.790000",
      "content": "<p>Wow ! Congrats! Thanks for sharing!</p>",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "672552": "## update\ncode is [here](https://github.com/okotaku/kaggle_rsna2019_3rd_solution).\n\nHi, dear kagglers. First of all, thank you very much RSNA and kaggle for hosting such a fantastic competition. And congrats winners and all kagglers:) \nI finally became kaggle Grandmaster. It was a super tough road but all experience made me stronger. I am very proud of it😆\n \nHere is my solution. I will write details in later parts and will share my github repo after I clean up it.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F841938%2Fbba0a58dc68950ba36d51fb210b8329c%2Fimage1.png?generation=1573695201895407&amp;alt=media)\n\nFinal model: private 0.045\nUser stacking model only: private 0.043 (I couldn't select it qq)\n\n## Special Preprocessing\n### windowing\nI used 2 types of windowing.\n- [subdural window](https://www.kaggle.com/c/rsna-intracranial-hemorrhage-detection/discussion/110728#latest-659011)\n- [Appian’s 3 types windows](https://github.com/appian42/kaggle-rsna-intracranial-hemorrhage/blob/master/src/cnn/dataset/custom_dataset.py#L16)\n\nFor me subdural was a little better.\n\n### concat user slice\nThis method gave me much improvement. There are some images (about20 - 40) in one SeriesInstanceUID. And when sorted by ImagePositionPatient2, you can see that targets are continuous. I will call those images, s1, s2, s3, ..., st, st+1, … in my post.\nHere is the example. You can see more details in [my kernel](https://www.kaggle.com/takuok/eda-of-rsna).\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F841938%2Fc11506e3c3a5c81bf6277b2963f5df83%2Fimage3.png?generation=1573695232477620&amp;alt=media)\n\nSo I decided to concat some images from the same SeriesInstanceUID. \n- st-1, st, st+1\n- st, st+1, st+2\n- st-2, st-1, st\n- st-2, st, st+2\n- np.mean (st-3, st-2, st-1), st, np.mean(st+1, st+2, st+3)\n- np.mean (st-5, st-4, st-3, st-2, st-1), st, np.mean(st+1, st+2, st+3, st+4, st+5)\n- np.mean (st-X for X in all values), st, np.mean(st+X for X in all values)\n\nThen predicted st’s target.\n\nAnd I tried multi task training.\n- st-1, st, st+1 then predict targets of st-1, st, st+1\n- st-2, st, st+2 then predict targets of st-2, st, st+2\n\nThis model got 0.060~0.062(sry I forgot) on stage1 Public. It was my best single model and those 2 models improved my ensemble score from 0.057 to 0.056 on stage1.\n\n## User Stacking\nI used “concat user slice” method to show models multiple slices of the user. And I used this method on ensemble parts. I call it User Stacking.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F841938%2F8599bb8cc52e1ebac3c14203f98e5427%2Fimage2.png?generation=1573695252564269&amp;alt=media)\n\n## Other things I used\n- They didn’t have much improvement, but I write up.\n- Appian’s 0.066 models\n- predict 5 classed and fill “any” on max prediction.\n- [CQ500 External Data](https://www.kaggle.com/c/rsna-intracranial-hemorrhage-detection/discussion/113339#latest-664918)\n- crop black area\n- retrain stage2 data\n- [generalized mean pooling](https://www.kaggle.com/c/aptos2019-blindness-detection/discussion/108065#latest-636669)\n\n## What didn’t work.\n- EfficientNet\n- Cbam Resnet\n\n*Slide design: Japanese Autumn leaves (紅葉: koyo)",
    "673615": "@takuok  Congratulations to you! \nI want to ask how did you concat st-1, st, st+1\nyour preprocessing contains three type windowing\nIs each of the images 3 * 512 * 512, did you concat to a rectangle image 3 * 512 * 1536  or what \n\nthank you very much.  congrats again for being a GM!",
    "673488": "congratulations!",
    "673420": "Congrats for becoming GM!!! And thank you for write up.\nI saw it was a competition with big shake up. I guess you trust your CV to get this result.",
    "673018": "Congratulations @takuok for becoming GM and for this competition. Looking forward for your repo.",
    "672980": "Congrats on the result and on becoming a GM! Looking forward to seeing the code :).",
    "672850": "Good job, double congrats to you @takuok  !!",
    "672798": "@takuok , double congratulations. I look forward to your code to reproduce the results.",
    "672761": "Hai Nice Job. Congrats! When you concat the images, did you also avoided concating the last and first images of two consecutive patients? If so how! Also what image size you used for single best model. Thanks!",
    "672754": "Congrats!",
    "672718": "Congratulations\nGreat Write-Up\nThanks for Sharing your Valuable Insights &amp; Approach @takuok ",
    "672660": "how about your best single model",
    "672641": "Congrats with GM !\nAnd great solution of course!",
    "672639": "Congrats! 👍 Looking forward for the repo.",
    "672605": "Congrats! nice write up. How did you concat the slices? blend/avg? if so, did you also blend the labels too? i.e. (0 + 0 + 1) = 0.33 positive?",
    "672589": "Congrats Takuoko!!!",
    "672583": "Very Nice! Congratulations and you deserve to become grandmaster! :-)",
    "672572": "Congrat @takuok !! I have been admired your performance ... Well deserve for a GM!!",
    "672569": "Congratulations on becoming GM, and the wonderful solution!  Thanks in advance for the repo.",
    "672555": "Congrats!",
    "672611": "Congrats to the New GMs! @takuok @lanjunyelan ",
    "672896": "congrats, I have to say, you need to practice your spoken english :)",
    "1052487": "you probably didn't expect to get a reply one year later 😆\n\nI just have a question. why do you think effnet didn't work?",
    "675589": "Congratulations to you!. ",
    "674611": "congrats would look up the solution thanks saw it on linkedin",
    "673778": "I updated with my code.",
    "673817": "Wow ! Congrats! Thanks for sharing!"
  }
}