{
  "id": 40107,
  "title": "0.9970 Solution",
  "url": "/competitions/carvana-image-masking-challenge/discussion/40107",
  "author_name": "",
  "post_date": "2017-09-27T20:37:48.461330400Z",
  "votes": 35,
  "comment_count": 8,
  "views": 0,
  "content": "<p>Hi guys,</p>\n\n<p>Here I will breifly describe my approach which I used to make 0.9970 (public and private LB).</p>\n\n<ol>\n<li><strong>Framework:</strong> Pytorch</li>\n<li><strong>Network:</strong>  Segnet based on VGG16 with batchnorm</li>\n<li><strong>Training:</strong> random crops 768x768, rotation ±10 deg, horizontal flip, scaling ±20</li>\n<li><strong>Inference:</strong> 1920x1280 (made padding+2 to the image width)</li>\n<li><strong>Validation:</strong> each car was assigned an ID which were eventually used to make GroupKFold split (5 folds). The intuition behind this is <strong>to not have the same cars in train and test folds</strong></li>\n<li><strong>Test set predictions:</strong> average of 5 folds predictions with TTA (flips).</li>\n<li><strong>Hardware:</strong> To make this to work, you need at least 4x1080.</li>\n</ol>\n\n<p>Have fun :-)</p>",
  "messages": [
    {
      "id": "224877",
      "postDate": "09/27/2017 20:37:48",
      "content": "<p>Hi guys,</p>\n\n<p>Here I will breifly describe my approach which I used to make 0.9970 (public and private LB).</p>\n\n<ol>\n<li><strong>Framework:</strong> Pytorch</li>\n<li><strong>Network:</strong>  Segnet based on VGG16 with batchnorm</li>\n<li><strong>Training:</strong> random crops 768x768, rotation ±10 deg, horizontal flip, scaling ±20</li>\n<li><strong>Inference:</strong> 1920x1280 (made padding+2 to the image width)</li>\n<li><strong>Validation:</strong> each car was assigned an ID which were eventually used to make GroupKFold split (5 folds). The intuition behind this is <strong>to not have the same cars in train and test folds</strong></li>\n<li><strong>Test set predictions:</strong> average of 5 folds predictions with TTA (flips).</li>\n<li><strong>Hardware:</strong> To make this to work, you need at least 4x1080.</li>\n</ol>\n\n<p>Have fun :-)</p>",
      "rawMarkdown": "Hi guys,\n\nHere I will breifly describe my approach which I used to make 0.9970 (public and private LB).\n\n 1. **Framework:** Pytorch\n 2. **Network:**  Segnet based on VGG16 with batchnorm\n 3. **Training:** random crops 768x768, rotation ±10 deg, horizontal flip, scaling ±20\n 4. **Inference:** 1920x1280 (made padding+2 to the image width)\n 5. **Validation:** each car was assigned an ID which were eventually used to make GroupKFold split (5 folds). The intuition behind this is **to not have the same cars in train and test folds**\n 6. **Test set predictions:** average of 5 folds predictions with TTA (flips).\n 7. **Hardware:** To make this to work, you need at least 4x1080.\n\nHave fun :-)",
      "votes": null
    },
    {
      "id": "224880",
      "postDate": "09/27/2017 20:44:23",
      "content": "<p>An easy improvement to the validation strategy would be to stratify by car size (you can rely on your predictions total area for each car) and color (there is a kernel that explains how to detect car colors: <a href=\"https://www.kaggle.com/paulorzp/getting-a-car-color\">https://www.kaggle.com/paulorzp/getting-a-car-color</a>). </p>\n\n<p>Makes sense to include enough whites in every fold (details here: <a href=\"https://www.kaggle.com/c/carvana-image-masking-challenge/discussion/39948\">https://www.kaggle.com/c/carvana-image-masking-challenge/discussion/39948</a>).</p>",
      "rawMarkdown": "An easy improvement to the validation strategy would be to stratify by car size (you can rely on your predictions total area for each car) and color (there is a kernel that explains how to detect car colors: https://www.kaggle.com/paulorzp/getting-a-car-color). \n\nMakes sense to include enough whites in every fold (details here: https://www.kaggle.com/c/carvana-image-masking-challenge/discussion/39948).",
      "votes": null
    },
    {
      "id": "224912",
      "postDate": "09/27/2017 22:53:50",
      "content": "<p>Thanks! </p>",
      "rawMarkdown": "Thanks!",
      "votes": null
    },
    {
      "id": "225035",
      "postDate": "09/28/2017 04:33:56",
      "content": "<p>Thanks for sharing! </p>\n\n<p>Did you used ensembling?</p>",
      "rawMarkdown": "Thanks for sharing! \n\nDid you used ensembling?",
      "votes": null
    },
    {
      "id": "225052",
      "postDate": "09/28/2017 05:18:50",
      "content": "<p>5 flods average and TTA</p>",
      "rawMarkdown": "5 flods average and TTA",
      "votes": null
    },
    {
      "id": "225062",
      "postDate": "09/28/2017 06:15:14",
      "content": "<p>Hi Aleksei,\nThanks for sharing the solution.\nCan you please explain the process of TTA in brief? \nDo we take various predictions with different augmentation and average them or do prediction on Augmented test set.</p>",
      "rawMarkdown": "Hi Aleksei,\nThanks for sharing the solution.\nCan you please explain the process of TTA in brief? \nDo we take various predictions with different augmentation and average them or do prediction on Augmented test set.",
      "votes": null
    },
    {
      "id": "225067",
      "postDate": "09/28/2017 06:43:28",
      "content": "<p>I just predicted the masks for the original images as well as for the horizontally flipped ones. Then those masks were averaged to produce the final images.</p>\n\n<p>To make it crystal clear: flipped predictions were flipped back :-)</p>",
      "rawMarkdown": "I just predicted the masks for the original images as well as for the horizontally flipped ones. Then those masks were averaged to produce the final images.\n\nTo make it crystal clear: flipped predictions were flipped back :-)",
      "votes": null
    },
    {
      "id": "225068",
      "postDate": "09/28/2017 06:45:06",
      "content": "<p>Unfortunately this result came too late and our team did not have anymore submissions before the end of the competition.  Anyway, it seems, that the winning strategy was to use pre-trained decoder.</p>",
      "rawMarkdown": "Unfortunately this result came too late and our team did not have anymore submissions before the end of the competition.  Anyway, it seems, that the winning strategy was to use pre-trained decoder.",
      "votes": null
    },
    {
      "id": "225366",
      "postDate": "09/28/2017 20:51:17",
      "content": "<p>Thanks @Aleksei for sharing and congratulations.</p>",
      "rawMarkdown": "Thanks @Aleksei for sharing and congratulations.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 224880,
      "author_name": "killthekitten",
      "author_url": "",
      "post_date": "09/27/2017 20:44:23",
      "content": "<p>An easy improvement to the validation strategy would be to stratify by car size (you can rely on your predictions total area for each car) and color (there is a kernel that explains how to detect car colors: <a href=\"https://www.kaggle.com/paulorzp/getting-a-car-color\">https://www.kaggle.com/paulorzp/getting-a-car-color</a>). </p>\n\n<p>Makes sense to include enough whites in every fold (details here: <a href=\"https://www.kaggle.com/c/carvana-image-masking-challenge/discussion/39948\">https://www.kaggle.com/c/carvana-image-masking-challenge/discussion/39948</a>).</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 224912,
      "author_name": "hengck23",
      "author_url": "",
      "post_date": "09/27/2017 22:53:50",
      "content": "<p>Thanks! </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 225035,
      "author_name": "ironbar",
      "author_url": "",
      "post_date": "09/28/2017 04:33:56",
      "content": "<p>Thanks for sharing! </p>\n\n<p>Did you used ensembling?</p>",
      "votes": null,
      "replies": [
        {
          "id": 225052,
          "author_name": "alekseit",
          "author_url": "",
          "post_date": "09/28/2017 05:18:50",
          "content": "<p>5 flods average and TTA</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 225062,
      "author_name": "syeddanish",
      "author_url": "",
      "post_date": "09/28/2017 06:15:14",
      "content": "<p>Hi Aleksei,\nThanks for sharing the solution.\nCan you please explain the process of TTA in brief? \nDo we take various predictions with different augmentation and average them or do prediction on Augmented test set.</p>",
      "votes": null,
      "replies": [
        {
          "id": 225067,
          "author_name": "alekseit",
          "author_url": "",
          "post_date": "09/28/2017 06:43:28",
          "content": "<p>I just predicted the masks for the original images as well as for the horizontally flipped ones. Then those masks were averaged to produce the final images.</p>\n\n<p>To make it crystal clear: flipped predictions were flipped back :-)</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 225068,
      "author_name": "alekseit",
      "author_url": "",
      "post_date": "09/28/2017 06:45:06",
      "content": "<p>Unfortunately this result came too late and our team did not have anymore submissions before the end of the competition.  Anyway, it seems, that the winning strategy was to use pre-trained decoder.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 225366,
      "author_name": "sheriytm",
      "author_url": "",
      "post_date": "09/28/2017 20:51:17",
      "content": "<p>Thanks @Aleksei for sharing and congratulations.</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "224877": "Hi guys,\n\nHere I will breifly describe my approach which I used to make 0.9970 (public and private LB).\n\n 1. **Framework:** Pytorch\n 2. **Network:**  Segnet based on VGG16 with batchnorm\n 3. **Training:** random crops 768x768, rotation ±10 deg, horizontal flip, scaling ±20\n 4. **Inference:** 1920x1280 (made padding+2 to the image width)\n 5. **Validation:** each car was assigned an ID which were eventually used to make GroupKFold split (5 folds). The intuition behind this is **to not have the same cars in train and test folds**\n 6. **Test set predictions:** average of 5 folds predictions with TTA (flips).\n 7. **Hardware:** To make this to work, you need at least 4x1080.\n\nHave fun :-)",
    "224880": "An easy improvement to the validation strategy would be to stratify by car size (you can rely on your predictions total area for each car) and color (there is a kernel that explains how to detect car colors: https://www.kaggle.com/paulorzp/getting-a-car-color). \n\nMakes sense to include enough whites in every fold (details here: https://www.kaggle.com/c/carvana-image-masking-challenge/discussion/39948).",
    "224912": "Thanks!",
    "225035": "Thanks for sharing! \n\nDid you used ensembling?",
    "225052": "5 flods average and TTA",
    "225062": "Hi Aleksei,\nThanks for sharing the solution.\nCan you please explain the process of TTA in brief? \nDo we take various predictions with different augmentation and average them or do prediction on Augmented test set.",
    "225067": "I just predicted the masks for the original images as well as for the horizontally flipped ones. Then those masks were averaged to produce the final images.\n\nTo make it crystal clear: flipped predictions were flipped back :-)",
    "225068": "Unfortunately this result came too late and our team did not have anymore submissions before the end of the competition.  Anyway, it seems, that the winning strategy was to use pre-trained decoder.",
    "225366": "Thanks @Aleksei for sharing and congratulations."
  },
  "source": "meta"
}