{
  "id": 172567,
  "title": "[16th place solution] ",
  "url": "/competitions/global-wheat-detection/writeups/16th-place-solution",
  "author_name": "",
  "post_date": "2020-08-05T15:15:21.030750900Z",
  "votes": 25,
  "comment_count": 22,
  "views": 0,
  "content": "<p>Thanks to the organizers for this interesting competition! Thanks to my teammates @vandesa003 @kevinzc @xiaoyushowyou2 @karkin96 . Congratulation to all！</p>\n\n<h2>Summary</h2>\n\n<ul>\n<li>Data Augmentation: MultiScale, Mosaic, Mixup, RandomCrop, Cutout, Hue, Brightness, CLAHE, RGBShift, RandomGamma, ToGray, Horizontal and Vertical Flip, Rotate90 </li>\n<li>Backbone: ResNeSt 101, ResNeXt 101 DCNv2</li>\n<li>Neck: FPN </li>\n<li>Head: ATSS</li>\n<li>Loss: Quality Focal Loss + DIOU Loss  </li>\n<li>5x TTA (origin, HorizontalFLIP, VerticalFLIP, ROTATE90, Rotate270) + WBF </li>\n<li>2 models ensemble with WBF</li>\n<li>2 rounds Pseudo Label</li>\n</ul>\n\n<h3>1. Data Split</h3>\n\n<p>We shuffle the train dataset and split to fixed training set and validation set from the beginning of the competition. About 260 images for validation, others are used for training. </p>\n\n<h3>2. Model Training</h3>\n\n<p>We train a ResNeSt 101 and a ResNeXt 101 DcnV2 model for model ensembling. The neck part I tried PAFPN and SEPC, but they didn't work. So we use FPN as the simple neck part. The model heads are both ATSS, because it's quite good performance. And we use the DIOU Loss for box regression and use Quality Focal Loss (<a href=\"https://arxiv.org/pdf/2006.04388.pdf\">https://arxiv.org/pdf/2006.04388.pdf</a>) for classification. I also tried the Distributed Focal Loss in QFL paper. It worked well in COCO dataset. But it didn't work for this dataset. What's more, we adjust the anchor boxes from 8 * strides to 6 * strides. Because the boxes in this dataset are smaller than COCO according to the statistics. We use COCO pretrained models and traing with an input size of 1024, batch size 8, SGD optimizer, 36 epochs for both of these two models. </p>\n\n<h3>3. Model Inference</h3>\n\n<p>We use 5x TTA as listed above. The TTA results are merged by WBF. And the two models outputs are also merged by WBF. Besides, 2 rounds Pseudo Lable are applied for the ResNeSt model. We also tried to apply PL to the DcnV2 model at the same time. But the score droped down comparing with only RS model PL. We guessed that it's caused by the hyperparameters. There are too many inference hyperparameters, such as model score threshold, nms threshold, wbf threshold, pseudo label score threshold and so on. For avoiding over toggling in public test dataset, we only coarsely tuned it according to our knowledge and COCO using.</p>\n\n<h3>4. Final Plan</h3>\n\n<p>ResNeSt + DcnV2 Ensemble -&gt;  ResNeSt Pseudo Label training \n-&gt; ResNeSt' + DcnV2 Ensemble -&gt; ResNeSt PL training \n-&gt; ResNeSt'' + DcnV2 Ensemble</p>\n\n<p>Public Score: 0.7672\nPrivate Score: 0.7125</p>",
  "messages": [
    {
      "id": "959425",
      "postDate": "08/05/2020 15:15:21",
      "content": "<p>Thanks to the organizers for this interesting competition! Thanks to my teammates @vandesa003 @kevinzc @xiaoyushowyou2 @karkin96 . Congratulation to all！</p>\n\n<h2>Summary</h2>\n\n<ul>\n<li>Data Augmentation: MultiScale, Mosaic, Mixup, RandomCrop, Cutout, Hue, Brightness, CLAHE, RGBShift, RandomGamma, ToGray, Horizontal and Vertical Flip, Rotate90 </li>\n<li>Backbone: ResNeSt 101, ResNeXt 101 DCNv2</li>\n<li>Neck: FPN </li>\n<li>Head: ATSS</li>\n<li>Loss: Quality Focal Loss + DIOU Loss  </li>\n<li>5x TTA (origin, HorizontalFLIP, VerticalFLIP, ROTATE90, Rotate270) + WBF </li>\n<li>2 models ensemble with WBF</li>\n<li>2 rounds Pseudo Label</li>\n</ul>\n\n<h3>1. Data Split</h3>\n\n<p>We shuffle the train dataset and split to fixed training set and validation set from the beginning of the competition. About 260 images for validation, others are used for training. </p>\n\n<h3>2. Model Training</h3>\n\n<p>We train a ResNeSt 101 and a ResNeXt 101 DcnV2 model for model ensembling. The neck part I tried PAFPN and SEPC, but they didn't work. So we use FPN as the simple neck part. The model heads are both ATSS, because it's quite good performance. And we use the DIOU Loss for box regression and use Quality Focal Loss (<a href=\"https://arxiv.org/pdf/2006.04388.pdf\">https://arxiv.org/pdf/2006.04388.pdf</a>) for classification. I also tried the Distributed Focal Loss in QFL paper. It worked well in COCO dataset. But it didn't work for this dataset. What's more, we adjust the anchor boxes from 8 * strides to 6 * strides. Because the boxes in this dataset are smaller than COCO according to the statistics. We use COCO pretrained models and traing with an input size of 1024, batch size 8, SGD optimizer, 36 epochs for both of these two models. </p>\n\n<h3>3. Model Inference</h3>\n\n<p>We use 5x TTA as listed above. The TTA results are merged by WBF. And the two models outputs are also merged by WBF. Besides, 2 rounds Pseudo Lable are applied for the ResNeSt model. We also tried to apply PL to the DcnV2 model at the same time. But the score droped down comparing with only RS model PL. We guessed that it's caused by the hyperparameters. There are too many inference hyperparameters, such as model score threshold, nms threshold, wbf threshold, pseudo label score threshold and so on. For avoiding over toggling in public test dataset, we only coarsely tuned it according to our knowledge and COCO using.</p>\n\n<h3>4. Final Plan</h3>\n\n<p>ResNeSt + DcnV2 Ensemble -&gt;  ResNeSt Pseudo Label training \n-&gt; ResNeSt' + DcnV2 Ensemble -&gt; ResNeSt PL training \n-&gt; ResNeSt'' + DcnV2 Ensemble</p>\n\n<p>Public Score: 0.7672\nPrivate Score: 0.7125</p>",
      "rawMarkdown": "Thanks to the organizers for this interesting competition! Thanks to my teammates @vandesa003 @kevinzc @xiaoyushowyou2 @karkin96 . Congratulation to all！\n\n## Summary\n- Data Augmentation: MultiScale, Mosaic, Mixup, RandomCrop, Cutout, Hue, Brightness, CLAHE, RGBShift, RandomGamma, ToGray, Horizontal and Vertical Flip, Rotate90 \n- Backbone: ResNeSt 101, ResNeXt 101 DCNv2\n- Neck: FPN \n- Head: ATSS\n- Loss: Quality Focal Loss + DIOU Loss  \n- 5x TTA (origin, HorizontalFLIP, VerticalFLIP, ROTATE90, Rotate270) + WBF \n- 2 models ensemble with WBF\n- 2 rounds Pseudo Label\n\n### 1. Data Split\nWe shuffle the train dataset and split to fixed training set and validation set from the beginning of the competition. About 260 images for validation, others are used for training. \n\n### 2. Model Training\nWe train a ResNeSt 101 and a ResNeXt 101 DcnV2 model for model ensembling. The neck part I tried PAFPN and SEPC, but they didn't work. So we use FPN as the simple neck part. The model heads are both ATSS, because it's quite good performance. And we use the DIOU Loss for box regression and use Quality Focal Loss (https://arxiv.org/pdf/2006.04388.pdf) for classification. I also tried the Distributed Focal Loss in QFL paper. It worked well in COCO dataset. But it didn't work for this dataset. What's more, we adjust the anchor boxes from 8 * strides to 6 * strides. Because the boxes in this dataset are smaller than COCO according to the statistics. We use COCO pretrained models and traing with an input size of 1024, batch size 8, SGD optimizer, 36 epochs for both of these two models. \n\n### 3. Model Inference\nWe use 5x TTA as listed above. The TTA results are merged by WBF. And the two models outputs are also merged by WBF. Besides, 2 rounds Pseudo Lable are applied for the ResNeSt model. We also tried to apply PL to the DcnV2 model at the same time. But the score droped down comparing with only RS model PL. We guessed that it's caused by the hyperparameters. There are too many inference hyperparameters, such as model score threshold, nms threshold, wbf threshold, pseudo label score threshold and so on. For avoiding over toggling in public test dataset, we only coarsely tuned it according to our knowledge and COCO using.\n\n### 4. Final Plan\nResNeSt + DcnV2 Ensemble -&gt;  ResNeSt Pseudo Label training \n-&gt; ResNeSt' + DcnV2 Ensemble -&gt; ResNeSt PL training \n-&gt; ResNeSt'' + DcnV2 Ensemble\n\nPublic Score: 0.7672\nPrivate Score: 0.7125",
      "votes": null
    },
    {
      "id": "959645",
      "postDate": "08/05/2020 19:16:15",
      "content": "<p>Congratulations! I have not even thought about the size of COCO boxes comparing to ones in the dataset. Thank you for sharing the insights!</p>",
      "rawMarkdown": "Congratulations! I have not even thought about the size of COCO boxes comparing to ones in the dataset. Thank you for sharing the insights!",
      "votes": null
    },
    {
      "id": "959827",
      "postDate": "08/05/2020 23:46:10",
      "content": "<p>Hello,how to add ATSS?</p>",
      "rawMarkdown": "Hello,how to add ATSS?",
      "votes": null
    },
    {
      "id": "959831",
      "postDate": "08/06/2020 00:15:52",
      "content": "<p>Atss is based on fcos. The author makes the source code public. You can read it carefully. </p>",
      "rawMarkdown": "Atss is based on fcos. The author makes the source code public. You can read it carefully.",
      "votes": null
    },
    {
      "id": "959834",
      "postDate": "08/06/2020 00:22:30",
      "content": "<p>Thanks <a href=\"/fangchengji\">@fangchengji</a> ! Great work and congratulations!</p>",
      "rawMarkdown": "Thanks @fangchengji ! Great work and congratulations!",
      "votes": null
    },
    {
      "id": "959838",
      "postDate": "08/06/2020 00:41:45",
      "content": "<p>Oh,do you mean that your baseline is FCOS?</p>",
      "rawMarkdown": "Oh,do you mean that your baseline is FCOS?",
      "votes": null
    },
    {
      "id": "959843",
      "postDate": "08/06/2020 00:49:35",
      "content": "<p>Yes, FCOS + ATSS + GFL. </p>",
      "rawMarkdown": "Yes, FCOS + ATSS + GFL.",
      "votes": null
    },
    {
      "id": "959844",
      "postDate": "08/06/2020 00:51:34",
      "content": "<p>Thanks！</p>",
      "rawMarkdown": "Thanks！",
      "votes": null
    },
    {
      "id": "959847",
      "postDate": "08/06/2020 00:55:38",
      "content": "<p>Hi,you say that you train P_label with ResNeSt and DcnV2,are they train with the whole test set?Or only 10 test images?Is both of them train with Plabel in a same notebook to submit? Thank you for your advice.</p>",
      "rawMarkdown": "Hi,you say that you train P_label with ResNeSt and DcnV2,are they train with the whole test set?Or only 10 test images?Is both of them train with Plabel in a same notebook to submit? Thank you for your advice.",
      "votes": null
    },
    {
      "id": "959848",
      "postDate": "08/06/2020 01:00:42",
      "content": "<p>PL is trained on the whole test images for 4 epoch. Yes, it's on the same Notebook one by one with a batch size 4. </p>",
      "rawMarkdown": "PL is trained on the whole test images for 4 epoch. Yes, it's on the same Notebook one by one with a batch size 4.",
      "votes": null
    },
    {
      "id": "959851",
      "postDate": "08/06/2020 01:07:12",
      "content": "<p>Is DcnV2 donot train with Plabel?</p>",
      "rawMarkdown": "Is DcnV2 donot train with Plabel?",
      "votes": null
    },
    {
      "id": "959855",
      "postDate": "08/06/2020 01:11:20",
      "content": "<p>Yes, we don't PL train dcnv2 in the final plan.</p>",
      "rawMarkdown": "Yes, we don't PL train dcnv2 in the final plan.",
      "votes": null
    },
    {
      "id": "959857",
      "postDate": "08/06/2020 01:17:14",
      "content": "<p>Thank you for your nice work!</p>",
      "rawMarkdown": "Thank you for your nice work!",
      "votes": null
    },
    {
      "id": "959934",
      "postDate": "08/06/2020 03:16:53",
      "content": "<p>Thank you <a href=\"/fangcheng\">@fangcheng</a> for the amazing work</p>",
      "rawMarkdown": "Thank you @fangcheng for the amazing work",
      "votes": null
    },
    {
      "id": "960020",
      "postDate": "08/06/2020 04:57:31",
      "content": "<p>Thanks for sharing and well explanation.</p>\n\n<p>Congrats <a href=\"/fangcheng\">@fangcheng</a> and <a href=\"/vandesa003\">@vandesa003</a> <a href=\"/kevinzc\">@kevinzc</a> <a href=\"/xiaoyushowyou2\">@xiaoyushowyou2</a> <a href=\"/karkin96\">@karkin96</a>.</p>",
      "rawMarkdown": "Thanks for sharing and well explanation.\n\nCongrats @fangcheng and @vandesa003 @kevinzc @xiaoyushowyou2 @karkin96.",
      "votes": null
    },
    {
      "id": "960103",
      "postDate": "08/06/2020 06:23:43",
      "content": "<p>hello，Do you mean that the  fcos backbone is resnest？</p>",
      "rawMarkdown": "hello，Do you mean that the  fcos backbone is resnest？",
      "votes": null
    },
    {
      "id": "960165",
      "postDate": "08/06/2020 07:29:46",
      "content": "<p>Yes, the two models are both FCOS + ATSS + GFL. Only the backbones are different. One of the model is ResNeSt-101, the other one is ResNeXt-101-dcnV2. </p>",
      "rawMarkdown": "Yes, the two models are both FCOS + ATSS + GFL. Only the backbones are different. One of the model is ResNeSt-101, the other one is ResNeXt-101-dcnV2.",
      "votes": null
    },
    {
      "id": "960858",
      "postDate": "08/06/2020 18:31:15",
      "content": "<p>Great work! . Can you share your notebook so we can learn from it</p>",
      "rawMarkdown": "Great work! . Can you share your notebook so we can learn from it",
      "votes": null
    },
    {
      "id": "961092",
      "postDate": "08/06/2020 22:41:28",
      "content": "<p>Great work!There are some example coode about how to implement Mosaic aug in MMdetection？</p>",
      "rawMarkdown": "Great work!There are some example coode about how to implement Mosaic aug in MMdetection？",
      "votes": null
    },
    {
      "id": "961159",
      "postDate": "08/07/2020 00:47:21",
      "content": "<p>Sorry, we don't use MMdetection. We use Detectron2</p>",
      "rawMarkdown": "Sorry, we don't use MMdetection. We use Detectron2",
      "votes": null
    },
    {
      "id": "961172",
      "postDate": "08/07/2020 01:02:00",
      "content": "<p>Thanks for your interest in our notebook. But the notebook is only inference code. We train the model in ourselves workstation. The code is based on Detectron2 and implemented by ourselves. If you are interested in ATSS and GFL, you can refer to MMdetection. It also implements these algorithms. </p>",
      "rawMarkdown": "Thanks for your interest in our notebook. But the notebook is only inference code. We train the model in ourselves workstation. The code is based on Detectron2 and implemented by ourselves. If you are interested in ATSS and GFL, you can refer to MMdetection. It also implements these algorithms.",
      "votes": null
    },
    {
      "id": "961174",
      "postDate": "08/07/2020 01:03:57",
      "content": "<p>I want to know how ablu augmentation and mosaic are combined? Specifically, is it to use mosaic to concat four images first, and then use ablu for augmentation?</p>",
      "rawMarkdown": "I want to know how ablu augmentation and mosaic are combined? Specifically, is it to use mosaic to concat four images first, and then use ablu for augmentation?",
      "votes": null
    },
    {
      "id": "961397",
      "postDate": "08/07/2020 06:42:16",
      "content": "<p>Yes, you are right. We apply one of mosaic and mixup aug first, and then apply albumentations augmentations. </p>",
      "rawMarkdown": "Yes, you are right. We apply one of mosaic and mixup aug first, and then apply albumentations augmentations.",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 959645,
      "author_name": "",
      "author_url": "",
      "post_date": "08/05/2020 19:16:15",
      "content": "<p>Congratulations! I have not even thought about the size of COCO boxes comparing to ones in the dataset. Thank you for sharing the insights!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 959827,
      "author_name": "zekunn",
      "author_url": "",
      "post_date": "08/05/2020 23:46:10",
      "content": "<p>Hello,how to add ATSS?</p>",
      "votes": null,
      "replies": [
        {
          "id": 959831,
          "author_name": "fangcheng",
          "author_url": "",
          "post_date": "08/06/2020 00:15:52",
          "content": "<p>Atss is based on fcos. The author makes the source code public. You can read it carefully. </p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 959838,
          "author_name": "zekunn",
          "author_url": "",
          "post_date": "08/06/2020 00:41:45",
          "content": "<p>Oh,do you mean that your baseline is FCOS?</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 959843,
          "author_name": "fangcheng",
          "author_url": "",
          "post_date": "08/06/2020 00:49:35",
          "content": "<p>Yes, FCOS + ATSS + GFL. </p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 959844,
          "author_name": "zekunn",
          "author_url": "",
          "post_date": "08/06/2020 00:51:34",
          "content": "<p>Thanks！</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 959834,
      "author_name": "vandesa003",
      "author_url": "",
      "post_date": "08/06/2020 00:22:30",
      "content": "<p>Thanks <a href=\"/fangchengji\">@fangchengji</a> ! Great work and congratulations!</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 959847,
      "author_name": "zekunn",
      "author_url": "",
      "post_date": "08/06/2020 00:55:38",
      "content": "<p>Hi,you say that you train P_label with ResNeSt and DcnV2,are they train with the whole test set?Or only 10 test images?Is both of them train with Plabel in a same notebook to submit? Thank you for your advice.</p>",
      "votes": null,
      "replies": [
        {
          "id": 959848,
          "author_name": "fangcheng",
          "author_url": "",
          "post_date": "08/06/2020 01:00:42",
          "content": "<p>PL is trained on the whole test images for 4 epoch. Yes, it's on the same Notebook one by one with a batch size 4. </p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 959851,
          "author_name": "zekunn",
          "author_url": "",
          "post_date": "08/06/2020 01:07:12",
          "content": "<p>Is DcnV2 donot train with Plabel?</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 959855,
          "author_name": "fangcheng",
          "author_url": "",
          "post_date": "08/06/2020 01:11:20",
          "content": "<p>Yes, we don't PL train dcnv2 in the final plan.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 959857,
          "author_name": "zekunn",
          "author_url": "",
          "post_date": "08/06/2020 01:17:14",
          "content": "<p>Thank you for your nice work!</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 959934,
      "author_name": "xiaoyushowyou2",
      "author_url": "",
      "post_date": "08/06/2020 03:16:53",
      "content": "<p>Thank you <a href=\"/fangcheng\">@fangcheng</a> for the amazing work</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 960020,
      "author_name": "piantic",
      "author_url": "",
      "post_date": "08/06/2020 04:57:31",
      "content": "<p>Thanks for sharing and well explanation.</p>\n\n<p>Congrats <a href=\"/fangcheng\">@fangcheng</a> and <a href=\"/vandesa003\">@vandesa003</a> <a href=\"/kevinzc\">@kevinzc</a> <a href=\"/xiaoyushowyou2\">@xiaoyushowyou2</a> <a href=\"/karkin96\">@karkin96</a>.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 960103,
      "author_name": "zekun98",
      "author_url": "",
      "post_date": "08/06/2020 06:23:43",
      "content": "<p>hello，Do you mean that the  fcos backbone is resnest？</p>",
      "votes": null,
      "replies": [
        {
          "id": 960165,
          "author_name": "fangcheng",
          "author_url": "",
          "post_date": "08/06/2020 07:29:46",
          "content": "<p>Yes, the two models are both FCOS + ATSS + GFL. Only the backbones are different. One of the model is ResNeSt-101, the other one is ResNeXt-101-dcnV2. </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 960858,
      "author_name": "samgod",
      "author_url": "",
      "post_date": "08/06/2020 18:31:15",
      "content": "<p>Great work! . Can you share your notebook so we can learn from it</p>",
      "votes": null,
      "replies": [
        {
          "id": 961172,
          "author_name": "fangcheng",
          "author_url": "",
          "post_date": "08/07/2020 01:02:00",
          "content": "<p>Thanks for your interest in our notebook. But the notebook is only inference code. We train the model in ourselves workstation. The code is based on Detectron2 and implemented by ourselves. If you are interested in ATSS and GFL, you can refer to MMdetection. It also implements these algorithms. </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 961092,
      "author_name": "chenzyhust2018",
      "author_url": "",
      "post_date": "08/06/2020 22:41:28",
      "content": "<p>Great work!There are some example coode about how to implement Mosaic aug in MMdetection？</p>",
      "votes": null,
      "replies": [
        {
          "id": 961159,
          "author_name": "fangcheng",
          "author_url": "",
          "post_date": "08/07/2020 00:47:21",
          "content": "<p>Sorry, we don't use MMdetection. We use Detectron2</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 961174,
          "author_name": "chenzyhust2018",
          "author_url": "",
          "post_date": "08/07/2020 01:03:57",
          "content": "<p>I want to know how ablu augmentation and mosaic are combined? Specifically, is it to use mosaic to concat four images first, and then use ablu for augmentation?</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 961397,
          "author_name": "fangcheng",
          "author_url": "",
          "post_date": "08/07/2020 06:42:16",
          "content": "<p>Yes, you are right. We apply one of mosaic and mixup aug first, and then apply albumentations augmentations. </p>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "959425": "Thanks to the organizers for this interesting competition! Thanks to my teammates @vandesa003 @kevinzc @xiaoyushowyou2 @karkin96 . Congratulation to all！\n\n## Summary\n- Data Augmentation: MultiScale, Mosaic, Mixup, RandomCrop, Cutout, Hue, Brightness, CLAHE, RGBShift, RandomGamma, ToGray, Horizontal and Vertical Flip, Rotate90 \n- Backbone: ResNeSt 101, ResNeXt 101 DCNv2\n- Neck: FPN \n- Head: ATSS\n- Loss: Quality Focal Loss + DIOU Loss  \n- 5x TTA (origin, HorizontalFLIP, VerticalFLIP, ROTATE90, Rotate270) + WBF \n- 2 models ensemble with WBF\n- 2 rounds Pseudo Label\n\n### 1. Data Split\nWe shuffle the train dataset and split to fixed training set and validation set from the beginning of the competition. About 260 images for validation, others are used for training. \n\n### 2. Model Training\nWe train a ResNeSt 101 and a ResNeXt 101 DcnV2 model for model ensembling. The neck part I tried PAFPN and SEPC, but they didn't work. So we use FPN as the simple neck part. The model heads are both ATSS, because it's quite good performance. And we use the DIOU Loss for box regression and use Quality Focal Loss (https://arxiv.org/pdf/2006.04388.pdf) for classification. I also tried the Distributed Focal Loss in QFL paper. It worked well in COCO dataset. But it didn't work for this dataset. What's more, we adjust the anchor boxes from 8 * strides to 6 * strides. Because the boxes in this dataset are smaller than COCO according to the statistics. We use COCO pretrained models and traing with an input size of 1024, batch size 8, SGD optimizer, 36 epochs for both of these two models. \n\n### 3. Model Inference\nWe use 5x TTA as listed above. The TTA results are merged by WBF. And the two models outputs are also merged by WBF. Besides, 2 rounds Pseudo Lable are applied for the ResNeSt model. We also tried to apply PL to the DcnV2 model at the same time. But the score droped down comparing with only RS model PL. We guessed that it's caused by the hyperparameters. There are too many inference hyperparameters, such as model score threshold, nms threshold, wbf threshold, pseudo label score threshold and so on. For avoiding over toggling in public test dataset, we only coarsely tuned it according to our knowledge and COCO using.\n\n### 4. Final Plan\nResNeSt + DcnV2 Ensemble -&gt;  ResNeSt Pseudo Label training \n-&gt; ResNeSt' + DcnV2 Ensemble -&gt; ResNeSt PL training \n-&gt; ResNeSt'' + DcnV2 Ensemble\n\nPublic Score: 0.7672\nPrivate Score: 0.7125",
    "959645": "Congratulations! I have not even thought about the size of COCO boxes comparing to ones in the dataset. Thank you for sharing the insights!",
    "959827": "Hello,how to add ATSS?",
    "959831": "Atss is based on fcos. The author makes the source code public. You can read it carefully.",
    "959834": "Thanks @fangchengji ! Great work and congratulations!",
    "959838": "Oh,do you mean that your baseline is FCOS?",
    "959843": "Yes, FCOS + ATSS + GFL.",
    "959844": "Thanks！",
    "959847": "Hi,you say that you train P_label with ResNeSt and DcnV2,are they train with the whole test set?Or only 10 test images?Is both of them train with Plabel in a same notebook to submit? Thank you for your advice.",
    "959848": "PL is trained on the whole test images for 4 epoch. Yes, it's on the same Notebook one by one with a batch size 4.",
    "959851": "Is DcnV2 donot train with Plabel?",
    "959855": "Yes, we don't PL train dcnv2 in the final plan.",
    "959857": "Thank you for your nice work!",
    "959934": "Thank you @fangcheng for the amazing work",
    "960020": "Thanks for sharing and well explanation.\n\nCongrats @fangcheng and @vandesa003 @kevinzc @xiaoyushowyou2 @karkin96.",
    "960103": "hello，Do you mean that the  fcos backbone is resnest？",
    "960165": "Yes, the two models are both FCOS + ATSS + GFL. Only the backbones are different. One of the model is ResNeSt-101, the other one is ResNeXt-101-dcnV2.",
    "960858": "Great work! . Can you share your notebook so we can learn from it",
    "961092": "Great work!There are some example coode about how to implement Mosaic aug in MMdetection？",
    "961159": "Sorry, we don't use MMdetection. We use Detectron2",
    "961172": "Thanks for your interest in our notebook. But the notebook is only inference code. We train the model in ourselves workstation. The code is based on Detectron2 and implemented by ourselves. If you are interested in ATSS and GFL, you can refer to MMdetection. It also implements these algorithms.",
    "961174": "I want to know how ablu augmentation and mosaic are combined? Specifically, is it to use mosaic to concat four images first, and then use ablu for augmentation?",
    "961397": "Yes, you are right. We apply one of mosaic and mixup aug first, and then apply albumentations augmentations."
  },
  "source": "meta"
}