{
  "id": 307786,
  "title": "7th Place Solution - Cascade RCNN+Tracking ( Public LB is not all you need.) ",
  "url": "/competitions/tensorflow-great-barrier-reef/writeups/three-man-works-7th-place-solution-cascade-rcnn-tr",
  "author_name": "",
  "post_date": "2022-02-16T01:45:12.767Z",
  "votes": 45,
  "comment_count": 18,
  "views": 0,
  "content": "<p>We sincerely thank the Tensorflow organization for hosting this awesome competition. Please allow me to send my best regards to my teammates for their dedicated efforts. <br>\nThis is the first detection competition for our team and it is a great honor for us to obtain the final score of Rank 7. <br>\nThe overall solution is based on Highly Customized Cascade RCNN with Tracking as a post-process method. Moreover, the good fortune and the robustness of the overall design play a vital role in this competition. </p>\n<h1>Summary</h1>\n<p>The main idea of our method is based on the stronger baseline <strong>cascade rcnn model design</strong> with lots of customized features, the <strong>careful-crafted data augmentation strategy</strong> and <strong>object tracking post-procedure</strong>. Our method is a single model approach and it does not rely on any ensemble strategy. </p>\n<h2>Data Split. [Update]</h2>\n<p>At the beginning of the competition,  we split the dataset with a randomly split training set by video ids. <br>\nWe use train-val set split to select the appropriate model. After selecting an appropriate model design, We switch to the full trainset and perform the comparison on Public LB. </p>\n<h2>Stronger Baseline of Cascade RCNN.</h2>\n<p>The team has designed a customized Cascade RCNN baseline. The majority of model improvements are listed as follows. </p>\n<ol>\n<li>Stronger Backbone: ResNet -&gt; ResneXt -&gt; Res2Net -&gt; CBNet; </li>\n<li>Enhanced FPN: FPN -&gt; PAFPN; </li>\n<li>Customized Detection Heads: Cascade RCNN Head -&gt; Double Head Cascade RCNN Head;</li>\n<li>Loss function: Smooth L1 loss -&gt; IoU Based Loss;</li>\n</ol>\n<h2>Careful-crafted Data Augmentation Strategy.</h2>\n<ol>\n<li>Weak Aug: Flip, RandomBrightnessContrast, RGBShift, HueSaturationValue, Noise, CLAHE, Affine, Rotate</li>\n<li>Strong Aug: Copy-Paste, Mosaic, AutoAugmentation V1 policy, Mixup, Cutout</li>\n<li>MS Training and Testing: [0.8 * image_size, 1.2 * image_size]</li>\n</ol>\n<h2>Object Tracking as Post Process.</h2>\n<p>Inspired by <a href=\"https://www.kaggle.com/parapapapam\" target=\"_blank\">@parapapapam</a> (<a href=\"https://www.kaggle.com/parapapapam/yolox-inference-tracking-on-cots-lb-0-539)\" target=\"_blank\">https://www.kaggle.com/parapapapam/yolox-inference-tracking-on-cots-lb-0-539)</a>, We adopt Norfair tracking as a post-process and gain a performance boost. Thanks for the kind sharing.</p>\n<h2>Public LB is not all you need.</h2>\n<p>Since our method is based on the above-mentioned methodology, the proposed method suffers from a significant performance drop in public LB. The team is in deep desperation when the rank of public LB goes to No. 1000. Thankfully, the proposed method demonstrates its robustness in the private LB. </p>\n<p>We have learned a lot from the competition, and our method can get an additional performance boost if we have more time on exploring model ensemble strategies. </p>\n<h2>Most Commonly Asked Questions:</h2>\n<p>Thank you for everyone who shows great respect to this competition. Our implementation of Cascade RCNN are build on [1]. Since kaggle notebook is not friendly for MMDetection codebases (All custom codes turns to private_datasets… ) and some private code issues (Company limitations), we will clean up the codebase, construct a public notebook and share detailed configurations in the future. <br>\n[1] <a href=\"https://github.com/shinya7y/UniverseNet\" target=\"_blank\">https://github.com/shinya7y/UniverseNet</a></p>",
  "messages": [
    {
      "id": "1691797",
      "postDate": "02/15/2022 16:04:34",
      "content": "<p>We sincerely thank the Tensorflow organization for hosting this awesome competition. Please allow me to send my best regards to my teammates for their dedicated efforts. <br>\nThis is the first detection competition for our team and it is a great honor for us to obtain the final score of Rank 7. <br>\nThe overall solution is based on Highly Customized Cascade RCNN with Tracking as a post-process method. Moreover, the good fortune and the robustness of the overall design play a vital role in this competition. </p>\n<h1>Summary</h1>\n<p>The main idea of our method is based on the stronger baseline <strong>cascade rcnn model design</strong> with lots of customized features, the <strong>careful-crafted data augmentation strategy</strong> and <strong>object tracking post-procedure</strong>. Our method is a single model approach and it does not rely on any ensemble strategy. </p>\n<h2>Data Split. [Update]</h2>\n<p>At the beginning of the competition,  we split the dataset with a randomly split training set by video ids. <br>\nWe use train-val set split to select the appropriate model. After selecting an appropriate model design, We switch to the full trainset and perform the comparison on Public LB. </p>\n<h2>Stronger Baseline of Cascade RCNN.</h2>\n<p>The team has designed a customized Cascade RCNN baseline. The majority of model improvements are listed as follows. </p>\n<ol>\n<li>Stronger Backbone: ResNet -&gt; ResneXt -&gt; Res2Net -&gt; CBNet; </li>\n<li>Enhanced FPN: FPN -&gt; PAFPN; </li>\n<li>Customized Detection Heads: Cascade RCNN Head -&gt; Double Head Cascade RCNN Head;</li>\n<li>Loss function: Smooth L1 loss -&gt; IoU Based Loss;</li>\n</ol>\n<h2>Careful-crafted Data Augmentation Strategy.</h2>\n<ol>\n<li>Weak Aug: Flip, RandomBrightnessContrast, RGBShift, HueSaturationValue, Noise, CLAHE, Affine, Rotate</li>\n<li>Strong Aug: Copy-Paste, Mosaic, AutoAugmentation V1 policy, Mixup, Cutout</li>\n<li>MS Training and Testing: [0.8 * image_size, 1.2 * image_size]</li>\n</ol>\n<h2>Object Tracking as Post Process.</h2>\n<p>Inspired by <a href=\"https://www.kaggle.com/parapapapam\" target=\"_blank\">@parapapapam</a> (<a href=\"https://www.kaggle.com/parapapapam/yolox-inference-tracking-on-cots-lb-0-539)\" target=\"_blank\">https://www.kaggle.com/parapapapam/yolox-inference-tracking-on-cots-lb-0-539)</a>, We adopt Norfair tracking as a post-process and gain a performance boost. Thanks for the kind sharing.</p>\n<h2>Public LB is not all you need.</h2>\n<p>Since our method is based on the above-mentioned methodology, the proposed method suffers from a significant performance drop in public LB. The team is in deep desperation when the rank of public LB goes to No. 1000. Thankfully, the proposed method demonstrates its robustness in the private LB. </p>\n<p>We have learned a lot from the competition, and our method can get an additional performance boost if we have more time on exploring model ensemble strategies. </p>\n<h2>Most Commonly Asked Questions:</h2>\n<p>Thank you for everyone who shows great respect to this competition. Our implementation of Cascade RCNN are build on [1]. Since kaggle notebook is not friendly for MMDetection codebases (All custom codes turns to private_datasets… ) and some private code issues (Company limitations), we will clean up the codebase, construct a public notebook and share detailed configurations in the future. <br>\n[1] <a href=\"https://github.com/shinya7y/UniverseNet\" target=\"_blank\">https://github.com/shinya7y/UniverseNet</a></p>",
      "rawMarkdown": "We sincerely thank the Tensorflow organization for hosting this awesome competition. Please allow me to send my best regards to my teammates for their dedicated efforts. \nThis is the first detection competition for our team and it is a great honor for us to obtain the final score of Rank 7. \nThe overall solution is based on Highly Customized Cascade RCNN with Tracking as a post-process method. Moreover, the good fortune and the robustness of the overall design play a vital role in this competition. \n\n# Summary\nThe main idea of our method is based on the stronger baseline **cascade rcnn model design** with lots of customized features, the **careful-crafted data augmentation strategy** and **object tracking post-procedure**. Our method is a single model approach and it does not rely on any ensemble strategy. \n\n## Data Split. [Update]  \nAt the beginning of the competition,  we split the dataset with a randomly split training set by video ids. \nWe use train-val set split to select the appropriate model. After selecting an appropriate model design, We switch to the full trainset and perform the comparison on Public LB. \n\n## Stronger Baseline of Cascade RCNN.\nThe team has designed a customized Cascade RCNN baseline. The majority of model improvements are listed as follows. \n1. Stronger Backbone: ResNet -> ResneXt -> Res2Net -> CBNet; \n2. Enhanced FPN: FPN -> PAFPN; \n3. Customized Detection Heads: Cascade RCNN Head -> Double Head Cascade RCNN Head;\n4. Loss function: Smooth L1 loss -> IoU Based Loss;\n\n## Careful-crafted Data Augmentation Strategy.\n1. Weak Aug: Flip, RandomBrightnessContrast, RGBShift, HueSaturationValue, Noise, CLAHE, Affine, Rotate\n2. Strong Aug: Copy-Paste, Mosaic, AutoAugmentation V1 policy, Mixup, Cutout\n3. MS Training and Testing: [0.8 * image_size, 1.2 * image_size]\n\n## Object Tracking as Post Process. \nInspired by @parapapapam (https://www.kaggle.com/parapapapam/yolox-inference-tracking-on-cots-lb-0-539), We adopt Norfair tracking as a post-process and gain a performance boost. Thanks for the kind sharing.\n\n## Public LB is not all you need. \nSince our method is based on the above-mentioned methodology, the proposed method suffers from a significant performance drop in public LB. The team is in deep desperation when the rank of public LB goes to No. 1000. Thankfully, the proposed method demonstrates its robustness in the private LB. \n\nWe have learned a lot from the competition, and our method can get an additional performance boost if we have more time on exploring model ensemble strategies. \n\n## Most Commonly Asked Questions: \nThank you for everyone who shows great respect to this competition. Our implementation of Cascade RCNN are build on [1]. Since kaggle notebook is not friendly for MMDetection codebases (All custom codes turns to private_datasets... ) and some private code issues (Company limitations), we will clean up the codebase, construct a public notebook and share detailed configurations in the future. \n[1] https://github.com/shinya7y/UniverseNet",
      "votes": null
    },
    {
      "id": "1691831",
      "postDate": "02/15/2022 16:29:25",
      "content": "<p>thanks for sharing your solution. i also tried 2 stage model but failed :( i want to study your code, can you share code?? thanks </p>",
      "rawMarkdown": "thanks for sharing your solution. i also tried 2 stage model but failed :( i want to study your code, can you share code?? thanks",
      "votes": null
    },
    {
      "id": "1692056",
      "postDate": "02/15/2022 19:18:28",
      "content": "<p>Thanks so much for sharing your solution and congratulations on the amazing finish with a single model! </p>\n<p>Could you please clarify what these refer to:</p>\n<ul>\n<li>PAFPN:</li>\n</ul>\n<blockquote>\n  <p>Enhanced FPN: FPN -&gt; PAFPN;</p>\n</blockquote>\n<ul>\n<li>Weak Vs Strong augmentation-I assume this means you are applying some with a higher %? </li>\n<li>Could you kindly point me to where I may read about <code>AutoAugmentation V1 policy</code></li>\n</ul>\n<p>Thanks in advance!</p>",
      "rawMarkdown": "Thanks so much for sharing your solution and congratulations on the amazing finish with a single model! \n\nCould you please clarify what these refer to:\n\n- PAFPN:\n\n> Enhanced FPN: FPN -> PAFPN;\n\n- Weak Vs Strong augmentation-I assume this means you are applying some with a higher %? \n- Could you kindly point me to where I may read about ` AutoAugmentation V1 policy`\n\nThanks in advance!",
      "votes": null
    },
    {
      "id": "1692118",
      "postDate": "02/15/2022 20:47:05",
      "content": "<p>Congratulations!! You did an amazing jump +1000 positions with a strong <strong>single model</strong> !!</p>\n<p>BTW </p>\n<ol>\n<li>what was your CV score on video split?  </li>\n<li>how many epochs you train ?</li>\n</ol>",
      "rawMarkdown": "Congratulations!! You did an amazing jump +1000 positions with a strong **single model** !!\n\nBTW \n1. what was your CV score on video split?  \n2. how many epochs you train ?",
      "votes": null
    },
    {
      "id": "1692140",
      "postDate": "02/15/2022 21:24:10",
      "content": "<p>Is any chance you publish your notebook (or publish solution to github). Why I am asking? I am interested in your experiments with NN configuration (Highly Customized Cascade RCNN ). It would be great tutorial for many of us. </p>\n<p>How your validation procedure looks like? Respect for being such patience and wait for final result looking from position #1000. </p>",
      "rawMarkdown": "Is any chance you publish your notebook (or publish solution to github). Why I am asking? I am interested in your experiments with NN configuration (Highly Customized Cascade RCNN ). It would be great tutorial for many of us. \n\nHow your validation procedure looks like? Respect for being such patience and wait for final result looking from position #1000.",
      "votes": null
    },
    {
      "id": "1692326",
      "postDate": "02/16/2022 01:17:02",
      "content": "<p>We will clean the codebase and ask for public permission from the company to publish solution as soon as possible. You can refer to <a href=\"https://github.com/shinya7y/UniverseNet\" target=\"_blank\">https://github.com/shinya7y/UniverseNet</a> and the majority of features is implemented. <br>\nE,g. Stronger Backbone, Enhanced FPN and Loss function for bbox regressivion. <br>\nWe did offline validation on train-val split to select appropriate model. (Unfortunately, after dropping to rank #200, we follow popular notebooks and did not improve our 2stage-model).</p>",
      "rawMarkdown": "We will clean the codebase and ask for public permission from the company to publish solution as soon as possible. You can refer to https://github.com/shinya7y/UniverseNet and the majority of features is implemented. \nE,g. Stronger Backbone, Enhanced FPN and Loss function for bbox regressivion. \nWe did offline validation on train-val split to select appropriate model. (Unfortunately, after dropping to rank #200, we follow popular notebooks and did not improve our 2stage-model).",
      "votes": null
    },
    {
      "id": "1692328",
      "postDate": "02/16/2022 01:18:23",
      "content": "<p>We will clean the codebase and ask for public permission from the company to publish solution as soon as possible. You can refer to <a href=\"https://github.com/shinya7y/UniverseNet\" target=\"_blank\">https://github.com/shinya7y/UniverseNet</a> and the majority of features is implemented.<br>\nWe find that stronger backbones did benefit the two-stage design and loss function with iou loss also works.</p>",
      "rawMarkdown": "We will clean the codebase and ask for public permission from the company to publish solution as soon as possible. You can refer to https://github.com/shinya7y/UniverseNet and the majority of features is implemented.\nWe find that stronger backbones did benefit the two-stage design and loss function with iou loss also works.",
      "votes": null
    },
    {
      "id": "1692330",
      "postDate": "02/16/2022 01:20:12",
      "content": "<ol>\n<li>Sorry about the record is missing. We are trying to find the detailed information of CV Score on different video split. </li>\n<li>We follow 1x training schedule as commonly mmdet configurations.</li>\n</ol>",
      "rawMarkdown": "1. Sorry about the record is missing. We are trying to find the detailed information of CV Score on different video split. \n2. We follow 1x training schedule as commonly mmdet configurations.",
      "votes": null
    },
    {
      "id": "1692333",
      "postDate": "02/16/2022 01:24:32",
      "content": "<ol>\n<li>As for PAFPN, you can refer to [1] for detailed implementations. </li>\n<li>The Weak augmentation indicates image augmentation operations that always work on the majority of OD tasks. The Strong augmentation is not stable and requires lots of experiments.</li>\n<li>AutoAugmentation V1 policy: You can refer to [2] for auto-augmentation policy. </li>\n</ol>\n<p>[1] <a href=\"https://github.com/open-mmlab/mmdetection/blob/master/configs/pafpn/faster_rcnn_r50_pafpn_1x_coco.py\" target=\"_blank\">https://github.com/open-mmlab/mmdetection/blob/master/configs/pafpn/faster_rcnn_r50_pafpn_1x_coco.py</a><br>\n[2] Learning Data Augmentation Strategies for Object Detection <a href=\"https://arxiv.org/pdf/1906.11172\" target=\"_blank\">https://arxiv.org/pdf/1906.11172</a></p>",
      "rawMarkdown": "1. As for PAFPN, you can refer to [1] for detailed implementations. \n2. The Weak augmentation indicates image augmentation operations that always work on the majority of OD tasks. The Strong augmentation is not stable and requires lots of experiments.\n3. AutoAugmentation V1 policy: You can refer to [2] for auto-augmentation policy. \n\n[1] https://github.com/open-mmlab/mmdetection/blob/master/configs/pafpn/faster_rcnn_r50_pafpn_1x_coco.py\n[2] Learning Data Augmentation Strategies for Object Detection <https://arxiv.org/pdf/1906.11172>",
      "votes": null
    },
    {
      "id": "1692334",
      "postDate": "02/16/2022 01:26:18",
      "content": "<p>Good job ! Just one question, how did you use validation set when you train on the whole train set?</p>",
      "rawMarkdown": "Good job ! Just one question, how did you use validation set when you train on the whole train set?",
      "votes": null
    },
    {
      "id": "1692348",
      "postDate": "02/16/2022 01:43:51",
      "content": "<ol>\n<li>It might be confusion with the poor writing. We only use offline validation set in model_selection procedure(Train on splited trainset and Validate on splited valset). When we switch to full dataset training, we only rely on Public LB. </li>\n</ol>",
      "rawMarkdown": "1. It might be confusion with the poor writing. We only use offline validation set in model_selection procedure(Train on splited trainset and Validate on splited valset). When we switch to full dataset training, we only rely on Public LB.",
      "votes": null
    },
    {
      "id": "1692357",
      "postDate": "02/16/2022 01:59:04",
      "content": "<p>Congratulations! Amazing work.</p>",
      "rawMarkdown": "Congratulations! Amazing work.",
      "votes": null
    },
    {
      "id": "1692386",
      "postDate": "02/16/2022 02:27:48",
      "content": "<p>Thanks for sharing ! I'll look forward to the publishing code :) </p>",
      "rawMarkdown": "Thanks for sharing ! I'll look forward to the publishing code :)",
      "votes": null
    },
    {
      "id": "1692393",
      "postDate": "02/16/2022 02:35:54",
      "content": "<p>Thank you!</p>",
      "rawMarkdown": "Thank you!",
      "votes": null
    },
    {
      "id": "1692408",
      "postDate": "02/16/2022 02:41:55",
      "content": "<p>Hello, congratulations on your 7th place in this competition, I have a question to ask you for advice, when I use the YOLOv5 object detection model, under the premise of the same hyperparameters, the results are different each time , does mmdetection have this problem and how did you solve it?</p>",
      "rawMarkdown": "Hello, congratulations on your 7th place in this competition, I have a question to ask you for advice, when I use the YOLOv5 object detection model, under the premise of the same hyperparameters, the results are different each time , does mmdetection have this problem and how did you solve it?",
      "votes": null
    },
    {
      "id": "1692513",
      "postDate": "02/16/2022 04:50:31",
      "content": "<p><a href=\"https://www.kaggle.com/cydiachencc\" target=\"_blank\">@cydiachencc</a> Many thanks for answering my noob questions!</p>\n<p>Really looking forward to learning from your code once you share it! 🙏</p>",
      "rawMarkdown": "cydiachencc Many thanks for answering my noob questions!\n\nReally looking forward to learning from your code once you share it! 🙏",
      "votes": null
    },
    {
      "id": "1693302",
      "postDate": "02/16/2022 15:25:22",
      "content": "<p>Congratulations and thank you for using my repo!</p>",
      "rawMarkdown": "Congratulations and thank you for using my repo!",
      "votes": null
    },
    {
      "id": "1697501",
      "postDate": "02/19/2022 16:59:20",
      "content": "<p>It is a great help of your repo. I wish to provide more implementation for your codebase in the near future.</p>",
      "rawMarkdown": "It is a great help of your repo. I wish to provide more implementation for your codebase in the near future.",
      "votes": null
    },
    {
      "id": "1714598",
      "postDate": "03/07/2022 06:33:34",
      "content": "<p>Do you have the plan to open source code?</p>",
      "rawMarkdown": "Do you have the plan to open source code?",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 1691831,
      "author_name": "chocozzz",
      "author_url": "",
      "post_date": "02/15/2022 16:29:25",
      "content": "<p>thanks for sharing your solution. i also tried 2 stage model but failed :( i want to study your code, can you share code?? thanks </p>",
      "votes": null,
      "replies": [
        {
          "id": 1692328,
          "author_name": "cydiachencc",
          "author_url": "",
          "post_date": "02/16/2022 01:18:23",
          "content": "<p>We will clean the codebase and ask for public permission from the company to publish solution as soon as possible. You can refer to <a href=\"https://github.com/shinya7y/UniverseNet\" target=\"_blank\">https://github.com/shinya7y/UniverseNet</a> and the majority of features is implemented.<br>\nWe find that stronger backbones did benefit the two-stage design and loss function with iou loss also works.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1692386,
          "author_name": "chocozzz",
          "author_url": "",
          "post_date": "02/16/2022 02:27:48",
          "content": "<p>Thanks for sharing ! I'll look forward to the publishing code :) </p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1692056,
      "author_name": "init27",
      "author_url": "",
      "post_date": "02/15/2022 19:18:28",
      "content": "<p>Thanks so much for sharing your solution and congratulations on the amazing finish with a single model! </p>\n<p>Could you please clarify what these refer to:</p>\n<ul>\n<li>PAFPN:</li>\n</ul>\n<blockquote>\n  <p>Enhanced FPN: FPN -&gt; PAFPN;</p>\n</blockquote>\n<ul>\n<li>Weak Vs Strong augmentation-I assume this means you are applying some with a higher %? </li>\n<li>Could you kindly point me to where I may read about <code>AutoAugmentation V1 policy</code></li>\n</ul>\n<p>Thanks in advance!</p>",
      "votes": null,
      "replies": [
        {
          "id": 1692333,
          "author_name": "cydiachencc",
          "author_url": "",
          "post_date": "02/16/2022 01:24:32",
          "content": "<ol>\n<li>As for PAFPN, you can refer to [1] for detailed implementations. </li>\n<li>The Weak augmentation indicates image augmentation operations that always work on the majority of OD tasks. The Strong augmentation is not stable and requires lots of experiments.</li>\n<li>AutoAugmentation V1 policy: You can refer to [2] for auto-augmentation policy. </li>\n</ol>\n<p>[1] <a href=\"https://github.com/open-mmlab/mmdetection/blob/master/configs/pafpn/faster_rcnn_r50_pafpn_1x_coco.py\" target=\"_blank\">https://github.com/open-mmlab/mmdetection/blob/master/configs/pafpn/faster_rcnn_r50_pafpn_1x_coco.py</a><br>\n[2] Learning Data Augmentation Strategies for Object Detection <a href=\"https://arxiv.org/pdf/1906.11172\" target=\"_blank\">https://arxiv.org/pdf/1906.11172</a></p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1692513,
          "author_name": "init27",
          "author_url": "",
          "post_date": "02/16/2022 04:50:31",
          "content": "<p><a href=\"https://www.kaggle.com/cydiachencc\" target=\"_blank\">@cydiachencc</a> Many thanks for answering my noob questions!</p>\n<p>Really looking forward to learning from your code once you share it! 🙏</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1692118,
      "author_name": "imeintanis",
      "author_url": "",
      "post_date": "02/15/2022 20:47:05",
      "content": "<p>Congratulations!! You did an amazing jump +1000 positions with a strong <strong>single model</strong> !!</p>\n<p>BTW </p>\n<ol>\n<li>what was your CV score on video split?  </li>\n<li>how many epochs you train ?</li>\n</ol>",
      "votes": null,
      "replies": [
        {
          "id": 1692330,
          "author_name": "cydiachencc",
          "author_url": "",
          "post_date": "02/16/2022 01:20:12",
          "content": "<ol>\n<li>Sorry about the record is missing. We are trying to find the detailed information of CV Score on different video split. </li>\n<li>We follow 1x training schedule as commonly mmdet configurations.</li>\n</ol>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1692140,
      "author_name": "remekkinas",
      "author_url": "",
      "post_date": "02/15/2022 21:24:10",
      "content": "<p>Is any chance you publish your notebook (or publish solution to github). Why I am asking? I am interested in your experiments with NN configuration (Highly Customized Cascade RCNN ). It would be great tutorial for many of us. </p>\n<p>How your validation procedure looks like? Respect for being such patience and wait for final result looking from position #1000. </p>",
      "votes": null,
      "replies": [
        {
          "id": 1692326,
          "author_name": "cydiachencc",
          "author_url": "",
          "post_date": "02/16/2022 01:17:02",
          "content": "<p>We will clean the codebase and ask for public permission from the company to publish solution as soon as possible. You can refer to <a href=\"https://github.com/shinya7y/UniverseNet\" target=\"_blank\">https://github.com/shinya7y/UniverseNet</a> and the majority of features is implemented. <br>\nE,g. Stronger Backbone, Enhanced FPN and Loss function for bbox regressivion. <br>\nWe did offline validation on train-val split to select appropriate model. (Unfortunately, after dropping to rank #200, we follow popular notebooks and did not improve our 2stage-model).</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1692334,
      "author_name": "lixxxxx",
      "author_url": "",
      "post_date": "02/16/2022 01:26:18",
      "content": "<p>Good job ! Just one question, how did you use validation set when you train on the whole train set?</p>",
      "votes": null,
      "replies": [
        {
          "id": 1692348,
          "author_name": "cydiachencc",
          "author_url": "",
          "post_date": "02/16/2022 01:43:51",
          "content": "<ol>\n<li>It might be confusion with the poor writing. We only use offline validation set in model_selection procedure(Train on splited trainset and Validate on splited valset). When we switch to full dataset training, we only rely on Public LB. </li>\n</ol>",
          "votes": null,
          "replies": []
        },
        {
          "id": 1692393,
          "author_name": "lixxxxx",
          "author_url": "",
          "post_date": "02/16/2022 02:35:54",
          "content": "<p>Thank you!</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1692357,
      "author_name": "discovering",
      "author_url": "",
      "post_date": "02/16/2022 01:59:04",
      "content": "<p>Congratulations! Amazing work.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1692408,
      "author_name": "invorigin",
      "author_url": "",
      "post_date": "02/16/2022 02:41:55",
      "content": "<p>Hello, congratulations on your 7th place in this competition, I have a question to ask you for advice, when I use the YOLOv5 object detection model, under the premise of the same hyperparameters, the results are different each time , does mmdetection have this problem and how did you solve it?</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1693302,
      "author_name": "shinya7y",
      "author_url": "",
      "post_date": "02/16/2022 15:25:22",
      "content": "<p>Congratulations and thank you for using my repo!</p>",
      "votes": null,
      "replies": [
        {
          "id": 1697501,
          "author_name": "cydiachencc",
          "author_url": "",
          "post_date": "02/19/2022 16:59:20",
          "content": "<p>It is a great help of your repo. I wish to provide more implementation for your codebase in the near future.</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 1714598,
      "author_name": "rishengyang",
      "author_url": "",
      "post_date": "03/07/2022 06:33:34",
      "content": "<p>Do you have the plan to open source code?</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1691797": "We sincerely thank the Tensorflow organization for hosting this awesome competition. Please allow me to send my best regards to my teammates for their dedicated efforts. \nThis is the first detection competition for our team and it is a great honor for us to obtain the final score of Rank 7. \nThe overall solution is based on Highly Customized Cascade RCNN with Tracking as a post-process method. Moreover, the good fortune and the robustness of the overall design play a vital role in this competition. \n\n# Summary\nThe main idea of our method is based on the stronger baseline **cascade rcnn model design** with lots of customized features, the **careful-crafted data augmentation strategy** and **object tracking post-procedure**. Our method is a single model approach and it does not rely on any ensemble strategy. \n\n## Data Split. [Update]  \nAt the beginning of the competition,  we split the dataset with a randomly split training set by video ids. \nWe use train-val set split to select the appropriate model. After selecting an appropriate model design, We switch to the full trainset and perform the comparison on Public LB. \n\n## Stronger Baseline of Cascade RCNN.\nThe team has designed a customized Cascade RCNN baseline. The majority of model improvements are listed as follows. \n1. Stronger Backbone: ResNet -> ResneXt -> Res2Net -> CBNet; \n2. Enhanced FPN: FPN -> PAFPN; \n3. Customized Detection Heads: Cascade RCNN Head -> Double Head Cascade RCNN Head;\n4. Loss function: Smooth L1 loss -> IoU Based Loss;\n\n## Careful-crafted Data Augmentation Strategy.\n1. Weak Aug: Flip, RandomBrightnessContrast, RGBShift, HueSaturationValue, Noise, CLAHE, Affine, Rotate\n2. Strong Aug: Copy-Paste, Mosaic, AutoAugmentation V1 policy, Mixup, Cutout\n3. MS Training and Testing: [0.8 * image_size, 1.2 * image_size]\n\n## Object Tracking as Post Process. \nInspired by @parapapapam (https://www.kaggle.com/parapapapam/yolox-inference-tracking-on-cots-lb-0-539), We adopt Norfair tracking as a post-process and gain a performance boost. Thanks for the kind sharing.\n\n## Public LB is not all you need. \nSince our method is based on the above-mentioned methodology, the proposed method suffers from a significant performance drop in public LB. The team is in deep desperation when the rank of public LB goes to No. 1000. Thankfully, the proposed method demonstrates its robustness in the private LB. \n\nWe have learned a lot from the competition, and our method can get an additional performance boost if we have more time on exploring model ensemble strategies. \n\n## Most Commonly Asked Questions: \nThank you for everyone who shows great respect to this competition. Our implementation of Cascade RCNN are build on [1]. Since kaggle notebook is not friendly for MMDetection codebases (All custom codes turns to private_datasets... ) and some private code issues (Company limitations), we will clean up the codebase, construct a public notebook and share detailed configurations in the future. \n[1] https://github.com/shinya7y/UniverseNet",
    "1691831": "thanks for sharing your solution. i also tried 2 stage model but failed :( i want to study your code, can you share code?? thanks",
    "1692056": "Thanks so much for sharing your solution and congratulations on the amazing finish with a single model! \n\nCould you please clarify what these refer to:\n\n- PAFPN:\n\n> Enhanced FPN: FPN -> PAFPN;\n\n- Weak Vs Strong augmentation-I assume this means you are applying some with a higher %? \n- Could you kindly point me to where I may read about ` AutoAugmentation V1 policy`\n\nThanks in advance!",
    "1692118": "Congratulations!! You did an amazing jump +1000 positions with a strong **single model** !!\n\nBTW \n1. what was your CV score on video split?  \n2. how many epochs you train ?",
    "1692140": "Is any chance you publish your notebook (or publish solution to github). Why I am asking? I am interested in your experiments with NN configuration (Highly Customized Cascade RCNN ). It would be great tutorial for many of us. \n\nHow your validation procedure looks like? Respect for being such patience and wait for final result looking from position #1000.",
    "1692326": "We will clean the codebase and ask for public permission from the company to publish solution as soon as possible. You can refer to https://github.com/shinya7y/UniverseNet and the majority of features is implemented. \nE,g. Stronger Backbone, Enhanced FPN and Loss function for bbox regressivion. \nWe did offline validation on train-val split to select appropriate model. (Unfortunately, after dropping to rank #200, we follow popular notebooks and did not improve our 2stage-model).",
    "1692328": "We will clean the codebase and ask for public permission from the company to publish solution as soon as possible. You can refer to https://github.com/shinya7y/UniverseNet and the majority of features is implemented.\nWe find that stronger backbones did benefit the two-stage design and loss function with iou loss also works.",
    "1692330": "1. Sorry about the record is missing. We are trying to find the detailed information of CV Score on different video split. \n2. We follow 1x training schedule as commonly mmdet configurations.",
    "1692333": "1. As for PAFPN, you can refer to [1] for detailed implementations. \n2. The Weak augmentation indicates image augmentation operations that always work on the majority of OD tasks. The Strong augmentation is not stable and requires lots of experiments.\n3. AutoAugmentation V1 policy: You can refer to [2] for auto-augmentation policy. \n\n[1] https://github.com/open-mmlab/mmdetection/blob/master/configs/pafpn/faster_rcnn_r50_pafpn_1x_coco.py\n[2] Learning Data Augmentation Strategies for Object Detection <https://arxiv.org/pdf/1906.11172>",
    "1692334": "Good job ! Just one question, how did you use validation set when you train on the whole train set?",
    "1692348": "1. It might be confusion with the poor writing. We only use offline validation set in model_selection procedure(Train on splited trainset and Validate on splited valset). When we switch to full dataset training, we only rely on Public LB.",
    "1692357": "Congratulations! Amazing work.",
    "1692386": "Thanks for sharing ! I'll look forward to the publishing code :)",
    "1692393": "Thank you!",
    "1692408": "Hello, congratulations on your 7th place in this competition, I have a question to ask you for advice, when I use the YOLOv5 object detection model, under the premise of the same hyperparameters, the results are different each time , does mmdetection have this problem and how did you solve it?",
    "1692513": "cydiachencc Many thanks for answering my noob questions!\n\nReally looking forward to learning from your code once you share it! 🙏",
    "1693302": "Congratulations and thank you for using my repo!",
    "1697501": "It is a great help of your repo. I wish to provide more implementation for your codebase in the near future.",
    "1714598": "Do you have the plan to open source code?"
  },
  "source": "meta"
}