{
  "id": 49334,
  "title": "5th place solution",
  "url": "/competitions/sp-society-camera-model-identification/writeups/ods-ai-10011000-5th-place-solution",
  "author_name": "",
  "post_date": "2018-02-09T15:08:01.517642500Z",
  "votes": 35,
  "comment_count": 2,
  "views": 0,
  "content": "<p>Our solution is pretty simple.</p>\n\n<p>We trained several different CNN models and blended them. We were using imagenet weights for initialization and manipulations described on the Data page for augmentation.</p>\n\n<p><strong>Key features:</strong></p>\n\n<ul>\n<li>224x224 random crops</li>\n<li>TTA 11: all manipulations and rotates with geometric mean</li>\n<li>Additional data (40k images from flickr which were filtered only by resolution)</li>\n<li>Good predictions postprocessing (+3% accuracy)</li>\n</ul>\n\n<p>One epoch takes only 8 minutes because of small crops. It allowed us to train several different models: Resnet50, Resnet101, Densenet121, Densenet201, Xception, Resnext101. Each one achieves 0.975-0.982 on private LB. Our final submission is just mode blend of these models :)</p>\n\n<p>I uploaded all code to github repo: <a href=\"https://github.com/PavelOstyakov/camera_identification\">https://github.com/PavelOstyakov/camera_identification</a></p>\n\n<p>There you can find an instruction how to train a model. I also uploaded weights for Resnet50. You can easily generate a submission which gives 0.98 on private LB.</p>\n\n<p>Thanks to all participants and congratulations to the winners! It was a funny competition :)</p>\n\n<p>Good luck in next competitions!</p>",
  "messages": [
    {
      "id": "280209",
      "postDate": "02/09/2018 15:08:01",
      "content": "<p>Our solution is pretty simple.</p>\n\n<p>We trained several different CNN models and blended them. We were using imagenet weights for initialization and manipulations described on the Data page for augmentation.</p>\n\n<p><strong>Key features:</strong></p>\n\n<ul>\n<li>224x224 random crops</li>\n<li>TTA 11: all manipulations and rotates with geometric mean</li>\n<li>Additional data (40k images from flickr which were filtered only by resolution)</li>\n<li>Good predictions postprocessing (+3% accuracy)</li>\n</ul>\n\n<p>One epoch takes only 8 minutes because of small crops. It allowed us to train several different models: Resnet50, Resnet101, Densenet121, Densenet201, Xception, Resnext101. Each one achieves 0.975-0.982 on private LB. Our final submission is just mode blend of these models :)</p>\n\n<p>I uploaded all code to github repo: <a href=\"https://github.com/PavelOstyakov/camera_identification\">https://github.com/PavelOstyakov/camera_identification</a></p>\n\n<p>There you can find an instruction how to train a model. I also uploaded weights for Resnet50. You can easily generate a submission which gives 0.98 on private LB.</p>\n\n<p>Thanks to all participants and congratulations to the winners! It was a funny competition :)</p>\n\n<p>Good luck in next competitions!</p>",
      "rawMarkdown": "Our solution is pretty simple.\n\nWe trained several different CNN models and blended them. We were using imagenet weights for initialization and manipulations described on the Data page for augmentation.\n\n**Key features:**\n\n  - 224x224 random crops\n  - TTA 11: all manipulations and rotates with geometric mean\n  - Additional data (40k images from flickr which were filtered only by resolution)\n  - Good predictions postprocessing (+3% accuracy)\n\nOne epoch takes only 8 minutes because of small crops. It allowed us to train several different models: Resnet50, Resnet101, Densenet121, Densenet201, Xception, Resnext101. Each one achieves 0.975-0.982 on private LB. Our final submission is just mode blend of these models :)\n\nI uploaded all code to github repo: https://github.com/PavelOstyakov/camera_identification\n\nThere you can find an instruction how to train a model. I also uploaded weights for Resnet50. You can easily generate a submission which gives 0.98 on private LB.\n\nThanks to all participants and congratulations to the winners! It was a funny competition :)\n\nGood luck in next competitions!",
      "votes": null
    },
    {
      "id": "280435",
      "postDate": "02/10/2018 01:10:04",
      "content": "<p>Thanks for sharing. I would like to try to reproduce the results. Any chance you can share the URLs of the additional flickr images? </p>",
      "rawMarkdown": "Thanks for sharing. I would like to try to reproduce the results. Any chance you can share the URLs of the additional flickr images?",
      "votes": null
    },
    {
      "id": "280443",
      "postDate": "02/10/2018 01:44:30",
      "content": "<blockquote>\n  <p>TTA 11: all manipulations and rotates with geometric mean</p>\n</blockquote>\n\n<p>Does \"TTA X\" mean you used X+1 images during TTA? (8 manipulations + 3 rotations + original image)</p>\n\n<blockquote>\n  <p>Good predictions postprocessing (+3% accuracy)</p>\n</blockquote>\n\n<p>Does \"postprocessing\" refer to TTA + blending? How about <a href=\"https://www.kaggle.com/c/sp-society-camera-model-identification/discussion/49320\">MCF</a>? </p>\n\n<p>Thank you for sharing your code, and for this distilled solution description.</p>",
      "rawMarkdown": "&gt; TTA 11: all manipulations and rotates with geometric mean\n\nDoes \"TTA X\" mean you used X+1 images during TTA? (8 manipulations + 3 rotations + original image)\n\n&gt; Good predictions postprocessing (+3% accuracy)\n\nDoes \"postprocessing\" refer to TTA + blending? How about [MCF][1]? \n\nThank you for sharing your code, and for this distilled solution description.\n\n\n  [1]: https://www.kaggle.com/c/sp-society-camera-model-identification/discussion/49320",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 280435,
      "author_name": "albertoa",
      "author_url": "",
      "post_date": "02/10/2018 01:10:04",
      "content": "<p>Thanks for sharing. I would like to try to reproduce the results. Any chance you can share the URLs of the additional flickr images? </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 280443,
      "author_name": "kleinsmith",
      "author_url": "",
      "post_date": "02/10/2018 01:44:30",
      "content": "<blockquote>\n  <p>TTA 11: all manipulations and rotates with geometric mean</p>\n</blockquote>\n\n<p>Does \"TTA X\" mean you used X+1 images during TTA? (8 manipulations + 3 rotations + original image)</p>\n\n<blockquote>\n  <p>Good predictions postprocessing (+3% accuracy)</p>\n</blockquote>\n\n<p>Does \"postprocessing\" refer to TTA + blending? How about <a href=\"https://www.kaggle.com/c/sp-society-camera-model-identification/discussion/49320\">MCF</a>? </p>\n\n<p>Thank you for sharing your code, and for this distilled solution description.</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "280209": "Our solution is pretty simple.\n\nWe trained several different CNN models and blended them. We were using imagenet weights for initialization and manipulations described on the Data page for augmentation.\n\n**Key features:**\n\n  - 224x224 random crops\n  - TTA 11: all manipulations and rotates with geometric mean\n  - Additional data (40k images from flickr which were filtered only by resolution)\n  - Good predictions postprocessing (+3% accuracy)\n\nOne epoch takes only 8 minutes because of small crops. It allowed us to train several different models: Resnet50, Resnet101, Densenet121, Densenet201, Xception, Resnext101. Each one achieves 0.975-0.982 on private LB. Our final submission is just mode blend of these models :)\n\nI uploaded all code to github repo: https://github.com/PavelOstyakov/camera_identification\n\nThere you can find an instruction how to train a model. I also uploaded weights for Resnet50. You can easily generate a submission which gives 0.98 on private LB.\n\nThanks to all participants and congratulations to the winners! It was a funny competition :)\n\nGood luck in next competitions!",
    "280435": "Thanks for sharing. I would like to try to reproduce the results. Any chance you can share the URLs of the additional flickr images?",
    "280443": "&gt; TTA 11: all manipulations and rotates with geometric mean\n\nDoes \"TTA X\" mean you used X+1 images during TTA? (8 manipulations + 3 rotations + original image)\n\n&gt; Good predictions postprocessing (+3% accuracy)\n\nDoes \"postprocessing\" refer to TTA + blending? How about [MCF][1]? \n\nThank you for sharing your code, and for this distilled solution description.\n\n\n  [1]: https://www.kaggle.com/c/sp-society-camera-model-identification/discussion/49320"
  },
  "source": "meta"
}