{
  "id": 110444,
  "title": "41st place pytorch solution",
  "url": "/competitions/recursion-cellular-image-classification/discussion/110444",
  "author_name": "Yurii Rebryk",
  "post_date": "2019-09-27T22:01:54.769000",
  "votes": 11,
  "comment_count": 1,
  "views": 0,
  "content": "<p><strong>1. Data</strong>\n- 6 channels</p>\n\n<p><strong>2. Augmentation</strong>\n- RandomScale, Rotate, HorizontalFlip, VerticalFlip, Resize, RandomBrightnessContrast, RandomGamma, Normalize</p>\n\n<p><strong>3. Model design</strong></p>\n\n<ul>\n<li>Backbone: DenseNet201 pretrained on ImageNet</li>\n<li>Head: 2 linear layers with batch normalization</li>\n</ul>\n\n<p><strong>4. Loss</strong>\n- Binary Cross Entropy Loss</p>\n\n<p><strong>5. Training</strong></p>\n\n<ul>\n<li>Optimizer: Adam</li>\n<li>Different learning rates for different layers</li>\n<li>Image size: 512</li>\n<li>Batch size: 64</li>\n<li>Epochs: 75</li>\n<li>Finetuning for each cell type</li>\n<li>Mixed precision</li>\n</ul>\n\n<p><strong>6. Prediciton</strong></p>\n\n<ul>\n<li>TTA: 10</li>\n<li>Use embeddings instead of final probability scores</li>\n<li>Run k-Nearest Neighbors for each cell type separately</li>\n<li><strong>Hungarian algorithm is used to match cell types with plates, wells with siRNAs</strong></li>\n</ul>\n\n<p><strong>7. Result</strong></p>\n\n<ul>\n<li>Public LB: 0.701</li>\n<li>Private LB: 0.959</li>\n</ul>\n\n<p><strong>8. Observations</strong></p>\n\n<ul>\n<li>I didn't manage to leverage ArcFace :(</li>\n<li><strong>Hungarian algorithm boosted score a lot</strong></li>\n<li>TTA helps too</li>\n</ul>\n\n<p>GitHub link: <a href=\"https://github.com/rebryk/kaggle/tree/master/recursion-cellular\">https://github.com/rebryk/kaggle/tree/master/recursion-cellular</a></p>",
  "messages": [
    {
      "id": 635589,
      "postDate": "2019-09-27T22:01:54.770Z",
      "content": "<p><strong>1. Data</strong>\n- 6 channels</p>\n\n<p><strong>2. Augmentation</strong>\n- RandomScale, Rotate, HorizontalFlip, VerticalFlip, Resize, RandomBrightnessContrast, RandomGamma, Normalize</p>\n\n<p><strong>3. Model design</strong></p>\n\n<ul>\n<li>Backbone: DenseNet201 pretrained on ImageNet</li>\n<li>Head: 2 linear layers with batch normalization</li>\n</ul>\n\n<p><strong>4. Loss</strong>\n- Binary Cross Entropy Loss</p>\n\n<p><strong>5. Training</strong></p>\n\n<ul>\n<li>Optimizer: Adam</li>\n<li>Different learning rates for different layers</li>\n<li>Image size: 512</li>\n<li>Batch size: 64</li>\n<li>Epochs: 75</li>\n<li>Finetuning for each cell type</li>\n<li>Mixed precision</li>\n</ul>\n\n<p><strong>6. Prediciton</strong></p>\n\n<ul>\n<li>TTA: 10</li>\n<li>Use embeddings instead of final probability scores</li>\n<li>Run k-Nearest Neighbors for each cell type separately</li>\n<li><strong>Hungarian algorithm is used to match cell types with plates, wells with siRNAs</strong></li>\n</ul>\n\n<p><strong>7. Result</strong></p>\n\n<ul>\n<li>Public LB: 0.701</li>\n<li>Private LB: 0.959</li>\n</ul>\n\n<p><strong>8. Observations</strong></p>\n\n<ul>\n<li>I didn't manage to leverage ArcFace :(</li>\n<li><strong>Hungarian algorithm boosted score a lot</strong></li>\n<li>TTA helps too</li>\n</ul>\n\n<p>GitHub link: <a href=\"https://github.com/rebryk/kaggle/tree/master/recursion-cellular\">https://github.com/rebryk/kaggle/tree/master/recursion-cellular</a></p>",
      "rawMarkdown": "**1. Data**\n- 6 channels\n\n**2. Augmentation**\n- RandomScale, Rotate, HorizontalFlip, VerticalFlip, Resize, RandomBrightnessContrast, RandomGamma, Normalize\n\n**3. Model design**\n\n- Backbone: DenseNet201 pretrained on ImageNet\n- Head: 2 linear layers with batch normalization\n\n**4. Loss**\n- Binary Cross Entropy Loss\n\n**5. Training**\n\n- Optimizer: Adam\n- Different learning rates for different layers\n- Image size: 512\n- Batch size: 64\n- Epochs: 75\n- Finetuning for each cell type\n- Mixed precision\n\n**6. Prediciton**\n\n- TTA: 10\n- Use embeddings instead of final probability scores\n- Run k-Nearest Neighbors for each cell type separately\n- **Hungarian algorithm is used to match cell types with plates, wells with siRNAs**\n\n**7. Result**\n\n- Public LB: 0.701\n- Private LB: 0.959\n\n**8. Observations**\n\n- I didn't manage to leverage ArcFace :(\n- **Hungarian algorithm boosted score a lot**\n- TTA helps too\n\nGitHub link: https://github.com/rebryk/kaggle/tree/master/recursion-cellular",
      "votes": 11
    },
    {
      "id": 635788,
      "postDate": "2019-09-28T08:00:00.457Z",
      "rawMarkdown": "",
      "isDeleted": true
    }
  ],
  "comments": [
    {
      "id": 635788,
      "author_name": "",
      "author_url": "",
      "post_date": "2019-09-28T08:00:00.457000",
      "content": "",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "635589": "**1. Data**\n- 6 channels\n\n**2. Augmentation**\n- RandomScale, Rotate, HorizontalFlip, VerticalFlip, Resize, RandomBrightnessContrast, RandomGamma, Normalize\n\n**3. Model design**\n\n- Backbone: DenseNet201 pretrained on ImageNet\n- Head: 2 linear layers with batch normalization\n\n**4. Loss**\n- Binary Cross Entropy Loss\n\n**5. Training**\n\n- Optimizer: Adam\n- Different learning rates for different layers\n- Image size: 512\n- Batch size: 64\n- Epochs: 75\n- Finetuning for each cell type\n- Mixed precision\n\n**6. Prediciton**\n\n- TTA: 10\n- Use embeddings instead of final probability scores\n- Run k-Nearest Neighbors for each cell type separately\n- **Hungarian algorithm is used to match cell types with plates, wells with siRNAs**\n\n**7. Result**\n\n- Public LB: 0.701\n- Private LB: 0.959\n\n**8. Observations**\n\n- I didn't manage to leverage ArcFace :(\n- **Hungarian algorithm boosted score a lot**\n- TTA helps too\n\nGitHub link: https://github.com/rebryk/kaggle/tree/master/recursion-cellular",
    "635788": ""
  }
}