{
  "id": 56393,
  "title": "3th place on private LB: Matterport's Mask-RCNN",
  "url": "/competitions/data-science-bowl-2018/discussion/56393",
  "author_name": "Deep Retina",
  "post_date": "2018-05-09T10:31:53.704000",
  "votes": 37,
  "comment_count": 14,
  "views": 0,
  "content": "<p>The third place solution, tie with #2 jacobkie achieving 0.614 on the Private Leader-board, is based on a single  Mask-RCNN model using as code-base Matterport's Mask-RCNN (<a href=\"https://github.com/matterport/Mask_RCNN\">https://github.com/matterport/Mask_RCNN</a>). </p>\n\n<p><strong>Summary</strong></p>\n\n<hr>\n\n<p>I don't think I have done many different things to what others have reported and my solution is quite simple. I'll be happy to share the code once I have the approval by kaggle and sponsors. I tried many different things, but the main two contributions are:</p>\n\n<p>1) <strong>Strong scaling augmentation</strong>, a lot of zooming in and out and aspect ratio changes before taking the 512x512 crops used as inputs to the model during training.</p>\n\n<p>2) <strong>Test time augmentation</strong>, I used 15 different augmentations at test time with different rotations, scalings, channel color shifts, etc. This takes a loooong time (aprox. 2 days for the stage_2 test set) and a binary dilation post-processing actually gives a very similar score, so I would use the latter if asked now (although it is easy to tell now that we can see the PL scores..)</p>\n\n<p><strong>Training data</strong></p>\n\n<hr>\n\n<p>No external data was used, only stage 1 training set. I used the corrected data-set compiled in: <a href=\"https://github.com/lopuhin/kaggle-dsbowl-2018-dataset-fixes\">https://github.com/lopuhin/kaggle-dsbowl-2018-dataset-fixes</a> \nI didn't have the time to include any of the external data, I was also afraid that the different annotation styles might introduced unwanted bias in the predictions.\nNo prepocessing.</p>\n\n<p><strong>Augmentations</strong></p>\n\n<hr>\n\n<p>In addition to the scaling augmentation mentioned above I used left-right and up-down flips, random 90 degree rotations, random additional rotation on top of those, random channel color shifts </p>\n\n<p><strong>Parameters</strong></p>\n\n<hr>\n\n<p>Here are some of the parameters for comparison (<a href=\"https://www.kaggle.com/c/data-science-bowl-2018/discussion/54920\">https://www.kaggle.com/c/data-science-bowl-2018/discussion/54920</a>):</p>\n\n<p>CodeBase    Type-1 and 2\nMEAN_PIXEL  [123.7, 116,8, 103,9]\nLEARNING_RATE   Start 0.001 and down to 3*10^-5\nLEARNING_SCHEDULE   ~120 always \"all\"\nRPN_ANCHOR_RATIOS   [0.5, 1, 2]\nUSE_MINI_MASK   True\nMINI_MASK_SHAPE (56,56)\nGPU_COUNT   1\nIMAGES_PER_GPU  2\nSTEPS_PER_EPOCH 332\nVALIDATION_STEPS    0\nBACKBONE    resnet101\nNUM_CLASSES 1+1\nIMAGE_MIN_DIM   512\nIMAGE_MAX_DIM   Not used\nIMAGE_PADDING   Not used\nRPN_ANCHOR_SCALES   8,16,32,64,128\nRPN_ANCHOR_STRIDE   1\nBACKBONE_STRIDES    4,8,16,32,64\nRPN_TRAIN_ANCHORS_PER_IMAGE 256\nIMAGE_MIN_SCALE Not used\nIMAGE_RESIZE_MODE   crop at training, pad64 for inference\nRPN_NMS_THRESHOLD   0.7\nDETECTION_MIN_CONFIDENCE    0.9\nDETECTION_NMS_THRESHOLD 0.2\nTRAIN_ROIS_PER_IMAGE    600\nDETECTION_MAX_INSTANCES 512\nMAX_GT_INSTANCES    256\ninit_with   coco\nDATA_AUGMENTATION   scaling, crop, flip-lr, flip-up, 90 rotation, rotation, channel_shift</p>\n\n<hr>\n\n<p>Source code is now available <a href=\"https://github.com/Gelu74/DSB_2018\">follow this link to github</a></p>",
  "messages": [
    {
      "id": 326131,
      "postDate": "2018-05-09T10:31:53.703Z",
      "content": "<p>The third place solution, tie with #2 jacobkie achieving 0.614 on the Private Leader-board, is based on a single  Mask-RCNN model using as code-base Matterport's Mask-RCNN (<a href=\"https://github.com/matterport/Mask_RCNN\">https://github.com/matterport/Mask_RCNN</a>). </p>\n\n<p><strong>Summary</strong></p>\n\n<hr>\n\n<p>I don't think I have done many different things to what others have reported and my solution is quite simple. I'll be happy to share the code once I have the approval by kaggle and sponsors. I tried many different things, but the main two contributions are:</p>\n\n<p>1) <strong>Strong scaling augmentation</strong>, a lot of zooming in and out and aspect ratio changes before taking the 512x512 crops used as inputs to the model during training.</p>\n\n<p>2) <strong>Test time augmentation</strong>, I used 15 different augmentations at test time with different rotations, scalings, channel color shifts, etc. This takes a loooong time (aprox. 2 days for the stage_2 test set) and a binary dilation post-processing actually gives a very similar score, so I would use the latter if asked now (although it is easy to tell now that we can see the PL scores..)</p>\n\n<p><strong>Training data</strong></p>\n\n<hr>\n\n<p>No external data was used, only stage 1 training set. I used the corrected data-set compiled in: <a href=\"https://github.com/lopuhin/kaggle-dsbowl-2018-dataset-fixes\">https://github.com/lopuhin/kaggle-dsbowl-2018-dataset-fixes</a> \nI didn't have the time to include any of the external data, I was also afraid that the different annotation styles might introduced unwanted bias in the predictions.\nNo prepocessing.</p>\n\n<p><strong>Augmentations</strong></p>\n\n<hr>\n\n<p>In addition to the scaling augmentation mentioned above I used left-right and up-down flips, random 90 degree rotations, random additional rotation on top of those, random channel color shifts </p>\n\n<p><strong>Parameters</strong></p>\n\n<hr>\n\n<p>Here are some of the parameters for comparison (<a href=\"https://www.kaggle.com/c/data-science-bowl-2018/discussion/54920\">https://www.kaggle.com/c/data-science-bowl-2018/discussion/54920</a>):</p>\n\n<p>CodeBase    Type-1 and 2\nMEAN_PIXEL  [123.7, 116,8, 103,9]\nLEARNING_RATE   Start 0.001 and down to 3*10^-5\nLEARNING_SCHEDULE   ~120 always \"all\"\nRPN_ANCHOR_RATIOS   [0.5, 1, 2]\nUSE_MINI_MASK   True\nMINI_MASK_SHAPE (56,56)\nGPU_COUNT   1\nIMAGES_PER_GPU  2\nSTEPS_PER_EPOCH 332\nVALIDATION_STEPS    0\nBACKBONE    resnet101\nNUM_CLASSES 1+1\nIMAGE_MIN_DIM   512\nIMAGE_MAX_DIM   Not used\nIMAGE_PADDING   Not used\nRPN_ANCHOR_SCALES   8,16,32,64,128\nRPN_ANCHOR_STRIDE   1\nBACKBONE_STRIDES    4,8,16,32,64\nRPN_TRAIN_ANCHORS_PER_IMAGE 256\nIMAGE_MIN_SCALE Not used\nIMAGE_RESIZE_MODE   crop at training, pad64 for inference\nRPN_NMS_THRESHOLD   0.7\nDETECTION_MIN_CONFIDENCE    0.9\nDETECTION_NMS_THRESHOLD 0.2\nTRAIN_ROIS_PER_IMAGE    600\nDETECTION_MAX_INSTANCES 512\nMAX_GT_INSTANCES    256\ninit_with   coco\nDATA_AUGMENTATION   scaling, crop, flip-lr, flip-up, 90 rotation, rotation, channel_shift</p>\n\n<hr>\n\n<p>Source code is now available <a href=\"https://github.com/Gelu74/DSB_2018\">follow this link to github</a></p>",
      "rawMarkdown": "The third place solution, tie with #2 jacobkie achieving 0.614 on the Private Leader-board, is based on a single  Mask-RCNN model using as code-base Matterport's Mask-RCNN (https://github.com/matterport/Mask_RCNN). \n\n**Summary**\n\n\n----------\n\n\nI don't think I have done many different things to what others have reported and my solution is quite simple. I'll be happy to share the code once I have the approval by kaggle and sponsors. I tried many different things, but the main two contributions are:\n\n1) **Strong scaling augmentation**, a lot of zooming in and out and aspect ratio changes before taking the 512x512 crops used as inputs to the model during training.\n\n2) **Test time augmentation**, I used 15 different augmentations at test time with different rotations, scalings, channel color shifts, etc. This takes a loooong time (aprox. 2 days for the stage_2 test set) and a binary dilation post-processing actually gives a very similar score, so I would use the latter if asked now (although it is easy to tell now that we can see the PL scores..)\n\n\n**Training data**\n\n\n----------\n\n\nNo external data was used, only stage 1 training set. I used the corrected data-set compiled in: https://github.com/lopuhin/kaggle-dsbowl-2018-dataset-fixes \nI didn't have the time to include any of the external data, I was also afraid that the different annotation styles might introduced unwanted bias in the predictions.\nNo prepocessing.\n\n**Augmentations**\n\n\n----------\n\n\nIn addition to the scaling augmentation mentioned above I used left-right and up-down flips, random 90 degree rotations, random additional rotation on top of those, random channel color shifts \n\n**Parameters**\n\n\n----------\n\n\nHere are some of the parameters for comparison (https://www.kaggle.com/c/data-science-bowl-2018/discussion/54920):\n\nCodeBase\tType-1 and 2\nMEAN_PIXEL\t[123.7, 116,8, 103,9]\nLEARNING_RATE\tStart 0.001 and down to 3*10^-5\nLEARNING_SCHEDULE\t~120 always \"all\"\nRPN_ANCHOR_RATIOS\t[0.5, 1, 2]\nUSE_MINI_MASK\tTrue\nMINI_MASK_SHAPE\t(56,56)\nGPU_COUNT\t1\nIMAGES_PER_GPU\t2\nSTEPS_PER_EPOCH\t332\nVALIDATION_STEPS\t0\nBACKBONE\tresnet101\nNUM_CLASSES\t1+1\nIMAGE_MIN_DIM\t512\nIMAGE_MAX_DIM\tNot used\nIMAGE_PADDING\tNot used\nRPN_ANCHOR_SCALES\t8,16,32,64,128\nRPN_ANCHOR_STRIDE\t1\nBACKBONE_STRIDES\t4,8,16,32,64\nRPN_TRAIN_ANCHORS_PER_IMAGE\t256\nIMAGE_MIN_SCALE\tNot used\nIMAGE_RESIZE_MODE\tcrop at training, pad64 for inference\nRPN_NMS_THRESHOLD\t0.7\nDETECTION_MIN_CONFIDENCE\t0.9\nDETECTION_NMS_THRESHOLD\t0.2\nTRAIN_ROIS_PER_IMAGE\t600\nDETECTION_MAX_INSTANCES\t512\nMAX_GT_INSTANCES\t256\ninit_with\tcoco\nDATA_AUGMENTATION\tscaling, crop, flip-lr, flip-up, 90 rotation, rotation, channel_shift\n\n----------\nSource code is now available [follow this link to github][1]\n\n\n\n  [1]: https://github.com/Gelu74/DSB_2018",
      "votes": 36
    },
    {
      "id": 328630,
      "postDate": "2018-05-14T18:48:29.877Z",
      "content": "<p>Congrats! Regarding test time augmentation, how did you ensemble the predictions from the different settings?</p>",
      "rawMarkdown": "Congrats! Regarding test time augmentation, how did you ensemble the predictions from the different settings?",
      "votes": 3,
      "replies": [
        {
          "id": 346917,
          "postDate": "2018-06-22T18:18:58.710Z",
          "content": "<p>I second this comment. Ensembling the output of matterport mask rcnn is certainly not a trivial task. Any hints would be great :)</p>",
          "rawMarkdown": "I second this comment. Ensembling the output of matterport mask rcnn is certainly not a trivial task. Any hints would be great :)\n"
        },
        {
          "id": 358526,
          "postDate": "2018-07-18T10:22:00.297Z",
          "content": "<p>I have updated the description with a link to the source code where you can view the test time augmentation ensembling. As I mention in the README, this test time augmentation is quite tricky in that it has quite a few parameters to tune and a simple binary dilation operation performs better, although it is easy to say now that we have access to the private leaderboard scores..</p>",
          "rawMarkdown": "I have updated the description with a link to the source code where you can view the test time augmentation ensembling. As I mention in the README, this test time augmentation is quite tricky in that it has quite a few parameters to tune and a simple binary dilation operation performs better, although it is easy to say now that we have access to the private leaderboard scores.."
        },
        {
          "id": 540344,
          "postDate": "2019-05-31T11:30:12.957Z",
          "content": "<p>I'm so stupid to understand how to ensemble the tta prediction.</p>",
          "rawMarkdown": "I'm so stupid to understand how to ensemble the tta prediction."
        }
      ]
    },
    {
      "id": 326245,
      "postDate": "2018-05-09T13:30:21.197Z",
      "content": "<p>Nice work and congrats!   Great to see exactly what parms you used.</p>",
      "rawMarkdown": "Nice work and congrats!   Great to see exactly what parms you used.",
      "votes": 3
    },
    {
      "id": 328494,
      "postDate": "2018-05-14T13:25:55.623Z",
      "content": "<p>I love the simplicity of the solution. Thanks!</p>",
      "rawMarkdown": "I love the simplicity of the solution. Thanks!",
      "votes": 1
    },
    {
      "id": 326425,
      "postDate": "2018-05-09T17:31:53.680Z",
      "content": "<p>@Deep Retina Congratulations again and thank you very much for sharing your parameters! I will add them the page: </p>\n\n<p><a href=\"https://github.com/mpsampat/DSB_2018_Parameter_Selection_For_Matterport_Mask_RCNN/blob/master/comparison_of_Matterport_Mask_RCNN_parameters.md\">https://github.com/mpsampat/DSB_2018_Parameter_Selection_For_Matterport_Mask_RCNN/blob/master/comparison_of_Matterport_Mask_RCNN_parameters.md</a></p>\n\n<p>One quick question: we saw most contestants were using one of these two versions of Matterport Mask RCNN. </p>\n\n<p>Type 1: Older Mask_RCNN_code from here: <a href=\"https://github.com/killthekitten/kaggle-ds-bowl-2018-baseline\">https://github.com/killthekitten/kaggle-ds-bowl-2018-baseline</a></p>\n\n<p>Type 2: latest Mask_RCNN_code from here: <a href=\"https://github.com/matterport/Mask_RCNN\">https://github.com/matterport/Mask_RCNN</a></p>\n\n<p>Type 2: has the latest updates from Waleed while type1 was a copy of the code from Waleed's original implementation.\nType 1 was not a fork; so i am not sure at what point exactly it was created.</p>\n\n<p>Could you please say which one you used ? </p>\n\n<p>Thanks again ! \nMehul</p>",
      "rawMarkdown": "@Deep Retina Congratulations again and thank you very much for sharing your parameters! I will add them the page: \n\nhttps://github.com/mpsampat/DSB_2018_Parameter_Selection_For_Matterport_Mask_RCNN/blob/master/comparison_of_Matterport_Mask_RCNN_parameters.md\n\nOne quick question: we saw most contestants were using one of these two versions of Matterport Mask RCNN. \n\nType 1: Older Mask_RCNN_code from here: https://github.com/killthekitten/kaggle-ds-bowl-2018-baseline\n\nType 2: latest Mask_RCNN_code from here: https://github.com/matterport/Mask_RCNN\n\nType 2: has the latest updates from Waleed while type1 was a copy of the code from Waleed's original implementation.\nType 1 was not a fork; so i am not sure at what point exactly it was created.\n\nCould you please say which one you used ? \n\nThanks again ! \nMehul",
      "votes": 1,
      "replies": [
        {
          "id": 326435,
          "postDate": "2018-05-09T17:43:25.650Z",
          "content": "<p>I actually used a bit of both... I started using the code from <a href=\"https://github.com/matterport/Mask_RCNN\">https://github.com/matterport/Mask_RCNN</a> at the beginning of the competition and worked on a clone of that repository on my computer for most of the competition (which I guess is close to Type 1), but that version lacked the \"pad64\"  for predicting on variable size inputs so a few days before the competition ended I moved to the latest version. I have organized all my code and I now have a working version which is a Type 2 with a few changes in the code. I hope to share that code during next week.</p>",
          "rawMarkdown": "I actually used a bit of both... I started using the code from https://github.com/matterport/Mask_RCNN at the beginning of the competition and worked on a clone of that repository on my computer for most of the competition (which I guess is close to Type 1), but that version lacked the \"pad64\"  for predicting on variable size inputs so a few days before the competition ended I moved to the latest version. I have organized all my code and I now have a working version which is a Type 2 with a few changes in the code. I hope to share that code during next week.",
          "votes": 5
        }
      ]
    },
    {
      "id": 374818,
      "postDate": "2018-08-23T23:06:34.853Z",
      "content": "<p>Congratulations @Deep Retina team, and thanks for sharing your solution and code.</p>",
      "rawMarkdown": "Congratulations @Deep Retina team, and thanks for sharing your solution and code."
    },
    {
      "id": 359337,
      "postDate": "2018-07-19T22:50:57.090Z",
      "content": "<p>hi, Where can  i find weights for this submission? I have similar objects to detect and wondering if I can reuse the weights  to inference my pictures. </p>",
      "rawMarkdown": "hi, Where can  i find weights for this submission? I have similar objects to detect and wondering if I can reuse the weights  to inference my pictures. ",
      "replies": [
        {
          "id": 359540,
          "postDate": "2018-07-20T10:04:41.863Z",
          "content": "<p>I have modified the README with a link to the weights, the file is too large to upload to github</p>",
          "rawMarkdown": "I have modified the README with a link to the weights, the file is too large to upload to github"
        },
        {
          "id": 365451,
          "postDate": "2018-08-02T16:38:07.523Z",
          "content": "<p>hi, thanks. but where is the readme file located? i didn't find the link to weights  in <a href=\"https://github.com/killthekitten/kaggle-ds-bowl-2018-baseline\">https://github.com/killthekitten/kaggle-ds-bowl-2018-baseline</a>. or <a href=\"https://github.com/matterport/Mask_RCNN\">https://github.com/matterport/Mask_RCNN</a>. Could you please paste the link here if its possible. Appreciate it. </p>",
          "rawMarkdown": "hi, thanks. but where is the readme file located? i didn't find the link to weights  in https://github.com/killthekitten/kaggle-ds-bowl-2018-baseline. or https://github.com/matterport/Mask_RCNN. Could you please paste the link here if its possible. Appreciate it. "
        }
      ]
    },
    {
      "id": 330283,
      "postDate": "2018-05-18T13:28:55.120Z",
      "content": "<p>Fantastic result and work, even more so it being a single model solution! Congrats!</p>",
      "rawMarkdown": "Fantastic result and work, even more so it being a single model solution! Congrats!"
    },
    {
      "id": 394271,
      "postDate": "2018-09-26T15:27:59.243Z",
      "rawMarkdown": "",
      "isDeleted": true
    }
  ],
  "comments": [
    {
      "id": 328630,
      "author_name": "Naoto Usuyama",
      "author_url": "",
      "post_date": "2018-05-14T18:48:29.877000",
      "content": "<p>Congrats! Regarding test time augmentation, how did you ensemble the predictions from the different settings?</p>",
      "votes": 3,
      "replies": [
        {
          "id": 346917,
          "author_name": "SimonGraham",
          "author_url": "",
          "post_date": "2018-06-22T18:18:58.710000",
          "content": "<p>I second this comment. Ensembling the output of matterport mask rcnn is certainly not a trivial task. Any hints would be great :)</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 358526,
          "author_name": "Deep Retina",
          "author_url": "",
          "post_date": "2018-07-18T10:22:00.297000",
          "content": "<p>I have updated the description with a link to the source code where you can view the test time augmentation ensembling. As I mention in the README, this test time augmentation is quite tricky in that it has quite a few parameters to tune and a simple binary dilation operation performs better, although it is easy to say now that we have access to the private leaderboard scores..</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 540344,
          "author_name": "xiatian",
          "author_url": "",
          "post_date": "2019-05-31T11:30:12.957000",
          "content": "<p>I'm so stupid to understand how to ensemble the tta prediction.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 326245,
      "author_name": "Russ Wolfinger",
      "author_url": "",
      "post_date": "2018-05-09T13:30:21.197000",
      "content": "<p>Nice work and congrats!   Great to see exactly what parms you used.</p>",
      "votes": 3,
      "replies": []
    },
    {
      "id": 328494,
      "author_name": "Andrés Miguel Torrubia Sáez",
      "author_url": "",
      "post_date": "2018-05-14T13:25:55.623000",
      "content": "<p>I love the simplicity of the solution. Thanks!</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 326425,
      "author_name": "Mehul Sampat",
      "author_url": "",
      "post_date": "2018-05-09T17:31:53.680000",
      "content": "<p>@Deep Retina Congratulations again and thank you very much for sharing your parameters! I will add them the page: </p>\n\n<p><a href=\"https://github.com/mpsampat/DSB_2018_Parameter_Selection_For_Matterport_Mask_RCNN/blob/master/comparison_of_Matterport_Mask_RCNN_parameters.md\">https://github.com/mpsampat/DSB_2018_Parameter_Selection_For_Matterport_Mask_RCNN/blob/master/comparison_of_Matterport_Mask_RCNN_parameters.md</a></p>\n\n<p>One quick question: we saw most contestants were using one of these two versions of Matterport Mask RCNN. </p>\n\n<p>Type 1: Older Mask_RCNN_code from here: <a href=\"https://github.com/killthekitten/kaggle-ds-bowl-2018-baseline\">https://github.com/killthekitten/kaggle-ds-bowl-2018-baseline</a></p>\n\n<p>Type 2: latest Mask_RCNN_code from here: <a href=\"https://github.com/matterport/Mask_RCNN\">https://github.com/matterport/Mask_RCNN</a></p>\n\n<p>Type 2: has the latest updates from Waleed while type1 was a copy of the code from Waleed's original implementation.\nType 1 was not a fork; so i am not sure at what point exactly it was created.</p>\n\n<p>Could you please say which one you used ? </p>\n\n<p>Thanks again ! \nMehul</p>",
      "votes": 1,
      "replies": [
        {
          "id": 326435,
          "author_name": "Deep Retina",
          "author_url": "",
          "post_date": "2018-05-09T17:43:25.650000",
          "content": "<p>I actually used a bit of both... I started using the code from <a href=\"https://github.com/matterport/Mask_RCNN\">https://github.com/matterport/Mask_RCNN</a> at the beginning of the competition and worked on a clone of that repository on my computer for most of the competition (which I guess is close to Type 1), but that version lacked the \"pad64\"  for predicting on variable size inputs so a few days before the competition ended I moved to the latest version. I have organized all my code and I now have a working version which is a Type 2 with a few changes in the code. I hope to share that code during next week.</p>",
          "votes": 5,
          "replies": []
        }
      ]
    },
    {
      "id": 374818,
      "author_name": "YaGana Sheriff-Hussaini",
      "author_url": "",
      "post_date": "2018-08-23T23:06:34.853000",
      "content": "<p>Congratulations @Deep Retina team, and thanks for sharing your solution and code.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 359337,
      "author_name": "BearlyAI",
      "author_url": "",
      "post_date": "2018-07-19T22:50:57.090000",
      "content": "<p>hi, Where can  i find weights for this submission? I have similar objects to detect and wondering if I can reuse the weights  to inference my pictures. </p>",
      "votes": 0,
      "replies": [
        {
          "id": 359540,
          "author_name": "Deep Retina",
          "author_url": "",
          "post_date": "2018-07-20T10:04:41.863000",
          "content": "<p>I have modified the README with a link to the weights, the file is too large to upload to github</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 365451,
          "author_name": "BearlyAI",
          "author_url": "",
          "post_date": "2018-08-02T16:38:07.523000",
          "content": "<p>hi, thanks. but where is the readme file located? i didn't find the link to weights  in <a href=\"https://github.com/killthekitten/kaggle-ds-bowl-2018-baseline\">https://github.com/killthekitten/kaggle-ds-bowl-2018-baseline</a>. or <a href=\"https://github.com/matterport/Mask_RCNN\">https://github.com/matterport/Mask_RCNN</a>. Could you please paste the link here if its possible. Appreciate it. </p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 330283,
      "author_name": "Jack Vial",
      "author_url": "",
      "post_date": "2018-05-18T13:28:55.120000",
      "content": "<p>Fantastic result and work, even more so it being a single model solution! Congrats!</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 394271,
      "author_name": "",
      "author_url": "",
      "post_date": "2018-09-26T15:27:59.243000",
      "content": "",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "326131": "The third place solution, tie with #2 jacobkie achieving 0.614 on the Private Leader-board, is based on a single  Mask-RCNN model using as code-base Matterport's Mask-RCNN (https://github.com/matterport/Mask_RCNN). \n\n**Summary**\n\n\n----------\n\n\nI don't think I have done many different things to what others have reported and my solution is quite simple. I'll be happy to share the code once I have the approval by kaggle and sponsors. I tried many different things, but the main two contributions are:\n\n1) **Strong scaling augmentation**, a lot of zooming in and out and aspect ratio changes before taking the 512x512 crops used as inputs to the model during training.\n\n2) **Test time augmentation**, I used 15 different augmentations at test time with different rotations, scalings, channel color shifts, etc. This takes a loooong time (aprox. 2 days for the stage_2 test set) and a binary dilation post-processing actually gives a very similar score, so I would use the latter if asked now (although it is easy to tell now that we can see the PL scores..)\n\n\n**Training data**\n\n\n----------\n\n\nNo external data was used, only stage 1 training set. I used the corrected data-set compiled in: https://github.com/lopuhin/kaggle-dsbowl-2018-dataset-fixes \nI didn't have the time to include any of the external data, I was also afraid that the different annotation styles might introduced unwanted bias in the predictions.\nNo prepocessing.\n\n**Augmentations**\n\n\n----------\n\n\nIn addition to the scaling augmentation mentioned above I used left-right and up-down flips, random 90 degree rotations, random additional rotation on top of those, random channel color shifts \n\n**Parameters**\n\n\n----------\n\n\nHere are some of the parameters for comparison (https://www.kaggle.com/c/data-science-bowl-2018/discussion/54920):\n\nCodeBase\tType-1 and 2\nMEAN_PIXEL\t[123.7, 116,8, 103,9]\nLEARNING_RATE\tStart 0.001 and down to 3*10^-5\nLEARNING_SCHEDULE\t~120 always \"all\"\nRPN_ANCHOR_RATIOS\t[0.5, 1, 2]\nUSE_MINI_MASK\tTrue\nMINI_MASK_SHAPE\t(56,56)\nGPU_COUNT\t1\nIMAGES_PER_GPU\t2\nSTEPS_PER_EPOCH\t332\nVALIDATION_STEPS\t0\nBACKBONE\tresnet101\nNUM_CLASSES\t1+1\nIMAGE_MIN_DIM\t512\nIMAGE_MAX_DIM\tNot used\nIMAGE_PADDING\tNot used\nRPN_ANCHOR_SCALES\t8,16,32,64,128\nRPN_ANCHOR_STRIDE\t1\nBACKBONE_STRIDES\t4,8,16,32,64\nRPN_TRAIN_ANCHORS_PER_IMAGE\t256\nIMAGE_MIN_SCALE\tNot used\nIMAGE_RESIZE_MODE\tcrop at training, pad64 for inference\nRPN_NMS_THRESHOLD\t0.7\nDETECTION_MIN_CONFIDENCE\t0.9\nDETECTION_NMS_THRESHOLD\t0.2\nTRAIN_ROIS_PER_IMAGE\t600\nDETECTION_MAX_INSTANCES\t512\nMAX_GT_INSTANCES\t256\ninit_with\tcoco\nDATA_AUGMENTATION\tscaling, crop, flip-lr, flip-up, 90 rotation, rotation, channel_shift\n\n----------\nSource code is now available [follow this link to github][1]\n\n\n\n  [1]: https://github.com/Gelu74/DSB_2018",
    "328630": "Congrats! Regarding test time augmentation, how did you ensemble the predictions from the different settings?",
    "326245": "Nice work and congrats!   Great to see exactly what parms you used.",
    "328494": "I love the simplicity of the solution. Thanks!",
    "326425": "@Deep Retina Congratulations again and thank you very much for sharing your parameters! I will add them the page: \n\nhttps://github.com/mpsampat/DSB_2018_Parameter_Selection_For_Matterport_Mask_RCNN/blob/master/comparison_of_Matterport_Mask_RCNN_parameters.md\n\nOne quick question: we saw most contestants were using one of these two versions of Matterport Mask RCNN. \n\nType 1: Older Mask_RCNN_code from here: https://github.com/killthekitten/kaggle-ds-bowl-2018-baseline\n\nType 2: latest Mask_RCNN_code from here: https://github.com/matterport/Mask_RCNN\n\nType 2: has the latest updates from Waleed while type1 was a copy of the code from Waleed's original implementation.\nType 1 was not a fork; so i am not sure at what point exactly it was created.\n\nCould you please say which one you used ? \n\nThanks again ! \nMehul",
    "374818": "Congratulations @Deep Retina team, and thanks for sharing your solution and code.",
    "359337": "hi, Where can  i find weights for this submission? I have similar objects to detect and wondering if I can reuse the weights  to inference my pictures. ",
    "330283": "Fantastic result and work, even more so it being a single model solution! Congrats!",
    "394271": ""
  },
  "complete": true,
  "source": "existing_discussion",
  "competition_id": 8089,
  "competition_slug": "data-science-bowl-2018",
  "team_id": 1265104,
  "solution_url": "/competitions/data-science-bowl-2018/writeups/deep-retina-3th-place-on-private-lb-matterport-s-m"
}