{
  "id": 95238,
  "title": "18 place write up  (short meditation on results)",
  "url": "/competitions/imaterialist-fashion-2019-FGVC6/writeups/ods-ai-pavel-petrochenko-18-place-write-up-short-m",
  "author_name": "",
  "post_date": "2019-06-11T00:50:14.423164400Z",
  "votes": 10,
  "comment_count": 7,
  "views": 0,
  "content": "<p>This is our short meditation on our results at strategy:</p>\n\n<ol>\n<li><p>r101 mask rcnn 1024x1024 (1 fold, it took 5 days  on our machine)</p></li>\n<li><p>ansemble predictions from multiple snapshots of r101 mask rcnn (select prediction with highest confidence, when multiple predictions overlap)</p></li>\n<li><p>Train several multiclass classifiers (xception,resnext,densenet) two detect if particular object classes present on image. Fins optimal treshold for discarding predictions from mask rcnn. <a href=\"https://github.com/musket-ml/classification_training_pipeline\">Our Classification Pipeline</a></p></li>\n<li><p>Train a lot of segmentation networks at least one per class to refine masks from mask rcnn (<a href=\"https://github.com/musket-ml/segmentation_training_pipeline\">Segmentation Pipeline</a>) -&gt; This was our main source of improvements.</p></li>\n</ol>\n\n<p>At the same time we were desperately trying to find solution for attributes. Initially nothing worked. But later we have used following approach:</p>\n\n<p>Take a mask crop and a full image, and feed them in two independent inputs of image classifier, with multiple outputs per independent attribute groups (we have found them by analizing attribute co occurances, and assuming that sometimes coocurences labeling errors).</p>\n\n<p>Train a lot of such classifiers, then take only those objects for which 75% of classifiers agree with the result of blend and also when most of them are doing confident predictions.</p>\n\n<p>This gave us very slight improvement of our score (~0.00500 in total) </p>\n\n<p><strong>Errors:</strong></p>\n\n<ul>\n<li>Spending our pretty limited resources on attributes was a big error.</li>\n<li>We did not actually realised and used full potential of mask rcnn :-(. Our initially high place on leaderboard, gave us false feeling that we used most of its potential. </li>\n</ul>\n\n<p><strong>Resources</strong></p>\n\n<p>We have used: 2x1080Ti on my machine, 2x1080Ti on Denis machine  and 1080 on Konst machine. </p>\n\n<p>Regards,\nPavel</p>",
  "messages": [
    {
      "id": "549716",
      "postDate": "06/11/2019 00:50:14",
      "content": "<p>This is our short meditation on our results at strategy:</p>\n\n<ol>\n<li><p>r101 mask rcnn 1024x1024 (1 fold, it took 5 days  on our machine)</p></li>\n<li><p>ansemble predictions from multiple snapshots of r101 mask rcnn (select prediction with highest confidence, when multiple predictions overlap)</p></li>\n<li><p>Train several multiclass classifiers (xception,resnext,densenet) two detect if particular object classes present on image. Fins optimal treshold for discarding predictions from mask rcnn. <a href=\"https://github.com/musket-ml/classification_training_pipeline\">Our Classification Pipeline</a></p></li>\n<li><p>Train a lot of segmentation networks at least one per class to refine masks from mask rcnn (<a href=\"https://github.com/musket-ml/segmentation_training_pipeline\">Segmentation Pipeline</a>) -&gt; This was our main source of improvements.</p></li>\n</ol>\n\n<p>At the same time we were desperately trying to find solution for attributes. Initially nothing worked. But later we have used following approach:</p>\n\n<p>Take a mask crop and a full image, and feed them in two independent inputs of image classifier, with multiple outputs per independent attribute groups (we have found them by analizing attribute co occurances, and assuming that sometimes coocurences labeling errors).</p>\n\n<p>Train a lot of such classifiers, then take only those objects for which 75% of classifiers agree with the result of blend and also when most of them are doing confident predictions.</p>\n\n<p>This gave us very slight improvement of our score (~0.00500 in total) </p>\n\n<p><strong>Errors:</strong></p>\n\n<ul>\n<li>Spending our pretty limited resources on attributes was a big error.</li>\n<li>We did not actually realised and used full potential of mask rcnn :-(. Our initially high place on leaderboard, gave us false feeling that we used most of its potential. </li>\n</ul>\n\n<p><strong>Resources</strong></p>\n\n<p>We have used: 2x1080Ti on my machine, 2x1080Ti on Denis machine  and 1080 on Konst machine. </p>\n\n<p>Regards,\nPavel</p>",
      "rawMarkdown": "This is our short meditation on our results at strategy:\n\n1.  r101 mask rcnn 1024x1024 (1 fold, it took 5 days  on our machine)\n\n2. ansemble predictions from multiple snapshots of r101 mask rcnn (select prediction with highest confidence, when multiple predictions overlap)\n\n3. Train several multiclass classifiers (xception,resnext,densenet) two detect if particular object classes present on image. Fins optimal treshold for discarding predictions from mask rcnn. [Our Classification Pipeline](https://github.com/musket-ml/classification_training_pipeline)\n\n4. Train a lot of segmentation networks at least one per class to refine masks from mask rcnn ([Segmentation Pipeline](https://github.com/musket-ml/segmentation_training_pipeline)) -&gt; This was our main source of improvements.\n\nAt the same time we were desperately trying to find solution for attributes. Initially nothing worked. But later we have used following approach:\n\nTake a mask crop and a full image, and feed them in two independent inputs of image classifier, with multiple outputs per independent attribute groups (we have found them by analizing attribute co occurances, and assuming that sometimes coocurences labeling errors).\n\nTrain a lot of such classifiers, then take only those objects for which 75% of classifiers agree with the result of blend and also when most of them are doing confident predictions.\n\nThis gave us very slight improvement of our score (~0.00500 in total) \n\n**Errors:**\n\n- Spending our pretty limited resources on attributes was a big error.\n- We did not actually realised and used full potential of mask rcnn :-(. Our initially high place on leaderboard, gave us false feeling that we used most of its potential. \n\n**Resources**\n\nWe have used: 2x1080Ti on my machine, 2x1080Ti on Denis machine  and 1080 on Konst machine. \n\n\nRegards,\nPavel",
      "votes": null
    },
    {
      "id": "549802",
      "postDate": "06/11/2019 03:51:44",
      "content": "<p>Many thanks for sharing your solutions. Congratulations! :-)</p>",
      "rawMarkdown": "Many thanks for sharing your solutions. Congratulations! :-)",
      "votes": null
    },
    {
      "id": "549991",
      "postDate": "06/11/2019 07:48:57",
      "content": "<p>Nice solution! Congratulations for the results.</p>",
      "rawMarkdown": "Nice solution! Congratulations for the results.",
      "votes": null
    },
    {
      "id": "550684",
      "postDate": "06/11/2019 23:22:44",
      "content": "<p>I do not actually think that it is nice. But I think that our errors/approach is pretty funny. </p>\n\n<p>What we  was doing is like using small dynamite bomb to destroy the mountain, and then applying a swarm of hammers in attempts to finish the job. But <strong>we did not realized that a larger dynamite bombs</strong> exists until it was to late to apply them. Yes they were expensive, but they were affordable for our team, if we spend our computation budget more carefully. Nice thing is that swarm of hammers work, weird thing is that till last week of competition we thought that most of the top guys on leader board are doing some magic with attributes.</p>\n\n<p>Conclusion: always check if you can buy larger bomb for your money</p>",
      "rawMarkdown": "I do not actually think that it is nice. But I think that our errors/approach is pretty funny. \n\nWhat we  was doing is like using small dynamite bomb to destroy the mountain, and then applying a swarm of hammers in attempts to finish the job. But **we did not realized that a larger dynamite bombs** exists until it was to late to apply them. Yes they were expensive, but they were affordable for our team, if we spend our computation budget more carefully. Nice thing is that swarm of hammers work, weird thing is that till last week of competition we thought that most of the top guys on leader board are doing some magic with attributes.\n\nConclusion: always check if you can buy larger bomb for your money",
      "votes": null
    },
    {
      "id": "550760",
      "postDate": "06/12/2019 02:23:18",
      "content": "<p>Hi <a href=\"/realityfaker\">@realityfaker</a>  Thank you for sharing your solution! Will you attend CVPR2019 this year? <a href=\"https://sites.google.com/view/fgvc6/program?authuser=0\">Schedule of our upcoming FGVC workshop can be found here</a>.</p>",
      "rawMarkdown": "Hi @realityfaker  Thank you for sharing your solution! Will you attend CVPR2019 this year? [Schedule of our upcoming FGVC workshop can be found here](https://sites.google.com/view/fgvc6/program?authuser=0).",
      "votes": null
    },
    {
      "id": "550779",
      "postDate": "06/12/2019 02:55:01",
      "content": "<p>Unfortunately not :-(.  Hopefully next year and with better results.</p>",
      "rawMarkdown": "Unfortunately not :-(.  Hopefully next year and with better results.",
      "votes": null
    },
    {
      "id": "550895",
      "postDate": "06/12/2019 06:02:48",
      "content": "<p>Congratulations</p>",
      "rawMarkdown": "Congratulations",
      "votes": null
    },
    {
      "id": "566318",
      "postDate": "07/02/2019 03:49:02",
      "content": "<p>Congratulations! May I ask a question about the performance between r101 mask RCNN and r50? Thank you!</p>",
      "rawMarkdown": "Congratulations! May I ask a question about the performance between r101 mask RCNN and r50? Thank you!",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 549802,
      "author_name": "projdev",
      "author_url": "",
      "post_date": "06/11/2019 03:51:44",
      "content": "<p>Many thanks for sharing your solutions. Congratulations! :-)</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 549991,
      "author_name": "brunhs",
      "author_url": "",
      "post_date": "06/11/2019 07:48:57",
      "content": "<p>Nice solution! Congratulations for the results.</p>",
      "votes": null,
      "replies": [
        {
          "id": 550684,
          "author_name": "realityfaker",
          "author_url": "",
          "post_date": "06/11/2019 23:22:44",
          "content": "<p>I do not actually think that it is nice. But I think that our errors/approach is pretty funny. </p>\n\n<p>What we  was doing is like using small dynamite bomb to destroy the mountain, and then applying a swarm of hammers in attempts to finish the job. But <strong>we did not realized that a larger dynamite bombs</strong> exists until it was to late to apply them. Yes they were expensive, but they were affordable for our team, if we spend our computation budget more carefully. Nice thing is that swarm of hammers work, weird thing is that till last week of competition we thought that most of the top guys on leader board are doing some magic with attributes.</p>\n\n<p>Conclusion: always check if you can buy larger bomb for your money</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 550760,
      "author_name": "makeitworkjml",
      "author_url": "",
      "post_date": "06/12/2019 02:23:18",
      "content": "<p>Hi <a href=\"/realityfaker\">@realityfaker</a>  Thank you for sharing your solution! Will you attend CVPR2019 this year? <a href=\"https://sites.google.com/view/fgvc6/program?authuser=0\">Schedule of our upcoming FGVC workshop can be found here</a>.</p>",
      "votes": null,
      "replies": [
        {
          "id": 550779,
          "author_name": "realityfaker",
          "author_url": "",
          "post_date": "06/12/2019 02:55:01",
          "content": "<p>Unfortunately not :-(.  Hopefully next year and with better results.</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 550895,
      "author_name": "sanikamal",
      "author_url": "",
      "post_date": "06/12/2019 06:02:48",
      "content": "<p>Congratulations</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 566318,
      "author_name": "englishpatient",
      "author_url": "",
      "post_date": "07/02/2019 03:49:02",
      "content": "<p>Congratulations! May I ask a question about the performance between r101 mask RCNN and r50? Thank you!</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "549716": "This is our short meditation on our results at strategy:\n\n1.  r101 mask rcnn 1024x1024 (1 fold, it took 5 days  on our machine)\n\n2. ansemble predictions from multiple snapshots of r101 mask rcnn (select prediction with highest confidence, when multiple predictions overlap)\n\n3. Train several multiclass classifiers (xception,resnext,densenet) two detect if particular object classes present on image. Fins optimal treshold for discarding predictions from mask rcnn. [Our Classification Pipeline](https://github.com/musket-ml/classification_training_pipeline)\n\n4. Train a lot of segmentation networks at least one per class to refine masks from mask rcnn ([Segmentation Pipeline](https://github.com/musket-ml/segmentation_training_pipeline)) -&gt; This was our main source of improvements.\n\nAt the same time we were desperately trying to find solution for attributes. Initially nothing worked. But later we have used following approach:\n\nTake a mask crop and a full image, and feed them in two independent inputs of image classifier, with multiple outputs per independent attribute groups (we have found them by analizing attribute co occurances, and assuming that sometimes coocurences labeling errors).\n\nTrain a lot of such classifiers, then take only those objects for which 75% of classifiers agree with the result of blend and also when most of them are doing confident predictions.\n\nThis gave us very slight improvement of our score (~0.00500 in total) \n\n**Errors:**\n\n- Spending our pretty limited resources on attributes was a big error.\n- We did not actually realised and used full potential of mask rcnn :-(. Our initially high place on leaderboard, gave us false feeling that we used most of its potential. \n\n**Resources**\n\nWe have used: 2x1080Ti on my machine, 2x1080Ti on Denis machine  and 1080 on Konst machine. \n\n\nRegards,\nPavel",
    "549802": "Many thanks for sharing your solutions. Congratulations! :-)",
    "549991": "Nice solution! Congratulations for the results.",
    "550684": "I do not actually think that it is nice. But I think that our errors/approach is pretty funny. \n\nWhat we  was doing is like using small dynamite bomb to destroy the mountain, and then applying a swarm of hammers in attempts to finish the job. But **we did not realized that a larger dynamite bombs** exists until it was to late to apply them. Yes they were expensive, but they were affordable for our team, if we spend our computation budget more carefully. Nice thing is that swarm of hammers work, weird thing is that till last week of competition we thought that most of the top guys on leader board are doing some magic with attributes.\n\nConclusion: always check if you can buy larger bomb for your money",
    "550760": "Hi @realityfaker  Thank you for sharing your solution! Will you attend CVPR2019 this year? [Schedule of our upcoming FGVC workshop can be found here](https://sites.google.com/view/fgvc6/program?authuser=0).",
    "550779": "Unfortunately not :-(.  Hopefully next year and with better results.",
    "550895": "Congratulations",
    "566318": "Congratulations! May I ask a question about the performance between r101 mask RCNN and r50? Thank you!"
  },
  "source": "meta"
}