{
  "id": 110361,
  "title": "16th place solution [0.988 private LB]",
  "url": "/competitions/recursion-cellular-image-classification/writeups/qumantum-chromodynamics-16th-place-solution-0-988-",
  "author_name": "",
  "post_date": "2019-09-27T07:15:52.463Z",
  "votes": 14,
  "comment_count": 1,
  "views": 0,
  "content": "<p></p>\n\n<p>First, I would like to thank Recursion Pharmaceuticals and Kaggle for organizing such an interesting competition. \nThen, I deeply appreciate <a href=\"https://www.kaggle.com/zaharch\">nosound</a> and <a href=\"https://www.kaggle.com/giuliasavorgnan\">Giulia Savorgnan</a> for reporting the plate leak. </p>\n\n<p>My solution is pretty simple.\nThe overview is shown in the figure above. (<strong>SORRY for my messy handwriting..</strong>)</p>\n\n<h2>Setup</h2>\n\n<ul>\n<li>I used cloud instances with some V100s.</li>\n<li>PyTorch</li>\n</ul>\n\n<h2>Data</h2>\n\n<ul>\n<li>6 channel, 512x512 input</li>\n<li>Contrast limited adaptive histogram equalization(CLAHE) is applied to some models</li>\n<li>Typical augmentation</li>\n</ul>\n\n<h2>Model</h2>\n\n<ul>\n<li>Basically cosFace with various backbones</li>\n<li>RAdam optimizer and cyclic learning rate</li>\n<li>Each site is treated separately</li>\n<li>2 stage training from <a href=\"https://www.kaggle.com/c/recursion-cellular-image-classification/discussion/100414#latest-634062\">this discussion</a></li>\n<li>Cross validation in 2nd stage training</li>\n</ul>\n\n<h2>Prediction</h2>\n\n<ul>\n<li>No<code>model.eval()</code> (this is due to difference between each experiment)</li>\n<li>Test time augmentation(TTA) is carried out 8 times for each image</li>\n<li>Predictions from both sites are averaged</li>\n<li>Soft voting</li>\n</ul>\n\n<h2>Post processing</h2>\n\n<ul>\n<li>Raw prediction is corrected in the same way <a href=\"https://www.kaggle.com/zaharch/keras-model-boosted-with-plates-leak\">this kernel</a> does</li>\n<li>Hungarian algorithm is used to remove duplicated prediction in each plate </li>\n</ul>\n\n<h2>What didn’t work</h2>\n\n<ul>\n<li>Mixup augmentation</li>\n<li>Control image ( I tried a two head model in which experiment image features are subtracted by control image features, but it performed worse)</li>\n</ul>\n\n<p>I really wanted to try pseudo labeling, which was likely to boost the score, but I didn’t manage to do that due to lack of time.</p>\n\n<p><strong>Finally, congratulations to the winners!</strong></p>\n\n<h1> </h1>\n\n<p>P.S.\nI work at <a href=\"https://aillis.jp\">Aillis Inc.</a>, a Japanese medical device startup developing advanced diagnosis device using throat images. We are hiring! Please contact me if you are interested.</p>",
  "messages": [
    {
      "id": "635018",
      "postDate": "09/27/2019 04:17:37",
      "content": "<p></p>\n\n<p>First, I would like to thank Recursion Pharmaceuticals and Kaggle for organizing such an interesting competition. \nThen, I deeply appreciate <a href=\"https://www.kaggle.com/zaharch\">nosound</a> and <a href=\"https://www.kaggle.com/giuliasavorgnan\">Giulia Savorgnan</a> for reporting the plate leak. </p>\n\n<p>My solution is pretty simple.\nThe overview is shown in the figure above. (<strong>SORRY for my messy handwriting..</strong>)</p>\n\n<h2>Setup</h2>\n\n<ul>\n<li>I used cloud instances with some V100s.</li>\n<li>PyTorch</li>\n</ul>\n\n<h2>Data</h2>\n\n<ul>\n<li>6 channel, 512x512 input</li>\n<li>Contrast limited adaptive histogram equalization(CLAHE) is applied to some models</li>\n<li>Typical augmentation</li>\n</ul>\n\n<h2>Model</h2>\n\n<ul>\n<li>Basically cosFace with various backbones</li>\n<li>RAdam optimizer and cyclic learning rate</li>\n<li>Each site is treated separately</li>\n<li>2 stage training from <a href=\"https://www.kaggle.com/c/recursion-cellular-image-classification/discussion/100414#latest-634062\">this discussion</a></li>\n<li>Cross validation in 2nd stage training</li>\n</ul>\n\n<h2>Prediction</h2>\n\n<ul>\n<li>No<code>model.eval()</code> (this is due to difference between each experiment)</li>\n<li>Test time augmentation(TTA) is carried out 8 times for each image</li>\n<li>Predictions from both sites are averaged</li>\n<li>Soft voting</li>\n</ul>\n\n<h2>Post processing</h2>\n\n<ul>\n<li>Raw prediction is corrected in the same way <a href=\"https://www.kaggle.com/zaharch/keras-model-boosted-with-plates-leak\">this kernel</a> does</li>\n<li>Hungarian algorithm is used to remove duplicated prediction in each plate </li>\n</ul>\n\n<h2>What didn’t work</h2>\n\n<ul>\n<li>Mixup augmentation</li>\n<li>Control image ( I tried a two head model in which experiment image features are subtracted by control image features, but it performed worse)</li>\n</ul>\n\n<p>I really wanted to try pseudo labeling, which was likely to boost the score, but I didn’t manage to do that due to lack of time.</p>\n\n<p><strong>Finally, congratulations to the winners!</strong></p>\n\n<h1> </h1>\n\n<p>P.S.\nI work at <a href=\"https://aillis.jp\">Aillis Inc.</a>, a Japanese medical device startup developing advanced diagnosis device using throat images. We are hiring! Please contact me if you are interested.</p>",
      "rawMarkdown": "<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1973217%2Fa164226840e80b9ee816a3dffde2f5d5%2FIMG_0149.PNG?generation=1569556984852607&amp;alt=media\" width=\"400px\">\n\nFirst, I would like to thank Recursion Pharmaceuticals and Kaggle for organizing such an interesting competition. \nThen, I deeply appreciate [nosound](https://www.kaggle.com/zaharch) and [Giulia Savorgnan](https://www.kaggle.com/giuliasavorgnan) for reporting the plate leak. \n\nMy solution is pretty simple.\nThe overview is shown in the figure above. (**SORRY for my messy handwriting..**)\n\n## Setup\n- I used cloud instances with some V100s.\n- PyTorch\n\n## Data\n- 6 channel, 512x512 input\n- Contrast limited adaptive histogram equalization(CLAHE) is applied to some models\n- Typical augmentation\n\n## Model\n- Basically cosFace with various backbones\n- RAdam optimizer and cyclic learning rate\n- Each site is treated separately\n- 2 stage training from [this discussion](https://www.kaggle.com/c/recursion-cellular-image-classification/discussion/100414#latest-634062)\n- Cross validation in 2nd stage training\n\n## Prediction\n- No```model.eval()``` (this is due to difference between each experiment)\n- Test time augmentation(TTA) is carried out 8 times for each image\n- Predictions from both sites are averaged\n- Soft voting\n\n## Post processing \n- Raw prediction is corrected in the same way [this kernel](https://www.kaggle.com/zaharch/keras-model-boosted-with-plates-leak) does\n- Hungarian algorithm is used to remove duplicated prediction in each plate \n\n## What didn’t work\n- Mixup augmentation\n- Control image ( I tried a two head model in which experiment image features are subtracted by control image features, but it performed worse)\n\nI really wanted to try pseudo labeling, which was likely to boost the score, but I didn’t manage to do that due to lack of time.\n\n**Finally, congratulations to the winners!**\n\n\n# \nP.S.\nI work at [Aillis Inc.](https://aillis.jp), a Japanese medical device startup developing advanced diagnosis device using throat images. We are hiring! Please contact me if you are interested.",
      "votes": null
    },
    {
      "id": "635025",
      "postDate": "09/27/2019 04:47:26",
      "content": "<p>Congrats....\nThank you for Sharing your Approach &amp; Insights...!! <a href=\"/analokamus\">@analokamus</a> </p>",
      "rawMarkdown": "Congrats....\nThank you for Sharing your Approach &amp; Insights...!! @analokamus",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 635025,
      "author_name": "veeralakrishna",
      "author_url": "",
      "post_date": "09/27/2019 04:47:26",
      "content": "<p>Congrats....\nThank you for Sharing your Approach &amp; Insights...!! <a href=\"/analokamus\">@analokamus</a> </p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "635018": "<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F1973217%2Fa164226840e80b9ee816a3dffde2f5d5%2FIMG_0149.PNG?generation=1569556984852607&amp;alt=media\" width=\"400px\">\n\nFirst, I would like to thank Recursion Pharmaceuticals and Kaggle for organizing such an interesting competition. \nThen, I deeply appreciate [nosound](https://www.kaggle.com/zaharch) and [Giulia Savorgnan](https://www.kaggle.com/giuliasavorgnan) for reporting the plate leak. \n\nMy solution is pretty simple.\nThe overview is shown in the figure above. (**SORRY for my messy handwriting..**)\n\n## Setup\n- I used cloud instances with some V100s.\n- PyTorch\n\n## Data\n- 6 channel, 512x512 input\n- Contrast limited adaptive histogram equalization(CLAHE) is applied to some models\n- Typical augmentation\n\n## Model\n- Basically cosFace with various backbones\n- RAdam optimizer and cyclic learning rate\n- Each site is treated separately\n- 2 stage training from [this discussion](https://www.kaggle.com/c/recursion-cellular-image-classification/discussion/100414#latest-634062)\n- Cross validation in 2nd stage training\n\n## Prediction\n- No```model.eval()``` (this is due to difference between each experiment)\n- Test time augmentation(TTA) is carried out 8 times for each image\n- Predictions from both sites are averaged\n- Soft voting\n\n## Post processing \n- Raw prediction is corrected in the same way [this kernel](https://www.kaggle.com/zaharch/keras-model-boosted-with-plates-leak) does\n- Hungarian algorithm is used to remove duplicated prediction in each plate \n\n## What didn’t work\n- Mixup augmentation\n- Control image ( I tried a two head model in which experiment image features are subtracted by control image features, but it performed worse)\n\nI really wanted to try pseudo labeling, which was likely to boost the score, but I didn’t manage to do that due to lack of time.\n\n**Finally, congratulations to the winners!**\n\n\n# \nP.S.\nI work at [Aillis Inc.](https://aillis.jp), a Japanese medical device startup developing advanced diagnosis device using throat images. We are hiring! Please contact me if you are interested.",
    "635025": "Congrats....\nThank you for Sharing your Approach &amp; Insights...!! @analokamus"
  },
  "source": "meta"
}