{
  "id": 172409,
  "title": "[42nd place solution]",
  "url": "/competitions/global-wheat-detection/writeups/bker-team-42nd-place-solution",
  "author_name": "",
  "post_date": "2020-09-19T09:17:15.530Z",
  "votes": 80,
  "comment_count": 30,
  "views": 0,
  "content": "<p>Congratulation to all, especially to the prize winner and gold medalists and thanks to the organizers for this interesting competition.<br>\nSo here are some essential points of our solutions (I will update more detail later)<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2545270%2F4c4ce442608f2f655f7182babf7a7bca%2FUntitled%20Diagram%20(2).png?generation=1596588070622865&amp;alt=media\" alt=\"\"><br>\n<strong>1. Validation strategy</strong><br>\nI use a fixed validation set from the beginning of the competition (663 images). The validation data is from usask_1 and a part of other sources.<br>\n<strong>2. Augmentation</strong></p>\n<p>2.1. My custom augmentation: <br>\n    - crop and pad: I realize that the boxes at the border after cropping is not good. Then I remove all the boxes at the border  and remove the image content inside the boxes too.<br>\n    - crop and resize<br>\n    - resize and pad<br>\n    - <a href=\"https://www.cs.tau.ac.il/~turkel/imagepapers/ColorTransfer.pdf\" target=\"_blank\">Color Transfer between Images</a><br>\n    - mixup: Instead of mixup 2 images in training set, I use 1 image in training set and 1 image without wheat head. <br>\n    - Rotation: random rotate images and use pseudo label as ground truth.</p>\n<p>2.2. Albumentation:<br>\n    - A.HorizontalFlip(p=0.5),<br>\n    - A.VerticalFlip(p=0.5),<br>\n    - A.RandomRotate90(p=0.5), <br>\nI don't use mosaic augmentation because it does not want to cooperate with my custom augmentation.<br>\n<strong>3. SPIKE dataset:</strong> I use WBF on pseudo label and provided ground truth label.<br>\n<strong>4. Results</strong><br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2545270%2F9312433df689b4ebe397f0674b067b9b%2FUntitled.png?generation=1596632145633431&amp;alt=media\" alt=\"\"></p>\n<p>P/s: Is there a chance for us to move into gold zone after verifying solution? </p>",
  "messages": [
    {
      "id": "958386",
      "postDate": "08/05/2020 00:41:37",
      "content": "<p>Congratulation to all, especially to the prize winner and gold medalists and thanks to the organizers for this interesting competition.<br>\nSo here are some essential points of our solutions (I will update more detail later)<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2545270%2F4c4ce442608f2f655f7182babf7a7bca%2FUntitled%20Diagram%20(2).png?generation=1596588070622865&amp;alt=media\" alt=\"\"><br>\n<strong>1. Validation strategy</strong><br>\nI use a fixed validation set from the beginning of the competition (663 images). The validation data is from usask_1 and a part of other sources.<br>\n<strong>2. Augmentation</strong></p>\n<p>2.1. My custom augmentation: <br>\n    - crop and pad: I realize that the boxes at the border after cropping is not good. Then I remove all the boxes at the border  and remove the image content inside the boxes too.<br>\n    - crop and resize<br>\n    - resize and pad<br>\n    - <a href=\"https://www.cs.tau.ac.il/~turkel/imagepapers/ColorTransfer.pdf\" target=\"_blank\">Color Transfer between Images</a><br>\n    - mixup: Instead of mixup 2 images in training set, I use 1 image in training set and 1 image without wheat head. <br>\n    - Rotation: random rotate images and use pseudo label as ground truth.</p>\n<p>2.2. Albumentation:<br>\n    - A.HorizontalFlip(p=0.5),<br>\n    - A.VerticalFlip(p=0.5),<br>\n    - A.RandomRotate90(p=0.5), <br>\nI don't use mosaic augmentation because it does not want to cooperate with my custom augmentation.<br>\n<strong>3. SPIKE dataset:</strong> I use WBF on pseudo label and provided ground truth label.<br>\n<strong>4. Results</strong><br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2545270%2F9312433df689b4ebe397f0674b067b9b%2FUntitled.png?generation=1596632145633431&amp;alt=media\" alt=\"\"></p>\n<p>P/s: Is there a chance for us to move into gold zone after verifying solution? </p>",
      "rawMarkdown": "Congratulation to all, especially to the prize winner and gold medalists and thanks to the organizers for this interesting competition.\nSo here are some essential points of our solutions (I will update more detail later)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2545270%2F4c4ce442608f2f655f7182babf7a7bca%2FUntitled%20Diagram%20(2).png?generation=1596588070622865&amp;alt=media)\n**1. Validation strategy**\nI use a fixed validation set from the beginning of the competition (663 images). The validation data is from usask_1 and a part of other sources.\n**2. Augmentation**\n\n 2.1. My custom augmentation: \n    - crop and pad: I realize that the boxes at the border after cropping is not good. Then I remove all the boxes at the border  and remove the image content inside the boxes too.\n    - crop and resize\n    - resize and pad\n    - [Color Transfer between Images](https://www.cs.tau.ac.il/~turkel/imagepapers/ColorTransfer.pdf)\n    - mixup: Instead of mixup 2 images in training set, I use 1 image in training set and 1 image without wheat head. \n    - Rotation: random rotate images and use pseudo label as ground truth.\n\n  2.2. Albumentation:\n    - A.HorizontalFlip(p=0.5),\n    - A.VerticalFlip(p=0.5),\n    - A.RandomRotate90(p=0.5), \nI don't use mosaic augmentation because it does not want to cooperate with my custom augmentation.\n**3. SPIKE dataset:** I use WBF on pseudo label and provided ground truth label.\n**4. Results**\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2545270%2F9312433df689b4ebe397f0674b067b9b%2FUntitled.png?generation=1596632145633431&amp;alt=media)\n\nP/s: Is there a chance for us to move into gold zone after verifying solution?",
      "votes": null
    },
    {
      "id": "958391",
      "postDate": "08/05/2020 00:45:34",
      "content": "<p>How did you come up with the faster Rcnn used to predict the pseudo label rather than the D5? </p>",
      "rawMarkdown": "How did you come up with the faster Rcnn used to predict the pseudo label rather than the D5?",
      "votes": null
    },
    {
      "id": "958394",
      "postDate": "08/05/2020 00:46:35",
      "content": "<p>Interesting! So you use an ensemble of EffDet models for the pseudolabel prediction, but then use FasterRCNN to train on the PL? Definitely a unique approach! Well done in your ranking, I hope you get bumped up some more as non-compliant submissions get removed :)</p>",
      "rawMarkdown": "Interesting! So you use an ensemble of EffDet models for the pseudolabel prediction, but then use FasterRCNN to train on the PL? Definitely a unique approach! Well done in your ranking, I hope you get bumped up some more as non-compliant submissions get removed :)",
      "votes": null
    },
    {
      "id": "958396",
      "postDate": "08/05/2020 00:48:17",
      "content": "<p>by trial-error. FasterRCNN gives a better result than D5</p>",
      "rawMarkdown": "by trial-error. FasterRCNN gives a better result than D5",
      "votes": null
    },
    {
      "id": "958403",
      "postDate": "08/05/2020 00:56:22",
      "content": "<p>That's quite an interesting solution! Nice to see such a novel solution. What is the FRCNN backbone just out of interest?</p>",
      "rawMarkdown": "That's quite an interesting solution! Nice to see such a novel solution. What is the FRCNN backbone just out of interest?",
      "votes": null
    },
    {
      "id": "958407",
      "postDate": "08/05/2020 01:02:07",
      "content": "<p>I know you have worked hard since the beginning of the competition.\nAnd I think you deserve a gold medal. 😊 </p>\n\n<ol>\n<li><p>My question is how you set epochs for pseudo labeling?\nIt is difficult for me because i often got execution time-out error.</p></li>\n<li><p>How you can choose models(how you evaluate model performance)?\nI think that you have a lot of trained models.</p></li>\n</ol>\n\n<p>Thanks!\nI am so happy that you are in the rankings.\n<a href=\"/nvnnghia\">@nvnnghia</a> </p>",
      "rawMarkdown": "I know you have worked hard since the beginning of the competition.\nAnd I think you deserve a gold medal. 😊 \n\n1. My question is how you set epochs for pseudo labeling?\nIt is difficult for me because i often got execution time-out error.\n\n2. How you can choose models(how you evaluate model performance)?\nI think that you have a lot of trained models.\n\nThanks!\nI am so happy that you are in the rankings.\n@nvnnghia",
      "votes": null
    },
    {
      "id": "958410",
      "postDate": "08/05/2020 01:10:17",
      "content": "<p>Thank <a href=\"/matthewmasters\">@matthewmasters</a> Thanks for your huge contribution in this competition. Yes I use an ensemble of EffDet models for the pseudolabel prediction and FasterRCNN for retraining. </p>",
      "rawMarkdown": "Thank @matthewmasters Thanks for your huge contribution in this competition. Yes I use an ensemble of EffDet models for the pseudolabel prediction and FasterRCNN for retraining.",
      "votes": null
    },
    {
      "id": "958411",
      "postDate": "08/05/2020 01:10:32",
      "content": "<p>resnet152</p>",
      "rawMarkdown": "resnet152",
      "votes": null
    },
    {
      "id": "958418",
      "postDate": "08/05/2020 01:19:43",
      "content": "<p>Thanks <a href=\"/piantic\">@piantic</a> \n- I retrain fasterRCNN for 7 epochs. I use time tracking on my notebook, so my notebook will stop the training process whenever my notebook meets the time limit (I set it to 5 hours)\n- I kept a fixed validation set at the beginning of the competition (663 images). The validation data is from usask_1 and a part of other sources.</p>",
      "rawMarkdown": "Thanks @piantic \n- I retrain fasterRCNN for 7 epochs. I use time tracking on my notebook, so my notebook will stop the training process whenever my notebook meets the time limit (I set it to 5 hours)\n- I kept a fixed validation set at the beginning of the competition (663 images). The validation data is from usask_1 and a part of other sources.",
      "votes": null
    },
    {
      "id": "958420",
      "postDate": "08/05/2020 01:20:37",
      "content": "<p>this structure feeding D5 labels to yolov3 for retraining in my case was also my best score on private LB. \nDid you end up with images without any bboxes at all by any chance ?</p>",
      "rawMarkdown": "this structure feeding D5 labels to yolov3 for retraining in my case was also my best score on private LB. \nDid you end up with images without any bboxes at all by any chance ?",
      "votes": null
    },
    {
      "id": "958422",
      "postDate": "08/05/2020 01:23:35",
      "content": "<p>Congratulations!! Your notebook help us a lot!\nYou used Faster RCNN with Res152, right? Did you use any library like torchvision?</p>",
      "rawMarkdown": "Congratulations!! Your notebook help us a lot!\nYou used Faster RCNN with Res152, right? Did you use any library like torchvision?",
      "votes": null
    },
    {
      "id": "958425",
      "postDate": "08/05/2020 01:24:14",
      "content": "<p>Oh, I learn a lot from you.\nWe hope to share detailed solutions later.</p>\n\n<p>Thanks <a href=\"/nvnnghia\">@nvnnghia</a> :)</p>",
      "rawMarkdown": "Oh, I learn a lot from you.\nWe hope to share detailed solutions later.\n\nThanks @nvnnghia :)",
      "votes": null
    },
    {
      "id": "958497",
      "postDate": "08/05/2020 02:50:07",
      "content": "<p>No external data? Nice solution indeed</p>",
      "rawMarkdown": "No external data? Nice solution indeed",
      "votes": null
    },
    {
      "id": "958583",
      "postDate": "08/05/2020 04:12:45",
      "content": "<p>Congratulations to you and your team!\nMay I ask what is the Public and Private score on submitting the model just after 1st ensemble of the 3 models? That is without doing pseudo labelling.</p>",
      "rawMarkdown": "Congratulations to you and your team!\nMay I ask what is the Public and Private score on submitting the model just after 1st ensemble of the 3 models? That is without doing pseudo labelling.",
      "votes": null
    },
    {
      "id": "958727",
      "postDate": "08/05/2020 05:56:50",
      "content": "<p>Didn't expect FasterRCNN to perform this well. Well done!</p>",
      "rawMarkdown": "Didn't expect FasterRCNN to perform this well. Well done!",
      "votes": null
    },
    {
      "id": "959160",
      "postDate": "08/05/2020 11:47:45",
      "content": "<ul>\n<li>FasterRCNN 0.7582, </li>\n<li>D0: 0.7605</li>\n<li>D5 (512x512): 7584</li>\n<li>D5 (768x768): I didn't check LB score. But I know it is good because of high CV score.</li>\n</ul>\n\n<p>I will update more detail later. </p>",
      "rawMarkdown": "FasterRCNN 0.7582, \n- D0: 0.7605\n- D5 (512x512): 7584\n- D5 (768x768): I didn't check LB score. But I know it is good because of high CV score.\n\nI will update more detail later.",
      "votes": null
    },
    {
      "id": "959266",
      "postDate": "08/05/2020 13:04:29",
      "content": "<p>detail updated!</p>",
      "rawMarkdown": "detail updated!",
      "votes": null
    },
    {
      "id": "959291",
      "postDate": "08/05/2020 13:26:59",
      "content": "<p>Is it with Plabel or TTA ?</p>",
      "rawMarkdown": "Is it with Plabel or TTA ?",
      "votes": null
    },
    {
      "id": "959294",
      "postDate": "08/05/2020 13:28:51",
      "content": "<p>Why you change to Efficentdet and donot continue to use FasterRCNN in the second stage?</p>",
      "rawMarkdown": "Why you change to Efficentdet and donot continue to use FasterRCNN in the second stage?",
      "votes": null
    },
    {
      "id": "959296",
      "postDate": "08/05/2020 13:30:34",
      "content": "<p>TTA only</p>",
      "rawMarkdown": "TTA only",
      "votes": null
    },
    {
      "id": "959299",
      "postDate": "08/05/2020 13:32:29",
      "content": "<p>Thanks!</p>",
      "rawMarkdown": "Thanks!",
      "votes": null
    },
    {
      "id": "959319",
      "postDate": "08/05/2020 13:50:03",
      "content": "<p>I ignore images without bboxes. Just remember to add an empty string to submission file.</p>",
      "rawMarkdown": "I ignore images without bboxes. Just remember to add an empty string to submission file.",
      "votes": null
    },
    {
      "id": "959376",
      "postDate": "08/05/2020 14:40:20",
      "content": "<p>What optimizer/scheduler was there ?</p>",
      "rawMarkdown": "What optimizer/scheduler was there ?",
      "votes": null
    },
    {
      "id": "959521",
      "postDate": "08/05/2020 16:48:41",
      "content": "<p>Congratulations! I guess you did not use mmdet, but it would be interesting to see what would happen if you added some features implemented in mmdet such as double head and gen attention to your Faster RCNN model, these two gave me about 0.05-0.06 boost to Faster RCNN resnet50. The double head consistently boosted LB results for all backbones that I've tried for Faster RCNN by 0.02-0.03 including res152.  </p>",
      "rawMarkdown": "Congratulations! I guess you did not use mmdet, but it would be interesting to see what would happen if you added some features implemented in mmdet such as double head and gen attention to your Faster RCNN model, these two gave me about 0.05-0.06 boost to Faster RCNN resnet50. The double head consistently boosted LB results for all backbones that I've tried for Faster RCNN by 0.02-0.03 including res152.",
      "votes": null
    },
    {
      "id": "960627",
      "postDate": "08/06/2020 14:52:55",
      "content": "<p>Thanks for your suggestion <a href=\"/aidynub\">@aidynub</a> </p>",
      "rawMarkdown": "Thanks for your suggestion @aidynub",
      "votes": null
    },
    {
      "id": "960855",
      "postDate": "08/06/2020 18:23:19",
      "content": "<p>Another question: did you freeze any layers of efficientdet in any phase of your training?</p>",
      "rawMarkdown": "Another question: did you freeze any layers of efficientdet in any phase of your training?",
      "votes": null
    },
    {
      "id": "961400",
      "postDate": "08/07/2020 06:47:20",
      "content": "<p>Do you think SPIKE dataset is useful? It is quite noisy. :( And it seems its photos look a little bit different from this training set.<br>\nI see you didn't use its labels as in the 1st place solution. Do you know the boost?</p>",
      "rawMarkdown": "Do you think SPIKE dataset is useful? It is quite noisy. :( And it seems its photos look a little bit different from this training set.\nI see you didn't use its labels as in the 1st place solution. Do you know the boost?",
      "votes": null
    },
    {
      "id": "961412",
      "postDate": "08/07/2020 07:11:56",
      "content": "<p>Here is one of my experiments nearly 2 months ago using fasterRCNN<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F2545270%2F693038ebe35bee667f43fdb798263338%2FScreenshot%20from%202020-08-07%2016-10-52.png?generation=1596784304454586&amp;alt=media\" alt=\"\"><br>\nafter this experiment, SPIKE dataset is my best friend.</p>",
      "rawMarkdown": "Here is one of my experiments nearly 2 months ago using fasterRCNN\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F2545270%2F693038ebe35bee667f43fdb798263338%2FScreenshot%20from%202020-08-07%2016-10-52.png?generation=1596784304454586&amp;alt=media)\nafter this experiment, SPIKE dataset is my best friend.",
      "votes": null
    },
    {
      "id": "961669",
      "postDate": "08/07/2020 11:35:01",
      "content": "<p>No, I didn't</p>",
      "rawMarkdown": "No, I didn't",
      "votes": null
    },
    {
      "id": "961752",
      "postDate": "08/07/2020 13:25:52",
      "content": "<p>Hi,why you gether the results from the boxes from Plabel and not Plabel?</p>",
      "rawMarkdown": "Hi,why you gether the results from the boxes from Plabel and not Plabel?",
      "votes": null
    },
    {
      "id": "962765",
      "postDate": "08/08/2020 12:33:20",
      "content": "<p>Thanks for sharing ...</p>",
      "rawMarkdown": "Thanks for sharing ...",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 961400,
      "author_name": "sergeyzlobin",
      "author_url": "",
      "post_date": "08/07/2020 06:47:20",
      "content": "<p>Do you think SPIKE dataset is useful? It is quite noisy. :( And it seems its photos look a little bit different from this training set.<br>\nI see you didn't use its labels as in the 1st place solution. Do you know the boost?</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 961412,
      "author_name": "nvnnghia",
      "author_url": "",
      "post_date": "08/07/2020 07:11:56",
      "content": "<p>Here is one of my experiments nearly 2 months ago using fasterRCNN<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F2545270%2F693038ebe35bee667f43fdb798263338%2FScreenshot%20from%202020-08-07%2016-10-52.png?generation=1596784304454586&amp;alt=media\" alt=\"\"><br>\nafter this experiment, SPIKE dataset is my best friend.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 961752,
      "author_name": "zekun98",
      "author_url": "",
      "post_date": "08/07/2020 13:25:52",
      "content": "<p>Hi,why you gether the results from the boxes from Plabel and not Plabel?</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 958391,
      "author_name": "jqeric",
      "author_url": "",
      "post_date": "08/05/2020 00:45:34",
      "content": "<p>How did you come up with the faster Rcnn used to predict the pseudo label rather than the D5? </p>",
      "votes": null,
      "replies": [
        {
          "id": 958396,
          "author_name": "nvnnghia",
          "author_url": "",
          "post_date": "08/05/2020 00:48:17",
          "content": "<p>by trial-error. FasterRCNN gives a better result than D5</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 959294,
          "author_name": "zekunn",
          "author_url": "",
          "post_date": "08/05/2020 13:28:51",
          "content": "<p>Why you change to Efficentdet and donot continue to use FasterRCNN in the second stage?</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 958394,
      "author_name": "matthewmasters",
      "author_url": "",
      "post_date": "08/05/2020 00:46:35",
      "content": "<p>Interesting! So you use an ensemble of EffDet models for the pseudolabel prediction, but then use FasterRCNN to train on the PL? Definitely a unique approach! Well done in your ranking, I hope you get bumped up some more as non-compliant submissions get removed :)</p>",
      "votes": null,
      "replies": [
        {
          "id": 958410,
          "author_name": "nvnnghia",
          "author_url": "",
          "post_date": "08/05/2020 01:10:17",
          "content": "<p>Thank <a href=\"/matthewmasters\">@matthewmasters</a> Thanks for your huge contribution in this competition. Yes I use an ensemble of EffDet models for the pseudolabel prediction and FasterRCNN for retraining. </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 958403,
      "author_name": "stanleyjzheng",
      "author_url": "",
      "post_date": "08/05/2020 00:56:22",
      "content": "<p>That's quite an interesting solution! Nice to see such a novel solution. What is the FRCNN backbone just out of interest?</p>",
      "votes": null,
      "replies": [
        {
          "id": 958411,
          "author_name": "nvnnghia",
          "author_url": "",
          "post_date": "08/05/2020 01:10:32",
          "content": "<p>resnet152</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 958407,
      "author_name": "piantic",
      "author_url": "",
      "post_date": "08/05/2020 01:02:07",
      "content": "<p>I know you have worked hard since the beginning of the competition.\nAnd I think you deserve a gold medal. 😊 </p>\n\n<ol>\n<li><p>My question is how you set epochs for pseudo labeling?\nIt is difficult for me because i often got execution time-out error.</p></li>\n<li><p>How you can choose models(how you evaluate model performance)?\nI think that you have a lot of trained models.</p></li>\n</ol>\n\n<p>Thanks!\nI am so happy that you are in the rankings.\n<a href=\"/nvnnghia\">@nvnnghia</a> </p>",
      "votes": null,
      "replies": [
        {
          "id": 958418,
          "author_name": "nvnnghia",
          "author_url": "",
          "post_date": "08/05/2020 01:19:43",
          "content": "<p>Thanks <a href=\"/piantic\">@piantic</a> \n- I retrain fasterRCNN for 7 epochs. I use time tracking on my notebook, so my notebook will stop the training process whenever my notebook meets the time limit (I set it to 5 hours)\n- I kept a fixed validation set at the beginning of the competition (663 images). The validation data is from usask_1 and a part of other sources.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 958425,
          "author_name": "piantic",
          "author_url": "",
          "post_date": "08/05/2020 01:24:14",
          "content": "<p>Oh, I learn a lot from you.\nWe hope to share detailed solutions later.</p>\n\n<p>Thanks <a href=\"/nvnnghia\">@nvnnghia</a> :)</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 958420,
      "author_name": "chabir",
      "author_url": "",
      "post_date": "08/05/2020 01:20:37",
      "content": "<p>this structure feeding D5 labels to yolov3 for retraining in my case was also my best score on private LB. \nDid you end up with images without any bboxes at all by any chance ?</p>",
      "votes": null,
      "replies": [
        {
          "id": 959319,
          "author_name": "nvnnghia",
          "author_url": "",
          "post_date": "08/05/2020 13:50:03",
          "content": "<p>I ignore images without bboxes. Just remember to add an empty string to submission file.</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 958422,
      "author_name": "yoshito",
      "author_url": "",
      "post_date": "08/05/2020 01:23:35",
      "content": "<p>Congratulations!! Your notebook help us a lot!\nYou used Faster RCNN with Res152, right? Did you use any library like torchvision?</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 958497,
      "author_name": "kupchanski",
      "author_url": "",
      "post_date": "08/05/2020 02:50:07",
      "content": "<p>No external data? Nice solution indeed</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 958583,
      "author_name": "ii5m0k3ii",
      "author_url": "",
      "post_date": "08/05/2020 04:12:45",
      "content": "<p>Congratulations to you and your team!\nMay I ask what is the Public and Private score on submitting the model just after 1st ensemble of the 3 models? That is without doing pseudo labelling.</p>",
      "votes": null,
      "replies": [
        {
          "id": 959160,
          "author_name": "nvnnghia",
          "author_url": "",
          "post_date": "08/05/2020 11:47:45",
          "content": "<ul>\n<li>FasterRCNN 0.7582, </li>\n<li>D0: 0.7605</li>\n<li>D5 (512x512): 7584</li>\n<li>D5 (768x768): I didn't check LB score. But I know it is good because of high CV score.</li>\n</ul>\n\n<p>I will update more detail later. </p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 959291,
          "author_name": "zekunn",
          "author_url": "",
          "post_date": "08/05/2020 13:26:59",
          "content": "<p>Is it with Plabel or TTA ?</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 959296,
          "author_name": "nvnnghia",
          "author_url": "",
          "post_date": "08/05/2020 13:30:34",
          "content": "<p>TTA only</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 959299,
          "author_name": "zekunn",
          "author_url": "",
          "post_date": "08/05/2020 13:32:29",
          "content": "<p>Thanks!</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 958727,
      "author_name": "tanmaypandey",
      "author_url": "",
      "post_date": "08/05/2020 05:56:50",
      "content": "<p>Didn't expect FasterRCNN to perform this well. Well done!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 959266,
      "author_name": "nvnnghia",
      "author_url": "",
      "post_date": "08/05/2020 13:04:29",
      "content": "<p>detail updated!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 959376,
      "author_name": "marcinczelej",
      "author_url": "",
      "post_date": "08/05/2020 14:40:20",
      "content": "<p>What optimizer/scheduler was there ?</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 959521,
      "author_name": "aidynub",
      "author_url": "",
      "post_date": "08/05/2020 16:48:41",
      "content": "<p>Congratulations! I guess you did not use mmdet, but it would be interesting to see what would happen if you added some features implemented in mmdet such as double head and gen attention to your Faster RCNN model, these two gave me about 0.05-0.06 boost to Faster RCNN resnet50. The double head consistently boosted LB results for all backbones that I've tried for Faster RCNN by 0.02-0.03 including res152.  </p>",
      "votes": null,
      "replies": [
        {
          "id": 960627,
          "author_name": "nvnnghia",
          "author_url": "",
          "post_date": "08/06/2020 14:52:55",
          "content": "<p>Thanks for your suggestion <a href=\"/aidynub\">@aidynub</a> </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 960855,
      "author_name": "chabir",
      "author_url": "",
      "post_date": "08/06/2020 18:23:19",
      "content": "<p>Another question: did you freeze any layers of efficientdet in any phase of your training?</p>",
      "votes": null,
      "replies": [
        {
          "id": 961669,
          "author_name": "nvnnghia",
          "author_url": "",
          "post_date": "08/07/2020 11:35:01",
          "content": "<p>No, I didn't</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 962765,
      "author_name": "shaitender",
      "author_url": "",
      "post_date": "08/08/2020 12:33:20",
      "content": "<p>Thanks for sharing ...</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "958386": "Congratulation to all, especially to the prize winner and gold medalists and thanks to the organizers for this interesting competition.\nSo here are some essential points of our solutions (I will update more detail later)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2545270%2F4c4ce442608f2f655f7182babf7a7bca%2FUntitled%20Diagram%20(2).png?generation=1596588070622865&amp;alt=media)\n**1. Validation strategy**\nI use a fixed validation set from the beginning of the competition (663 images). The validation data is from usask_1 and a part of other sources.\n**2. Augmentation**\n\n 2.1. My custom augmentation: \n    - crop and pad: I realize that the boxes at the border after cropping is not good. Then I remove all the boxes at the border  and remove the image content inside the boxes too.\n    - crop and resize\n    - resize and pad\n    - [Color Transfer between Images](https://www.cs.tau.ac.il/~turkel/imagepapers/ColorTransfer.pdf)\n    - mixup: Instead of mixup 2 images in training set, I use 1 image in training set and 1 image without wheat head. \n    - Rotation: random rotate images and use pseudo label as ground truth.\n\n  2.2. Albumentation:\n    - A.HorizontalFlip(p=0.5),\n    - A.VerticalFlip(p=0.5),\n    - A.RandomRotate90(p=0.5), \nI don't use mosaic augmentation because it does not want to cooperate with my custom augmentation.\n**3. SPIKE dataset:** I use WBF on pseudo label and provided ground truth label.\n**4. Results**\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-user-content/o/inbox%2F2545270%2F9312433df689b4ebe397f0674b067b9b%2FUntitled.png?generation=1596632145633431&amp;alt=media)\n\nP/s: Is there a chance for us to move into gold zone after verifying solution?",
    "958391": "How did you come up with the faster Rcnn used to predict the pseudo label rather than the D5?",
    "958394": "Interesting! So you use an ensemble of EffDet models for the pseudolabel prediction, but then use FasterRCNN to train on the PL? Definitely a unique approach! Well done in your ranking, I hope you get bumped up some more as non-compliant submissions get removed :)",
    "958396": "by trial-error. FasterRCNN gives a better result than D5",
    "958403": "That's quite an interesting solution! Nice to see such a novel solution. What is the FRCNN backbone just out of interest?",
    "958407": "I know you have worked hard since the beginning of the competition.\nAnd I think you deserve a gold medal. 😊 \n\n1. My question is how you set epochs for pseudo labeling?\nIt is difficult for me because i often got execution time-out error.\n\n2. How you can choose models(how you evaluate model performance)?\nI think that you have a lot of trained models.\n\nThanks!\nI am so happy that you are in the rankings.\n@nvnnghia",
    "958410": "Thank @matthewmasters Thanks for your huge contribution in this competition. Yes I use an ensemble of EffDet models for the pseudolabel prediction and FasterRCNN for retraining.",
    "958411": "resnet152",
    "958418": "Thanks @piantic \n- I retrain fasterRCNN for 7 epochs. I use time tracking on my notebook, so my notebook will stop the training process whenever my notebook meets the time limit (I set it to 5 hours)\n- I kept a fixed validation set at the beginning of the competition (663 images). The validation data is from usask_1 and a part of other sources.",
    "958420": "this structure feeding D5 labels to yolov3 for retraining in my case was also my best score on private LB. \nDid you end up with images without any bboxes at all by any chance ?",
    "958422": "Congratulations!! Your notebook help us a lot!\nYou used Faster RCNN with Res152, right? Did you use any library like torchvision?",
    "958425": "Oh, I learn a lot from you.\nWe hope to share detailed solutions later.\n\nThanks @nvnnghia :)",
    "958497": "No external data? Nice solution indeed",
    "958583": "Congratulations to you and your team!\nMay I ask what is the Public and Private score on submitting the model just after 1st ensemble of the 3 models? That is without doing pseudo labelling.",
    "958727": "Didn't expect FasterRCNN to perform this well. Well done!",
    "959160": "FasterRCNN 0.7582, \n- D0: 0.7605\n- D5 (512x512): 7584\n- D5 (768x768): I didn't check LB score. But I know it is good because of high CV score.\n\nI will update more detail later.",
    "959266": "detail updated!",
    "959291": "Is it with Plabel or TTA ?",
    "959294": "Why you change to Efficentdet and donot continue to use FasterRCNN in the second stage?",
    "959296": "TTA only",
    "959299": "Thanks!",
    "959319": "I ignore images without bboxes. Just remember to add an empty string to submission file.",
    "959376": "What optimizer/scheduler was there ?",
    "959521": "Congratulations! I guess you did not use mmdet, but it would be interesting to see what would happen if you added some features implemented in mmdet such as double head and gen attention to your Faster RCNN model, these two gave me about 0.05-0.06 boost to Faster RCNN resnet50. The double head consistently boosted LB results for all backbones that I've tried for Faster RCNN by 0.02-0.03 including res152.",
    "960627": "Thanks for your suggestion @aidynub",
    "960855": "Another question: did you freeze any layers of efficientdet in any phase of your training?",
    "961400": "Do you think SPIKE dataset is useful? It is quite noisy. :( And it seems its photos look a little bit different from this training set.\nI see you didn't use its labels as in the 1st place solution. Do you know the boost?",
    "961412": "Here is one of my experiments nearly 2 months ago using fasterRCNN\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F2545270%2F693038ebe35bee667f43fdb798263338%2FScreenshot%20from%202020-08-07%2016-10-52.png?generation=1596784304454586&amp;alt=media)\nafter this experiment, SPIKE dataset is my best friend.",
    "961669": "No, I didn't",
    "961752": "Hi,why you gether the results from the boxes from Plabel and not Plabel?",
    "962765": "Thanks for sharing ..."
  },
  "source": "meta"
}