{
  "id": 229724,
  "title": "1st Place: My part to public 0.324/ private 0.314",
  "url": "/competitions/vinbigdata-chest-xray-abnormalities-detection/discussion/229724",
  "author_name": "Fatih Öztürk",
  "post_date": "2021-03-31T11:48:26.284000",
  "votes": 198,
  "comment_count": 55,
  "views": 0,
  "content": "<p>I started with <a href=\"https://www.kaggle.com/corochann\" target=\"_blank\">@corochann</a> ‘s notebook: <a href=\"https://www.kaggle.com/corochann/vinbigdata-detectron2-train\" target=\"_blank\">https://www.kaggle.com/corochann/vinbigdata-detectron2-train</a></p>\n<p>It was a great notebook to begin with because it was already including so many processes like validation, augmentations, inference, and more importantly clear explanations about what’s going on. </p>\n<p><strong>Part - 1: To the LB 301</strong></p>\n<ol>\n<li><p>I prepared my own notebook based on the notebook above and ran a model with all the images at 1024x1024 resolution and also included class 14 as a new class during training (By giving full image size as true boxes). My very first proper model gave me 0.221 LB / 0.233 Private.</p></li>\n<li><p>I started to read past OD competitions’ winning solutions to find out what are the main tricks applied in these competitions and of course found out <a href=\"https://www.kaggle.com/zfturbo\" target=\"_blank\">@zfturbo</a> ’s ensembling repo. <a href=\"https://github.com/ZFTurbo/Weighted-Boxes-Fusion\" target=\"_blank\">https://github.com/ZFTurbo/Weighted-Boxes-Fusion</a><br>\nI wanted to give a try with WBF method, and I ensembled my 0.221 submission with the public 0.230 submission of the same notebook I mentioned above. This gave me 0.236 LB / 0.251 Private.</p></li>\n<li><p>I was wandering in both discussions and kernels and found out that there was a YOLO thing that I had to spend some time on. And there was already another great and clear notebook from <a href=\"https://www.kaggle.com/awsaf49\" target=\"_blank\">@awsaf49</a> <a href=\"https://www.kaggle.com/awsaf49/vinbigdata-cxr-ad-yolov5-14-class-infer\" target=\"_blank\">https://www.kaggle.com/awsaf49/vinbigdata-cxr-ad-yolov5-14-class-infer</a><br>\nWhy not to try ensembling YOLO and my detectron submission, right? I applied WBF again on my 0.236 and 0.154 YOLO and the magic happened: LB became 0.279 / Private 0.270 and I placed to #10 rank so quickly after joining the competition. If you still think somehow there was a magic in this comp, I strongly think that it was ensembling different models with YOLO preds. I was both surprised and worried about this jump because I was questioning why others did not try this already… And still don’t know why.</p></li>\n<li><p>Seeing this jump, I realized that the same YOLO notebook had different subs for different training folds. So I ensembled all YOLO fold predictions and that came 0.237. So After ensembling my detectron2 submission with this, LB became 0.283/ Private 0.284.</p></li>\n<li><p>After this point, in the same days, this another YOLO notebook from <br>\n<a href=\"https://www.kaggle.com/nxhong93\" target=\"_blank\">@nxhong93</a> (<a href=\"https://www.kaggle.com/nxhong93/yolov5-chest-512\" target=\"_blank\">https://www.kaggle.com/nxhong93/yolov5-chest-512</a>)  was published and of course, I wanted to check their ensemble again :D then LB became 0.299 / Private 0.305. This time after applying WBF I also applied NMS on top of it because I found out about the difference of test annotations and it was obviously not good to have lots of overlapping boxes. So LB became 0.301 / Private 0.304.</p></li>\n</ol>\n<p><strong>Part 2: Back to the Validation, and to the LB 324</strong></p>\n<p>At this step, I already had 0.301 LB submission but it was worrying because I literally did not do anything with a proper validation step, which is something I used to do in all my previous competitions..s So I decided to build a new submission from scratch in a validated manner. We can have 2 final submissions, right?</p>\n<ol>\n<li><p>Started with detectron2 model again and separated a holdout with 3k images (KFold would take so much time and I had no enough patience). CV came 0.33 and LB came 0.226 / Private 0.235. Btw for cv calculation, I adapted <a href=\"https://www.kaggle.com/its7171\" target=\"_blank\">@its7171</a> ’s this notebook. <a href=\"https://www.kaggle.com/its7171/map-understanding-with-code-and-its-tips\" target=\"_blank\">https://www.kaggle.com/its7171/map-understanding-with-code-and-its-tips</a></p></li>\n<li><p>Started to think about how I can improve this single model submission and decided to play with class distributions. So I ran several models by augmenting rare classes, and after checking their single class performances I realized that some models were performing differently in different classes. I realized that I couldn't directly use <a href=\"https://www.kaggle.com/zfturbo\" target=\"_blank\">@zfturbo</a>'s ensembling function anymore because some classes hurt a lot during ensembling while others improved. So I built my own function on top of his functions where I could specify which classes to ensemble. With this method, I even applied different fusion parameters for different classes. You can find the function here: <a href=\"https://www.kaggle.com/fatihozturk/class-based-fusing?scriptVersionId=58351361\" target=\"_blank\">https://www.kaggle.com/fatihozturk/class-based-fusing?scriptVersionId=58351361</a>.</p></li>\n<li><p>I improved my CV to 0.358 and LB became 0.236 / 0.245. Then I couldn’t help myself but check if this new model improves the previous lb 0.301 submission and it did indeed and LB became 0.312 / Private 0.308.</p></li>\n<li><p>I kept focusing on my CV. So this time instead of augmenting, I started to remove some of the classes during modeling. For example, till this point, I was always including class 14. What I did was simply I ran one model with only abnormal classes, then I ran another model by removing class 0,3,11,13 and so on. This part helped me a lot. With these new diverse models, I improved my CV to 0.423 and LB to 0.265 / Private 0.271.</p></li>\n</ol>\n<p><strong>Part - 3: To LB 0.324</strong></p>\n<ol>\n<li>As you can assume, I ensembled my previous 0.301 submission with this new validated and diverse 0.265 submission, and the LB reached 0.324 LB / Private 0.314.</li>\n</ol>\n<p><strong>Part 4: To LB 0.354 with Teaming and Making lots of analysis</strong><br>\n<a href=\"https://www.kaggle.com/socom20\" target=\"_blank\">@socom20</a> and his team were at 0.331 and they asked me to merge teams. Tbh, I could have kept going solo but I was still confused about my score given the number of public images and the difference in test annotations. I thought it would be more robust to ensemble boxes with another diverse model and then I accepted. </p>\n<p>Of course, we again ensembled our submissions (lots of ensembles…)and by giving more weight to their submission we jumped to 0.35X region / Private 0.31X. Giving more weight to my submission was giving 0.33X LB which was sad because this one had 0.321 private score which we obviously didn't select…</p>\n<p><strong>Some findings:</strong></p>\n<ul>\n<li><p>After teaming, for the last ten days, I spent analyzing our good and bad submissions both by submitting only individual classes within them and also visually inspecting predicted boxes. I found out that our improved subs were indeed improving for almost all classes including common and rare ones. </p></li>\n<li><p>After spending more time on the calculation of the competition metric I also realized “No Penalty For Adding More Bbox” as <a href=\"https://www.kaggle.com/cdeotte\" target=\"_blank\">@cdeotte</a> explains clearly here: <a href=\"https://www.kaggle.com/c/vinbigdata-chest-xray-abnormalities-detection/discussion/229637\" target=\"_blank\">https://www.kaggle.com/c/vinbigdata-chest-xray-abnormalities-detection/discussion/229637</a> This was key to big jumps I guess. Having more confident boxes is good but at the same time having many low confidence boxes can only improve this metric…</p></li>\n<li><p>I’ve analyzed <a href=\"https://www.kaggle.com/morizin\" target=\"_blank\">@morizin</a> ‘s YOLO model (he reran his model with my validation split, huge thanks to him) and found out that it was indeed performing much differently than detectron2 models and ensembling with it was boosting both cv and lb. It boosted my 0.265 to 0.300 again but didn't affect the very final ensembles at all. YOLO never failed in this comp :) </p></li>\n</ul>\n<p>I was literally a noob for this field before the competition and obviously, I could’ve done nothing without public sharings and notebooks! So huge thanks to the authors of the notebooks I mentioned above! And I want to give hope to those feeling that they are not good enough to join these competitions, because I felt the same before and wanted join this competition anyways because I had to start somewhere…</p>",
  "messages": [
    {
      "id": 1258151,
      "postDate": "2021-03-31T11:48:26.283Z",
      "content": "<p>I started with <a href=\"https://www.kaggle.com/corochann\" target=\"_blank\">@corochann</a> ‘s notebook: <a href=\"https://www.kaggle.com/corochann/vinbigdata-detectron2-train\" target=\"_blank\">https://www.kaggle.com/corochann/vinbigdata-detectron2-train</a></p>\n<p>It was a great notebook to begin with because it was already including so many processes like validation, augmentations, inference, and more importantly clear explanations about what’s going on. </p>\n<p><strong>Part - 1: To the LB 301</strong></p>\n<ol>\n<li><p>I prepared my own notebook based on the notebook above and ran a model with all the images at 1024x1024 resolution and also included class 14 as a new class during training (By giving full image size as true boxes). My very first proper model gave me 0.221 LB / 0.233 Private.</p></li>\n<li><p>I started to read past OD competitions’ winning solutions to find out what are the main tricks applied in these competitions and of course found out <a href=\"https://www.kaggle.com/zfturbo\" target=\"_blank\">@zfturbo</a> ’s ensembling repo. <a href=\"https://github.com/ZFTurbo/Weighted-Boxes-Fusion\" target=\"_blank\">https://github.com/ZFTurbo/Weighted-Boxes-Fusion</a><br>\nI wanted to give a try with WBF method, and I ensembled my 0.221 submission with the public 0.230 submission of the same notebook I mentioned above. This gave me 0.236 LB / 0.251 Private.</p></li>\n<li><p>I was wandering in both discussions and kernels and found out that there was a YOLO thing that I had to spend some time on. And there was already another great and clear notebook from <a href=\"https://www.kaggle.com/awsaf49\" target=\"_blank\">@awsaf49</a> <a href=\"https://www.kaggle.com/awsaf49/vinbigdata-cxr-ad-yolov5-14-class-infer\" target=\"_blank\">https://www.kaggle.com/awsaf49/vinbigdata-cxr-ad-yolov5-14-class-infer</a><br>\nWhy not to try ensembling YOLO and my detectron submission, right? I applied WBF again on my 0.236 and 0.154 YOLO and the magic happened: LB became 0.279 / Private 0.270 and I placed to #10 rank so quickly after joining the competition. If you still think somehow there was a magic in this comp, I strongly think that it was ensembling different models with YOLO preds. I was both surprised and worried about this jump because I was questioning why others did not try this already… And still don’t know why.</p></li>\n<li><p>Seeing this jump, I realized that the same YOLO notebook had different subs for different training folds. So I ensembled all YOLO fold predictions and that came 0.237. So After ensembling my detectron2 submission with this, LB became 0.283/ Private 0.284.</p></li>\n<li><p>After this point, in the same days, this another YOLO notebook from <br>\n<a href=\"https://www.kaggle.com/nxhong93\" target=\"_blank\">@nxhong93</a> (<a href=\"https://www.kaggle.com/nxhong93/yolov5-chest-512\" target=\"_blank\">https://www.kaggle.com/nxhong93/yolov5-chest-512</a>)  was published and of course, I wanted to check their ensemble again :D then LB became 0.299 / Private 0.305. This time after applying WBF I also applied NMS on top of it because I found out about the difference of test annotations and it was obviously not good to have lots of overlapping boxes. So LB became 0.301 / Private 0.304.</p></li>\n</ol>\n<p><strong>Part 2: Back to the Validation, and to the LB 324</strong></p>\n<p>At this step, I already had 0.301 LB submission but it was worrying because I literally did not do anything with a proper validation step, which is something I used to do in all my previous competitions..s So I decided to build a new submission from scratch in a validated manner. We can have 2 final submissions, right?</p>\n<ol>\n<li><p>Started with detectron2 model again and separated a holdout with 3k images (KFold would take so much time and I had no enough patience). CV came 0.33 and LB came 0.226 / Private 0.235. Btw for cv calculation, I adapted <a href=\"https://www.kaggle.com/its7171\" target=\"_blank\">@its7171</a> ’s this notebook. <a href=\"https://www.kaggle.com/its7171/map-understanding-with-code-and-its-tips\" target=\"_blank\">https://www.kaggle.com/its7171/map-understanding-with-code-and-its-tips</a></p></li>\n<li><p>Started to think about how I can improve this single model submission and decided to play with class distributions. So I ran several models by augmenting rare classes, and after checking their single class performances I realized that some models were performing differently in different classes. I realized that I couldn't directly use <a href=\"https://www.kaggle.com/zfturbo\" target=\"_blank\">@zfturbo</a>'s ensembling function anymore because some classes hurt a lot during ensembling while others improved. So I built my own function on top of his functions where I could specify which classes to ensemble. With this method, I even applied different fusion parameters for different classes. You can find the function here: <a href=\"https://www.kaggle.com/fatihozturk/class-based-fusing?scriptVersionId=58351361\" target=\"_blank\">https://www.kaggle.com/fatihozturk/class-based-fusing?scriptVersionId=58351361</a>.</p></li>\n<li><p>I improved my CV to 0.358 and LB became 0.236 / 0.245. Then I couldn’t help myself but check if this new model improves the previous lb 0.301 submission and it did indeed and LB became 0.312 / Private 0.308.</p></li>\n<li><p>I kept focusing on my CV. So this time instead of augmenting, I started to remove some of the classes during modeling. For example, till this point, I was always including class 14. What I did was simply I ran one model with only abnormal classes, then I ran another model by removing class 0,3,11,13 and so on. This part helped me a lot. With these new diverse models, I improved my CV to 0.423 and LB to 0.265 / Private 0.271.</p></li>\n</ol>\n<p><strong>Part - 3: To LB 0.324</strong></p>\n<ol>\n<li>As you can assume, I ensembled my previous 0.301 submission with this new validated and diverse 0.265 submission, and the LB reached 0.324 LB / Private 0.314.</li>\n</ol>\n<p><strong>Part 4: To LB 0.354 with Teaming and Making lots of analysis</strong><br>\n<a href=\"https://www.kaggle.com/socom20\" target=\"_blank\">@socom20</a> and his team were at 0.331 and they asked me to merge teams. Tbh, I could have kept going solo but I was still confused about my score given the number of public images and the difference in test annotations. I thought it would be more robust to ensemble boxes with another diverse model and then I accepted. </p>\n<p>Of course, we again ensembled our submissions (lots of ensembles…)and by giving more weight to their submission we jumped to 0.35X region / Private 0.31X. Giving more weight to my submission was giving 0.33X LB which was sad because this one had 0.321 private score which we obviously didn't select…</p>\n<p><strong>Some findings:</strong></p>\n<ul>\n<li><p>After teaming, for the last ten days, I spent analyzing our good and bad submissions both by submitting only individual classes within them and also visually inspecting predicted boxes. I found out that our improved subs were indeed improving for almost all classes including common and rare ones. </p></li>\n<li><p>After spending more time on the calculation of the competition metric I also realized “No Penalty For Adding More Bbox” as <a href=\"https://www.kaggle.com/cdeotte\" target=\"_blank\">@cdeotte</a> explains clearly here: <a href=\"https://www.kaggle.com/c/vinbigdata-chest-xray-abnormalities-detection/discussion/229637\" target=\"_blank\">https://www.kaggle.com/c/vinbigdata-chest-xray-abnormalities-detection/discussion/229637</a> This was key to big jumps I guess. Having more confident boxes is good but at the same time having many low confidence boxes can only improve this metric…</p></li>\n<li><p>I’ve analyzed <a href=\"https://www.kaggle.com/morizin\" target=\"_blank\">@morizin</a> ‘s YOLO model (he reran his model with my validation split, huge thanks to him) and found out that it was indeed performing much differently than detectron2 models and ensembling with it was boosting both cv and lb. It boosted my 0.265 to 0.300 again but didn't affect the very final ensembles at all. YOLO never failed in this comp :) </p></li>\n</ul>\n<p>I was literally a noob for this field before the competition and obviously, I could’ve done nothing without public sharings and notebooks! So huge thanks to the authors of the notebooks I mentioned above! And I want to give hope to those feeling that they are not good enough to join these competitions, because I felt the same before and wanted join this competition anyways because I had to start somewhere…</p>",
      "rawMarkdown": "I started with @corochann ‘s notebook: https://www.kaggle.com/corochann/vinbigdata-detectron2-train\n\nIt was a great notebook to begin with because it was already including so many processes like validation, augmentations, inference, and more importantly clear explanations about what’s going on. \n\n**Part - 1: To the LB 301**\n\n1. I prepared my own notebook based on the notebook above and ran a model with all the images at 1024x1024 resolution and also included class 14 as a new class during training (By giving full image size as true boxes). My very first proper model gave me 0.221 LB / 0.233 Private.\n\n2. I started to read past OD competitions’ winning solutions to find out what are the main tricks applied in these competitions and of course found out @zfturbo ’s ensembling repo. https://github.com/ZFTurbo/Weighted-Boxes-Fusion\nI wanted to give a try with WBF method, and I ensembled my 0.221 submission with the public 0.230 submission of the same notebook I mentioned above. This gave me 0.236 LB / 0.251 Private.\n\n3. I was wandering in both discussions and kernels and found out that there was a YOLO thing that I had to spend some time on. And there was already another great and clear notebook from @awsaf49 https://www.kaggle.com/awsaf49/vinbigdata-cxr-ad-yolov5-14-class-infer\nWhy not to try ensembling YOLO and my detectron submission, right? I applied WBF again on my 0.236 and 0.154 YOLO and the magic happened: LB became 0.279 / Private 0.270 and I placed to #10 rank so quickly after joining the competition. If you still think somehow there was a magic in this comp, I strongly think that it was ensembling different models with YOLO preds. I was both surprised and worried about this jump because I was questioning why others did not try this already… And still don’t know why.\n\n4. Seeing this jump, I realized that the same YOLO notebook had different subs for different training folds. So I ensembled all YOLO fold predictions and that came 0.237. So After ensembling my detectron2 submission with this, LB became 0.283/ Private 0.284.\n\n5. After this point, in the same days, this another YOLO notebook from \n@nxhong93 (https://www.kaggle.com/nxhong93/yolov5-chest-512)  was published and of course, I wanted to check their ensemble again :D then LB became 0.299 / Private 0.305. This time after applying WBF I also applied NMS on top of it because I found out about the difference of test annotations and it was obviously not good to have lots of overlapping boxes. So LB became 0.301 / Private 0.304.\n\n**Part 2: Back to the Validation, and to the LB 324**\n\nAt this step, I already had 0.301 LB submission but it was worrying because I literally did not do anything with a proper validation step, which is something I used to do in all my previous competitions..s So I decided to build a new submission from scratch in a validated manner. We can have 2 final submissions, right?\n\n1. Started with detectron2 model again and separated a holdout with 3k images (KFold would take so much time and I had no enough patience). CV came 0.33 and LB came 0.226 / Private 0.235. Btw for cv calculation, I adapted @its7171 ’s this notebook. https://www.kaggle.com/its7171/map-understanding-with-code-and-its-tips\n\n2. Started to think about how I can improve this single model submission and decided to play with class distributions. So I ran several models by augmenting rare classes, and after checking their single class performances I realized that some models were performing differently in different classes. I realized that I couldn't directly use @zfturbo's ensembling function anymore because some classes hurt a lot during ensembling while others improved. So I built my own function on top of his functions where I could specify which classes to ensemble. With this method, I even applied different fusion parameters for different classes. You can find the function here: https://www.kaggle.com/fatihozturk/class-based-fusing?scriptVersionId=58351361.\n\n3. I improved my CV to 0.358 and LB became 0.236 / 0.245. Then I couldn’t help myself but check if this new model improves the previous lb 0.301 submission and it did indeed and LB became 0.312 / Private 0.308.\n\n4. I kept focusing on my CV. So this time instead of augmenting, I started to remove some of the classes during modeling. For example, till this point, I was always including class 14. What I did was simply I ran one model with only abnormal classes, then I ran another model by removing class 0,3,11,13 and so on. This part helped me a lot. With these new diverse models, I improved my CV to 0.423 and LB to 0.265 / Private 0.271.\n \n**Part - 3: To LB 0.324**\n1. As you can assume, I ensembled my previous 0.301 submission with this new validated and diverse 0.265 submission, and the LB reached 0.324 LB / Private 0.314.\n\n**Part 4: To LB 0.354 with Teaming and Making lots of analysis**\n@socom20 and his team were at 0.331 and they asked me to merge teams. Tbh, I could have kept going solo but I was still confused about my score given the number of public images and the difference in test annotations. I thought it would be more robust to ensemble boxes with another diverse model and then I accepted. \n\nOf course, we again ensembled our submissions (lots of ensembles...)and by giving more weight to their submission we jumped to 0.35X region / Private 0.31X. Giving more weight to my submission was giving 0.33X LB which was sad because this one had 0.321 private score which we obviously didn't select…\n\n**Some findings:**\n- After teaming, for the last ten days, I spent analyzing our good and bad submissions both by submitting only individual classes within them and also visually inspecting predicted boxes. I found out that our improved subs were indeed improving for almost all classes including common and rare ones. \n\n- After spending more time on the calculation of the competition metric I also realized “No Penalty For Adding More Bbox” as @cdeotte explains clearly here: https://www.kaggle.com/c/vinbigdata-chest-xray-abnormalities-detection/discussion/229637 This was key to big jumps I guess. Having more confident boxes is good but at the same time having many low confidence boxes can only improve this metric...\n\n- I’ve analyzed @morizin ‘s YOLO model (he reran his model with my validation split, huge thanks to him) and found out that it was indeed performing much differently than detectron2 models and ensembling with it was boosting both cv and lb. It boosted my 0.265 to 0.300 again but didn't affect the very final ensembles at all. YOLO never failed in this comp :) \n\nI was literally a noob for this field before the competition and obviously, I could’ve done nothing without public sharings and notebooks! So huge thanks to the authors of the notebooks I mentioned above! And I want to give hope to those feeling that they are not good enough to join these competitions, because I felt the same before and wanted join this competition anyways because I had to start somewhere…\n\n\n\n \n\n\n",
      "votes": 197
    },
    {
      "id": 1258214,
      "postDate": "2021-03-31T12:59:34.220Z",
      "content": "<p>Congrats again <a href=\"https://www.kaggle.com/fatihozturk\" target=\"_blank\">@fatihozturk</a> and team. Thanks for the detailed writeup</p>",
      "rawMarkdown": "Congrats again @fatihozturk and team. Thanks for the detailed writeup",
      "votes": 3
    },
    {
      "id": 1258713,
      "postDate": "2021-03-31T20:27:31.170Z",
      "content": "<p><a href=\"https://www.kaggle.com/fatihozturk\" target=\"_blank\">@fatihozturk</a> <a href=\"https://www.kaggle.com/socom20\" target=\"_blank\">@socom20</a> <a href=\"https://www.kaggle.com/morizin\" target=\"_blank\">@morizin</a> <a href=\"https://www.kaggle.com/avsanjay\" target=\"_blank\">@avsanjay</a> Congratulations for the first prize, thank you for writing up!</p>",
      "rawMarkdown": "@fatihozturk @socom20 @morizin @avsanjay Congratulations for the first prize, thank you for writing up!",
      "votes": 4
    },
    {
      "id": 1258556,
      "postDate": "2021-03-31T17:52:30.840Z",
      "content": "<p>Congratz ! <br>\nYour write-up makes it seem like what you achieved is no big deal, but it's actually really impressive !</p>",
      "rawMarkdown": "Congratz ! \nYour write-up makes it seem like what you achieved is no big deal, but it's actually really impressive !",
      "votes": 4,
      "replies": [
        {
          "id": 1259301,
          "postDate": "2021-04-01T09:46:39.613Z",
          "content": "<p>Thank you! It might be because I've not mentioned the things that I've tried and failed :)</p>",
          "rawMarkdown": "Thank you! It might be because I've not mentioned the things that I've tried and failed :)",
          "votes": 2
        },
        {
          "id": 1325802,
          "postDate": "2021-05-28T02:46:05.383Z",
          "content": "<p>Would love to see that part as well! Congrats on your win.</p>",
          "rawMarkdown": "Would love to see that part as well! Congrats on your win.",
          "votes": 1
        }
      ]
    },
    {
      "id": 1258176,
      "postDate": "2021-03-31T12:07:58.427Z",
      "content": "<p><a href=\"https://www.kaggle.com/fatihozturk\" target=\"_blank\">@fatihozturk</a> this is amazing and encouraging for anyone. It also proved the power of the community on Kaggle. </p>",
      "rawMarkdown": "@fatihozturk this is amazing and encouraging for anyone. It also proved the power of the community on Kaggle. ",
      "votes": 4,
      "replies": [
        {
          "id": 1258178,
          "postDate": "2021-03-31T12:09:21.723Z",
          "content": "<p>Indeed it is! Congrats for your silver medal too!</p>",
          "rawMarkdown": "Indeed it is! Congrats for your silver medal too!"
        }
      ]
    },
    {
      "id": 1370818,
      "postDate": "2021-06-30T12:26:57.477Z",
      "content": "<p>Congrats <a href=\"https://www.kaggle.com/fatihozturk\" target=\"_blank\">@fatihozturk</a> and team.</p>",
      "rawMarkdown": "Congrats @fatihozturk and team.",
      "votes": 1
    },
    {
      "id": 1312998,
      "postDate": "2021-05-18T11:11:09.743Z",
      "content": "<p>Congratulations! Thx for sharing works</p>",
      "rawMarkdown": "Congratulations! Thx for sharing works",
      "votes": 1
    },
    {
      "id": 1270208,
      "postDate": "2021-04-11T12:29:11.763Z",
      "content": "<p>Congratulations!</p>",
      "rawMarkdown": "Congratulations!",
      "votes": 1
    },
    {
      "id": 1268191,
      "postDate": "2021-04-09T07:42:42.087Z",
      "content": "<p>Congratulations on your outstanding results.💯</p>",
      "rawMarkdown": "Congratulations on your outstanding results.💯",
      "votes": 1
    },
    {
      "id": 1267751,
      "postDate": "2021-04-08T18:41:43.863Z",
      "content": "<p>Congratulations! and thanks for sharing your approach.</p>",
      "rawMarkdown": "Congratulations! and thanks for sharing your approach.",
      "votes": 1
    },
    {
      "id": 1267731,
      "postDate": "2021-04-08T18:17:00.950Z",
      "content": "<p>We posted our whole pipeline out <a href=\"https://www.kaggle.com/c/vinbigdata-chest-xray-abnormalities-detection/discussion/231511\" target=\"_blank\">here</a> </p>",
      "rawMarkdown": "We posted our whole pipeline out [here](https://www.kaggle.com/c/vinbigdata-chest-xray-abnormalities-detection/discussion/231511) ",
      "votes": 1
    },
    {
      "id": 1262587,
      "postDate": "2021-04-04T13:29:23.280Z",
      "content": "<p>Congratulations! Nice work</p>",
      "rawMarkdown": "Congratulations! Nice work",
      "votes": 1
    },
    {
      "id": 1261861,
      "postDate": "2021-04-03T14:21:47.487Z",
      "content": "<p>Congratulations! </p>",
      "rawMarkdown": "Congratulations! ",
      "votes": 1
    },
    {
      "id": 1260994,
      "postDate": "2021-04-02T15:38:59.537Z",
      "content": "<p>Congratulations, great work!! What kind of hardware did you use for computation (GPU,.. )? <br>\nAnd, thanks to many notebook editors here - they all keep us learning from each other. </p>",
      "rawMarkdown": "Congratulations, great work!! What kind of hardware did you use for computation (GPU,.. )? \nAnd, thanks to many notebook editors here - they all keep us learning from each other. ",
      "votes": 1,
      "replies": [
        {
          "id": 1261743,
          "postDate": "2021-04-03T11:55:43.320Z",
          "content": "<p>I used 1 RTX 6000. But tbh the dataset of this competition was quite small and a collab pro account would be also enough.</p>",
          "rawMarkdown": "I used 1 RTX 6000. But tbh the dataset of this competition was quite small and a collab pro account would be also enough."
        }
      ]
    },
    {
      "id": 1259140,
      "postDate": "2021-04-01T07:07:40.537Z",
      "content": "<p>Congrats for 1st place holder and thanks for ur kind explanation! What a nice solution …</p>\n<p>I have a question here, Are u using wbf preprocessed images or raw images?<br>\nThanks.</p>",
      "rawMarkdown": "Congrats for 1st place holder and thanks for ur kind explanation! What a nice solution ...\n\nI have a question here, Are u using wbf preprocessed images or raw images?\nThanks.",
      "votes": 1,
      "replies": [
        {
          "id": 1259322,
          "postDate": "2021-04-01T10:05:44.843Z",
          "content": "<p>Thanks!</p>\n<p>I used wbf only on predicted boxes. Didn't apply it before training.</p>",
          "rawMarkdown": "Thanks!\n\nI used wbf only on predicted boxes. Didn't apply it before training.",
          "votes": 2
        }
      ]
    },
    {
      "id": 1258902,
      "postDate": "2021-04-01T02:11:04.013Z",
      "content": "<p>Hi Faith <a href=\"https://www.kaggle.com/fatihozturk\" target=\"_blank\">@fatihozturk</a>, I would like to congratulate you and your teammates on your work. Besides, I have some questions and hope that you will answer them</p>\n<ol>\n<li>Your Faster RCNN was trained with class 14 (bbox was the whole image). To ensemble with other models, I guessed you need to adjust the 14th class bboxes to 14 conf 0 0 1 1, right ? Or was there a different way that you did?</li>\n<li>When training with 14th classes, did you down sample the number of images of this class ? Because it made a huge imbalance and in my case, it affected badly our model.</li>\n<li>Can you give me more detail about how you augmented rare classes in Part2-2? </li>\n<li>As mentioned in Part2-4, how did you determine the classes to be removed when training another diverse model (class 0,3,11,13) ?</li>\n</ol>",
      "rawMarkdown": "Hi Faith @fatihozturk, I would like to congratulate you and your teammates on your work. Besides, I have some questions and hope that you will answer them\n\n1. Your Faster RCNN was trained with class 14 (bbox was the whole image). To ensemble with other models, I guessed you need to adjust the 14th class bboxes to 14 conf 0 0 1 1, right ? Or was there a different way that you did?\n2. When training with 14th classes, did you down sample the number of images of this class ? Because it made a huge imbalance and in my case, it affected badly our model.\n3. Can you give me more detail about how you augmented rare classes in Part2-2? \n4. As mentioned in Part2-4, how did you determine the classes to be removed when training another diverse model (class 0,3,11,13) ?",
      "votes": 1,
      "replies": [
        {
          "id": 1259318,
          "postDate": "2021-04-01T10:04:43.327Z",
          "content": "<ol>\n<li>Right, during inference I converted boxes to 0 0 1 1 for class 14 preds.</li>\n<li>Nope. Instead, I directly removed some of the classes one by one and rerun new single models. Each new model had some different scores on different classes, so their ensemble worked nicely.</li>\n<li>Just sampled more the images having rare classes in them only for training data. Didnt touch the validation data.</li>\n<li>I did it based on the frequency of the classes. Classes 14,0,3 etc. are the most dominant ones in the data. </li>\n</ol>",
          "rawMarkdown": "1. Right, during inference I converted boxes to 0 0 1 1 for class 14 preds.\n2. Nope. Instead, I directly removed some of the classes one by one and rerun new single models. Each new model had some different scores on different classes, so their ensemble worked nicely.\n3. Just sampled more the images having rare classes in them only for training data. Didnt touch the validation data.\n4. I did it based on the frequency of the classes. Classes 14,0,3 etc. are the most dominant ones in the data. ",
          "votes": 1
        }
      ]
    },
    {
      "id": 1258273,
      "postDate": "2021-03-31T13:55:00.133Z",
      "content": "<p>Hi congratulations,<br>\nI have some questions:<br>\n1) Did you apply 2nd class filter?<br>\n2) How can you assemble your model (I guess you have 2nd class filter already) with another public notebook with 2nd class filter also?<br>\nEx: Assume 5 images in your model [1-boxes, 2-boxes, 3-nofinding, 4-boxes, 5-boxes] and other notebook [1-nofinding, 2-boxes, 3-boxes, 4-boxes, 5-nofinding], how can you merge them?  Or you merge them all before  then apply your 2nd classifier?<br>\n3) Did you merge all your model once at the final? or step by step like above? what is the IOU WBF did you select?</p>",
      "rawMarkdown": "Hi congratulations,\nI have some questions:\n1) Did you apply 2nd class filter?\n2) How can you assemble your model (I guess you have 2nd class filter already) with another public notebook with 2nd class filter also?\nEx: Assume 5 images in your model [1-boxes, 2-boxes, 3-nofinding, 4-boxes, 5-boxes] and other notebook [1-nofinding, 2-boxes, 3-boxes, 4-boxes, 5-nofinding], how can you merge them?  Or you merge them all before  then apply your 2nd classifier?\n3) Did you merge all your model once at the final? or step by step like above? what is the IOU WBF did you select?\n",
      "votes": 1,
      "replies": [
        {
          "id": 1258446,
          "postDate": "2021-03-31T16:03:57.853Z",
          "content": "<p>Hi thanks!<br>\n1) Applied it only on top of yolo 0.154 and it became 0.214. Then their ensemble with detection 236 submission became 279.<br>\n2) This was not a problem because until reaching 0.301 submission, all individual submissions already had class 14 preds in them. After switching to my validated models, since I defined my own function, I could be able to ensemble based on sub class groups. No need to ensemble all classes from the individual submissions.<br>\n3) It was a step by step process. Each ensemble had their own iou and weights but most of the time  was giving 5 weight to better submission and 1  to the new one. IOU was also around 0.40-0.60 most of the time.</p>",
          "rawMarkdown": "Hi thanks!\n1) Applied it only on top of yolo 0.154 and it became 0.214. Then their ensemble with detection 236 submission became 279.\n2) This was not a problem because until reaching 0.301 submission, all individual submissions already had class 14 preds in them. After switching to my validated models, since I defined my own function, I could be able to ensemble based on sub class groups. No need to ensemble all classes from the individual submissions.\n3) It was a step by step process. Each ensemble had their own iou and weights but most of the time  was giving 5 weight to better submission and 1  to the new one. IOU was also around 0.40-0.60 most of the time.",
          "votes": 3
        },
        {
          "id": 1258846,
          "postDate": "2021-03-31T23:50:01.410Z",
          "content": "<p>So detailed explanation, thankyou</p>",
          "rawMarkdown": "So detailed explanation, thankyou",
          "votes": 1
        }
      ]
    },
    {
      "id": 1258223,
      "postDate": "2021-03-31T13:07:53.517Z",
      "content": "<p>Congratulations on your outstanding results. In the treatment of multiple doctors' annotations, do you use wbf fusion or another way to deal with it?</p>",
      "rawMarkdown": "Congratulations on your outstanding results. In the treatment of multiple doctors' annotations, do you use wbf fusion or another way to deal with it?",
      "votes": 1,
      "replies": [
        {
          "id": 1258225,
          "postDate": "2021-03-31T13:09:38.237Z",
          "content": "<p>Thanks! I didn't do anything for it and kept all the boxes. During my WBF ensembling, they have been handled I guess. It was better to have lots of boxes to blend further.</p>",
          "rawMarkdown": "Thanks! I didn't do anything for it and kept all the boxes. During my WBF ensembling, they have been handled I guess. It was better to have lots of boxes to blend further."
        }
      ]
    },
    {
      "id": 1260637,
      "postDate": "2021-04-02T09:32:37.927Z",
      "content": "<p>Congrats on 1st place! <a href=\"https://www.kaggle.com/fatihozturk\" target=\"_blank\">@fatihozturk</a> <a href=\"https://www.kaggle.com/socom20\" target=\"_blank\">@socom20</a> <a href=\"https://www.kaggle.com/morizin\" target=\"_blank\">@morizin</a> <a href=\"https://www.kaggle.com/avsanjay\" target=\"_blank\">@avsanjay</a> <br>\nAnd thank you for your kind explanation. Well done!</p>",
      "rawMarkdown": "Congrats on 1st place! @fatihozturk @socom20 @morizin @avsanjay \nAnd thank you for your kind explanation. Well done!",
      "votes": 2
    },
    {
      "id": 1259337,
      "postDate": "2021-04-01T10:16:35.803Z",
      "content": "<p>Yesterday I learned what WBF is, and today I have learned better useful an approach : <strong>Class Based Fusing</strong>. All very useful informations in total. Thank you for sharing your experience.</p>",
      "rawMarkdown": "Yesterday I learned what WBF is, and today I have learned better useful an approach : **Class Based Fusing**. All very useful informations in total. Thank you for sharing your experience.",
      "votes": 2,
      "replies": [
        {
          "id": 1259352,
          "postDate": "2021-04-01T10:25:12.003Z",
          "content": "<p>Thanks, Selman! Happy to hear that you find class-based fusing useful too :) </p>",
          "rawMarkdown": "Thanks, Selman! Happy to hear that you find class-based fusing useful too :) ",
          "votes": 2
        }
      ]
    },
    {
      "id": 1259252,
      "postDate": "2021-04-01T09:03:02.463Z",
      "content": "<p>Congrats for 1st!</p>",
      "rawMarkdown": "Congrats for 1st!",
      "votes": 2
    },
    {
      "id": 1258878,
      "postDate": "2021-04-01T01:07:43.200Z",
      "content": "<p>Congratz !</p>",
      "rawMarkdown": "Congratz !",
      "votes": 2
    },
    {
      "id": 1258803,
      "postDate": "2021-03-31T22:40:22.600Z",
      "content": "<p>Congratulations. Great story. It must have been exicting watching your public LB climb so much. It looks like Yolo ensembles well with WBF. </p>\n<p>Our situation was similar but more scary. As we ensembled more models with WBF (Yolo, EffDet, VFNet) our CV kept increasing but our LB did not increase and many times it decreased. We wanted to break LB 0.300 on public but couldn't. Thankfully, we selected our best CV for our final sub. It turns out that as we ensembled and increased CV that our private LB was climbing each time but we don't know for sure during the competition.</p>",
      "rawMarkdown": "Congratulations. Great story. It must have been exicting watching your public LB climb so much. It looks like Yolo ensembles well with WBF. \n\nOur situation was similar but more scary. As we ensembled more models with WBF (Yolo, EffDet, VFNet) our CV kept increasing but our LB did not increase and many times it decreased. We wanted to break LB 0.300 on public but couldn't. Thankfully, we selected our best CV for our final sub. It turns out that as we ensembled and increased CV that our private LB was climbing each time but we don't know for sure during the competition.",
      "votes": 2,
      "replies": [
        {
          "id": 1259314,
          "postDate": "2021-04-01T10:00:47.923Z",
          "content": "<p>Thanks, Chris, and congrats on your team too! It was indeed exciting :) </p>\n<p>For my side, I can say that I was a bit lucky at the beginning because my first ensembles with WBF were intuitive and they did work well and reached lb 0.301 so quickly. During WBF I used iou=0.4-0.5 and always gave higher weight to ensembles subs compared to single model subs. </p>\n<p>After switching to validated subs, I also experienced inconsistency between my CV and LB from time to time and only kept changes if both increased at the same time. However, I was also aware that the validation set up itself is not a good representative of the test set itself and relying on LB still can be useful because it's the only sample we can see the results from the test set. So my final subs were relying on both validated sub and LB based sub :)</p>",
          "rawMarkdown": "Thanks, Chris, and congrats on your team too! It was indeed exciting :) \n\nFor my side, I can say that I was a bit lucky at the beginning because my first ensembles with WBF were intuitive and they did work well and reached lb 0.301 so quickly. During WBF I used iou=0.4-0.5 and always gave higher weight to ensembles subs compared to single model subs. \n\nAfter switching to validated subs, I also experienced inconsistency between my CV and LB from time to time and only kept changes if both increased at the same time. However, I was also aware that the validation set up itself is not a good representative of the test set itself and relying on LB still can be useful because it's the only sample we can see the results from the test set. So my final subs were relying on both validated sub and LB based sub :)",
          "votes": 1
        }
      ]
    },
    {
      "id": 1258722,
      "postDate": "2021-03-31T20:35:54.737Z",
      "content": "<p>Congratulations and thank you very much for sharing your solution in such detail. It will help us to keep learning. Great job !</p>",
      "rawMarkdown": "Congratulations and thank you very much for sharing your solution in such detail. It will help us to keep learning. Great job !",
      "votes": 2
    },
    {
      "id": 1258240,
      "postDate": "2021-03-31T13:26:54.680Z",
      "content": "<p>Congrats and thanks for your details. It is absolutely amazing! </p>",
      "rawMarkdown": "Congrats and thanks for your details. It is absolutely amazing! ",
      "votes": 2
    },
    {
      "id": 1258232,
      "postDate": "2021-03-31T13:17:08.080Z",
      "content": "<p>Congrats on the First Place!!!<br>\nThanks for your detailed explanation, Congrats Excellent teammates <a href=\"https://www.kaggle.com/fatihozturk\" target=\"_blank\">@fatihozturk</a> <a href=\"https://www.kaggle.com/avsanjay\" target=\"_blank\">@avsanjay</a> <a href=\"https://www.kaggle.com/morizin\" target=\"_blank\">@morizin</a> <a href=\"https://www.kaggle.com/socom20\" target=\"_blank\">@socom20</a> </p>",
      "rawMarkdown": "Congrats on the First Place!!!\nThanks for your detailed explanation, Congrats Excellent teammates @fatihozturk @avsanjay @morizin @socom20 ",
      "votes": 2,
      "replies": [
        {
          "id": 1258233,
          "postDate": "2021-03-31T13:18:56.897Z",
          "content": "<p>Thank you,<br>\nCongratz on your solo silver</p>",
          "rawMarkdown": "Thank you,\nCongratz on your solo silver",
          "votes": 1
        }
      ]
    },
    {
      "id": 1258174,
      "postDate": "2021-03-31T12:07:10.040Z",
      "content": "<p>Huge congratulations and thanks for sharing your path, very helpful👍</p>",
      "rawMarkdown": "Huge congratulations and thanks for sharing your path, very helpful👍",
      "votes": 2
    },
    {
      "id": 1258159,
      "postDate": "2021-03-31T11:54:14.767Z",
      "content": "<p>congrats 😄</p>",
      "rawMarkdown": "congrats 😄",
      "votes": 2
    },
    {
      "id": 2591601,
      "postDate": "2024-01-08T05:21:53.897Z",
      "content": "<p>Thanks for your writing. It was clear and concise, helped me learned many new things. Congrats, on winning first price</p>",
      "rawMarkdown": "Thanks for your writing. It was clear and concise, helped me learned many new things. Congrats, on winning first price"
    },
    {
      "id": 1597681,
      "postDate": "2021-11-27T19:16:21.997Z",
      "content": "<p>I'm new here but i know this is a huge success.<br>\ncongratulations <a href=\"https://www.kaggle.com/faithozturk\" target=\"_blank\">@faithozturk</a></p>",
      "rawMarkdown": "I'm new here but i know this is a huge success.\ncongratulations @faithozturk"
    },
    {
      "id": 1594743,
      "postDate": "2021-11-25T05:18:18.550Z",
      "content": "<p>Congratulations and thank you for sharing</p>",
      "rawMarkdown": "Congratulations and thank you for sharing"
    },
    {
      "id": 1593909,
      "postDate": "2021-11-24T11:28:18.680Z",
      "content": "<p>Congratulations! Thank you for sharing your work.</p>",
      "rawMarkdown": "Congratulations! Thank you for sharing your work."
    },
    {
      "id": 1467874,
      "postDate": "2021-08-12T07:01:01.737Z",
      "content": "<p>Hi Team <a href=\"https://www.kaggle.com/fatihozturk\" target=\"_blank\">@fatihozturk</a>  <a href=\"https://www.kaggle.com/socom20\" target=\"_blank\">@socom20</a> <a href=\"https://www.kaggle.com/morizin\" target=\"_blank\">@morizin</a> <a href=\"https://www.kaggle.com/avsanjay\" target=\"_blank\">@avsanjay</a>. Congratulations.<br>\nI am new to Kaggle and trying to explore this competition and i am little confused about the values mentioned under Score within Leaderboard Tab.<br>\nSo, are these MAP (Mean average precision) values of each model? or is this something else?<br>\nthank you.</p>",
      "rawMarkdown": "Hi Team @fatihozturk  @socom20 @morizin @avsanjay. Congratulations.\nI am new to Kaggle and trying to explore this competition and i am little confused about the values mentioned under Score within Leaderboard Tab.\nSo, are these MAP (Mean average precision) values of each model? or is this something else?\nthank you.\n\n"
    },
    {
      "id": 1272422,
      "postDate": "2021-04-13T13:13:34.830Z",
      "content": "<p>what does CV mean in \"CV and LB(for LeaderBoard)\"</p>",
      "rawMarkdown": "what does CV mean in \"CV and LB(for LeaderBoard)\"",
      "replies": [
        {
          "id": 1370695,
          "postDate": "2021-06-30T10:40:18.183Z",
          "content": "<p>cross validation</p>",
          "rawMarkdown": "cross validation"
        }
      ]
    },
    {
      "id": 1270223,
      "postDate": "2021-04-11T12:43:21.090Z",
      "content": "<p>What is NBS?</p>",
      "rawMarkdown": "What is NBS?",
      "replies": [
        {
          "id": 1270268,
          "postDate": "2021-04-11T13:34:25.933Z",
          "content": "<p>It was a typo. It's NMS, thanks for letting me know.</p>",
          "rawMarkdown": "It was a typo. It's NMS, thanks for letting me know.",
          "votes": 1
        }
      ]
    },
    {
      "id": 1258414,
      "postDate": "2021-03-31T15:29:03.470Z",
      "content": "<p>Can you tell us what weights was used during the ensembling detectron2 0.236  and yolo 0.154 submissions?</p>",
      "rawMarkdown": "Can you tell us what weights was used during the ensembling detectron2 0.236  and yolo 0.154 submissions?",
      "replies": [
        {
          "id": 1258441,
          "postDate": "2021-03-31T15:58:12.593Z",
          "content": "<p>Just checked and it seems I gave 2 to detection and 1 to yolo. Other thing I've noticed now is I applied 2nd class filter on top of yolo before ensembling. So YOLO itself improved from 0.154 to 0.214</p>",
          "rawMarkdown": "Just checked and it seems I gave 2 to detection and 1 to yolo. Other thing I've noticed now is I applied 2nd class filter on top of yolo before ensembling. So YOLO itself improved from 0.154 to 0.214"
        },
        {
          "id": 1258459,
          "postDate": "2021-03-31T16:14:36.097Z",
          "content": "<p>1, 2-3 were most common weights? I had thoughts to set 10 for my weak on lb model and 1 for more robust one, but had no time to check this out </p>",
          "rawMarkdown": "1, 2-3 were most common weights? I had thoughts to set 10 for my weak on lb model and 1 for more robust one, but had no time to check this out "
        },
        {
          "id": 1258463,
          "postDate": "2021-03-31T16:18:16.260Z",
          "content": "<p>Since two models were (almost) single models, why not give similar weights? I personally gave weights like 5-7 to only really improved submissions (not to disturb good boxes in them), but here both yolo and detectron2 were performing quite similar.</p>",
          "rawMarkdown": "Since two models were (almost) single models, why not give similar weights? I personally gave weights like 5-7 to only really improved submissions (not to disturb good boxes in them), but here both yolo and detectron2 were performing quite similar."
        },
        {
          "id": 1258466,
          "postDate": "2021-03-31T16:21:52.633Z",
          "content": "<p>Thx for your responses and showing your great solution. Congrats!</p>",
          "rawMarkdown": "Thx for your responses and showing your great solution. Congrats!",
          "votes": 2
        }
      ]
    },
    {
      "id": 1260319,
      "postDate": "2021-04-02T02:42:43.260Z",
      "rawMarkdown": "",
      "votes": 2,
      "isDeleted": true
    },
    {
      "id": 1259335,
      "postDate": "2021-04-01T10:15:06.840Z",
      "rawMarkdown": "",
      "isDeleted": true
    }
  ],
  "comments": [
    {
      "id": 1258214,
      "author_name": "KhanhVD",
      "author_url": "",
      "post_date": "2021-03-31T12:59:34.220000",
      "content": "<p>Congrats again <a href=\"https://www.kaggle.com/fatihozturk\" target=\"_blank\">@fatihozturk</a> and team. Thanks for the detailed writeup</p>",
      "votes": 3,
      "replies": []
    },
    {
      "id": 1258713,
      "author_name": "corochann",
      "author_url": "",
      "post_date": "2021-03-31T20:27:31.170000",
      "content": "<p><a href=\"https://www.kaggle.com/fatihozturk\" target=\"_blank\">@fatihozturk</a> <a href=\"https://www.kaggle.com/socom20\" target=\"_blank\">@socom20</a> <a href=\"https://www.kaggle.com/morizin\" target=\"_blank\">@morizin</a> <a href=\"https://www.kaggle.com/avsanjay\" target=\"_blank\">@avsanjay</a> Congratulations for the first prize, thank you for writing up!</p>",
      "votes": 4,
      "replies": []
    },
    {
      "id": 1258556,
      "author_name": "Theo Viel",
      "author_url": "",
      "post_date": "2021-03-31T17:52:30.840000",
      "content": "<p>Congratz ! <br>\nYour write-up makes it seem like what you achieved is no big deal, but it's actually really impressive !</p>",
      "votes": 4,
      "replies": [
        {
          "id": 1259301,
          "author_name": "Fatih Öztürk",
          "author_url": "",
          "post_date": "2021-04-01T09:46:39.613000",
          "content": "<p>Thank you! It might be because I've not mentioned the things that I've tried and failed :)</p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 1325802,
          "author_name": "zsun01",
          "author_url": "",
          "post_date": "2021-05-28T02:46:05.383000",
          "content": "<p>Would love to see that part as well! Congrats on your win.</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 1258176,
      "author_name": "Charlie Craine",
      "author_url": "",
      "post_date": "2021-03-31T12:07:58.427000",
      "content": "<p><a href=\"https://www.kaggle.com/fatihozturk\" target=\"_blank\">@fatihozturk</a> this is amazing and encouraging for anyone. It also proved the power of the community on Kaggle. </p>",
      "votes": 4,
      "replies": [
        {
          "id": 1258178,
          "author_name": "Fatih Öztürk",
          "author_url": "",
          "post_date": "2021-03-31T12:09:21.723000",
          "content": "<p>Indeed it is! Congrats for your silver medal too!</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1370818,
      "author_name": "Sani Kamal",
      "author_url": "",
      "post_date": "2021-06-30T12:26:57.477000",
      "content": "<p>Congrats <a href=\"https://www.kaggle.com/fatihozturk\" target=\"_blank\">@fatihozturk</a> and team.</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 1312998,
      "author_name": "Byungjun Yoon",
      "author_url": "",
      "post_date": "2021-05-18T11:11:09.743000",
      "content": "<p>Congratulations! Thx for sharing works</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 1270208,
      "author_name": "Wonjun Park",
      "author_url": "",
      "post_date": "2021-04-11T12:29:11.763000",
      "content": "<p>Congratulations!</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 1268191,
      "author_name": "Sani Kamal",
      "author_url": "",
      "post_date": "2021-04-09T07:42:42.087000",
      "content": "<p>Congratulations on your outstanding results.💯</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 1267751,
      "author_name": "Sheldon",
      "author_url": "",
      "post_date": "2021-04-08T18:41:43.863000",
      "content": "<p>Congratulations! and thanks for sharing your approach.</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 1267731,
      "author_name": "Mohammed Rizin V K",
      "author_url": "",
      "post_date": "2021-04-08T18:17:00.950000",
      "content": "<p>We posted our whole pipeline out <a href=\"https://www.kaggle.com/c/vinbigdata-chest-xray-abnormalities-detection/discussion/231511\" target=\"_blank\">here</a> </p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 1262587,
      "author_name": "Son Nguyen",
      "author_url": "",
      "post_date": "2021-04-04T13:29:23.280000",
      "content": "<p>Congratulations! Nice work</p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 1261861,
      "author_name": "Muhammad Ahmed",
      "author_url": "",
      "post_date": "2021-04-03T14:21:47.487000",
      "content": "<p>Congratulations! </p>",
      "votes": 1,
      "replies": []
    },
    {
      "id": 1260994,
      "author_name": "Christian Bruckner",
      "author_url": "",
      "post_date": "2021-04-02T15:38:59.537000",
      "content": "<p>Congratulations, great work!! What kind of hardware did you use for computation (GPU,.. )? <br>\nAnd, thanks to many notebook editors here - they all keep us learning from each other. </p>",
      "votes": 1,
      "replies": [
        {
          "id": 1261743,
          "author_name": "Fatih Öztürk",
          "author_url": "",
          "post_date": "2021-04-03T11:55:43.320000",
          "content": "<p>I used 1 RTX 6000. But tbh the dataset of this competition was quite small and a collab pro account would be also enough.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1259140,
      "author_name": "Wonho Song",
      "author_url": "",
      "post_date": "2021-04-01T07:07:40.537000",
      "content": "<p>Congrats for 1st place holder and thanks for ur kind explanation! What a nice solution …</p>\n<p>I have a question here, Are u using wbf preprocessed images or raw images?<br>\nThanks.</p>",
      "votes": 1,
      "replies": [
        {
          "id": 1259322,
          "author_name": "Fatih Öztürk",
          "author_url": "",
          "post_date": "2021-04-01T10:05:44.843000",
          "content": "<p>Thanks!</p>\n<p>I used wbf only on predicted boxes. Didn't apply it before training.</p>",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 1258902,
      "author_name": "Liam Nguyen",
      "author_url": "",
      "post_date": "2021-04-01T02:11:04.013000",
      "content": "<p>Hi Faith <a href=\"https://www.kaggle.com/fatihozturk\" target=\"_blank\">@fatihozturk</a>, I would like to congratulate you and your teammates on your work. Besides, I have some questions and hope that you will answer them</p>\n<ol>\n<li>Your Faster RCNN was trained with class 14 (bbox was the whole image). To ensemble with other models, I guessed you need to adjust the 14th class bboxes to 14 conf 0 0 1 1, right ? Or was there a different way that you did?</li>\n<li>When training with 14th classes, did you down sample the number of images of this class ? Because it made a huge imbalance and in my case, it affected badly our model.</li>\n<li>Can you give me more detail about how you augmented rare classes in Part2-2? </li>\n<li>As mentioned in Part2-4, how did you determine the classes to be removed when training another diverse model (class 0,3,11,13) ?</li>\n</ol>",
      "votes": 1,
      "replies": [
        {
          "id": 1259318,
          "author_name": "Fatih Öztürk",
          "author_url": "",
          "post_date": "2021-04-01T10:04:43.327000",
          "content": "<ol>\n<li>Right, during inference I converted boxes to 0 0 1 1 for class 14 preds.</li>\n<li>Nope. Instead, I directly removed some of the classes one by one and rerun new single models. Each new model had some different scores on different classes, so their ensemble worked nicely.</li>\n<li>Just sampled more the images having rare classes in them only for training data. Didnt touch the validation data.</li>\n<li>I did it based on the frequency of the classes. Classes 14,0,3 etc. are the most dominant ones in the data. </li>\n</ol>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 1258273,
      "author_name": "David",
      "author_url": "",
      "post_date": "2021-03-31T13:55:00.133000",
      "content": "<p>Hi congratulations,<br>\nI have some questions:<br>\n1) Did you apply 2nd class filter?<br>\n2) How can you assemble your model (I guess you have 2nd class filter already) with another public notebook with 2nd class filter also?<br>\nEx: Assume 5 images in your model [1-boxes, 2-boxes, 3-nofinding, 4-boxes, 5-boxes] and other notebook [1-nofinding, 2-boxes, 3-boxes, 4-boxes, 5-nofinding], how can you merge them?  Or you merge them all before  then apply your 2nd classifier?<br>\n3) Did you merge all your model once at the final? or step by step like above? what is the IOU WBF did you select?</p>",
      "votes": 1,
      "replies": [
        {
          "id": 1258446,
          "author_name": "Fatih Öztürk",
          "author_url": "",
          "post_date": "2021-03-31T16:03:57.853000",
          "content": "<p>Hi thanks!<br>\n1) Applied it only on top of yolo 0.154 and it became 0.214. Then their ensemble with detection 236 submission became 279.<br>\n2) This was not a problem because until reaching 0.301 submission, all individual submissions already had class 14 preds in them. After switching to my validated models, since I defined my own function, I could be able to ensemble based on sub class groups. No need to ensemble all classes from the individual submissions.<br>\n3) It was a step by step process. Each ensemble had their own iou and weights but most of the time  was giving 5 weight to better submission and 1  to the new one. IOU was also around 0.40-0.60 most of the time.</p>",
          "votes": 3,
          "replies": []
        },
        {
          "id": 1258846,
          "author_name": "David",
          "author_url": "",
          "post_date": "2021-03-31T23:50:01.410000",
          "content": "<p>So detailed explanation, thankyou</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 1258223,
      "author_name": "tik_boa",
      "author_url": "",
      "post_date": "2021-03-31T13:07:53.517000",
      "content": "<p>Congratulations on your outstanding results. In the treatment of multiple doctors' annotations, do you use wbf fusion or another way to deal with it?</p>",
      "votes": 1,
      "replies": [
        {
          "id": 1258225,
          "author_name": "Fatih Öztürk",
          "author_url": "",
          "post_date": "2021-03-31T13:09:38.237000",
          "content": "<p>Thanks! I didn't do anything for it and kept all the boxes. During my WBF ensembling, they have been handled I guess. It was better to have lots of boxes to blend further.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1260637,
      "author_name": "Heroseo",
      "author_url": "",
      "post_date": "2021-04-02T09:32:37.927000",
      "content": "<p>Congrats on 1st place! <a href=\"https://www.kaggle.com/fatihozturk\" target=\"_blank\">@fatihozturk</a> <a href=\"https://www.kaggle.com/socom20\" target=\"_blank\">@socom20</a> <a href=\"https://www.kaggle.com/morizin\" target=\"_blank\">@morizin</a> <a href=\"https://www.kaggle.com/avsanjay\" target=\"_blank\">@avsanjay</a> <br>\nAnd thank you for your kind explanation. Well done!</p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 1259337,
      "author_name": "Selman",
      "author_url": "",
      "post_date": "2021-04-01T10:16:35.803000",
      "content": "<p>Yesterday I learned what WBF is, and today I have learned better useful an approach : <strong>Class Based Fusing</strong>. All very useful informations in total. Thank you for sharing your experience.</p>",
      "votes": 2,
      "replies": [
        {
          "id": 1259352,
          "author_name": "Fatih Öztürk",
          "author_url": "",
          "post_date": "2021-04-01T10:25:12.003000",
          "content": "<p>Thanks, Selman! Happy to hear that you find class-based fusing useful too :) </p>",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 1259252,
      "author_name": "MaChaogong",
      "author_url": "",
      "post_date": "2021-04-01T09:03:02.463000",
      "content": "<p>Congrats for 1st!</p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 1258878,
      "author_name": "t.nakajima",
      "author_url": "",
      "post_date": "2021-04-01T01:07:43.200000",
      "content": "<p>Congratz !</p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 1258803,
      "author_name": "Chris Deotte",
      "author_url": "",
      "post_date": "2021-03-31T22:40:22.600000",
      "content": "<p>Congratulations. Great story. It must have been exicting watching your public LB climb so much. It looks like Yolo ensembles well with WBF. </p>\n<p>Our situation was similar but more scary. As we ensembled more models with WBF (Yolo, EffDet, VFNet) our CV kept increasing but our LB did not increase and many times it decreased. We wanted to break LB 0.300 on public but couldn't. Thankfully, we selected our best CV for our final sub. It turns out that as we ensembled and increased CV that our private LB was climbing each time but we don't know for sure during the competition.</p>",
      "votes": 2,
      "replies": [
        {
          "id": 1259314,
          "author_name": "Fatih Öztürk",
          "author_url": "",
          "post_date": "2021-04-01T10:00:47.923000",
          "content": "<p>Thanks, Chris, and congrats on your team too! It was indeed exciting :) </p>\n<p>For my side, I can say that I was a bit lucky at the beginning because my first ensembles with WBF were intuitive and they did work well and reached lb 0.301 so quickly. During WBF I used iou=0.4-0.5 and always gave higher weight to ensembles subs compared to single model subs. </p>\n<p>After switching to validated subs, I also experienced inconsistency between my CV and LB from time to time and only kept changes if both increased at the same time. However, I was also aware that the validation set up itself is not a good representative of the test set itself and relying on LB still can be useful because it's the only sample we can see the results from the test set. So my final subs were relying on both validated sub and LB based sub :)</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 1258722,
      "author_name": "Javier Reinoso Velasco",
      "author_url": "",
      "post_date": "2021-03-31T20:35:54.737000",
      "content": "<p>Congratulations and thank you very much for sharing your solution in such detail. It will help us to keep learning. Great job !</p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 1258240,
      "author_name": "Sunghyun Jun",
      "author_url": "",
      "post_date": "2021-03-31T13:26:54.680000",
      "content": "<p>Congrats and thanks for your details. It is absolutely amazing! </p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 1258232,
      "author_name": "Wang Xing",
      "author_url": "",
      "post_date": "2021-03-31T13:17:08.080000",
      "content": "<p>Congrats on the First Place!!!<br>\nThanks for your detailed explanation, Congrats Excellent teammates <a href=\"https://www.kaggle.com/fatihozturk\" target=\"_blank\">@fatihozturk</a> <a href=\"https://www.kaggle.com/avsanjay\" target=\"_blank\">@avsanjay</a> <a href=\"https://www.kaggle.com/morizin\" target=\"_blank\">@morizin</a> <a href=\"https://www.kaggle.com/socom20\" target=\"_blank\">@socom20</a> </p>",
      "votes": 2,
      "replies": [
        {
          "id": 1258233,
          "author_name": "Mohammed Rizin V K",
          "author_url": "",
          "post_date": "2021-03-31T13:18:56.897000",
          "content": "<p>Thank you,<br>\nCongratz on your solo silver</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 1258174,
      "author_name": "XKDragon",
      "author_url": "",
      "post_date": "2021-03-31T12:07:10.040000",
      "content": "<p>Huge congratulations and thanks for sharing your path, very helpful👍</p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 1258159,
      "author_name": "Awsaf",
      "author_url": "",
      "post_date": "2021-03-31T11:54:14.767000",
      "content": "<p>congrats 😄</p>",
      "votes": 2,
      "replies": []
    },
    {
      "id": 2591601,
      "author_name": "SANJEEV BHANDARI",
      "author_url": "",
      "post_date": "2024-01-08T05:21:53.897000",
      "content": "<p>Thanks for your writing. It was clear and concise, helped me learned many new things. Congrats, on winning first price</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1597681,
      "author_name": "Oluwaseun Sokunbi",
      "author_url": "",
      "post_date": "2021-11-27T19:16:21.997000",
      "content": "<p>I'm new here but i know this is a huge success.<br>\ncongratulations <a href=\"https://www.kaggle.com/faithozturk\" target=\"_blank\">@faithozturk</a></p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1594743,
      "author_name": "",
      "author_url": "",
      "post_date": "2021-11-25T05:18:18.550000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1593909,
      "author_name": "",
      "author_url": "",
      "post_date": "2021-11-24T11:28:18.680000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1467874,
      "author_name": "",
      "author_url": "",
      "post_date": "2021-08-12T07:01:01.737000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1272422,
      "author_name": "",
      "author_url": "",
      "post_date": "2021-04-13T13:13:34.830000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 1370695,
          "author_name": "",
          "author_url": "",
          "post_date": "2021-06-30T10:40:18.183000",
          "content": "",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 1270223,
      "author_name": "",
      "author_url": "",
      "post_date": "2021-04-11T12:43:21.090000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 1270268,
          "author_name": "",
          "author_url": "",
          "post_date": "2021-04-11T13:34:25.933000",
          "content": "",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 1258414,
      "author_name": "",
      "author_url": "",
      "post_date": "2021-03-31T15:29:03.470000",
      "content": "",
      "votes": 0,
      "replies": [
        {
          "id": 1258441,
          "author_name": "",
          "author_url": "",
          "post_date": "2021-03-31T15:58:12.593000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 1258459,
          "author_name": "",
          "author_url": "",
          "post_date": "2021-03-31T16:14:36.097000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 1258463,
          "author_name": "",
          "author_url": "",
          "post_date": "2021-03-31T16:18:16.260000",
          "content": "",
          "votes": 0,
          "replies": []
        },
        {
          "id": 1258466,
          "author_name": "",
          "author_url": "",
          "post_date": "2021-03-31T16:21:52.633000",
          "content": "",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 1260319,
      "author_name": "",
      "author_url": "",
      "post_date": "2021-04-02T02:42:43.260000",
      "content": "",
      "votes": 2,
      "replies": []
    },
    {
      "id": 1259335,
      "author_name": "",
      "author_url": "",
      "post_date": "2021-04-01T10:15:06.840000",
      "content": "",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1258151": "I started with @corochann ‘s notebook: https://www.kaggle.com/corochann/vinbigdata-detectron2-train\n\nIt was a great notebook to begin with because it was already including so many processes like validation, augmentations, inference, and more importantly clear explanations about what’s going on. \n\n**Part - 1: To the LB 301**\n\n1. I prepared my own notebook based on the notebook above and ran a model with all the images at 1024x1024 resolution and also included class 14 as a new class during training (By giving full image size as true boxes). My very first proper model gave me 0.221 LB / 0.233 Private.\n\n2. I started to read past OD competitions’ winning solutions to find out what are the main tricks applied in these competitions and of course found out @zfturbo ’s ensembling repo. https://github.com/ZFTurbo/Weighted-Boxes-Fusion\nI wanted to give a try with WBF method, and I ensembled my 0.221 submission with the public 0.230 submission of the same notebook I mentioned above. This gave me 0.236 LB / 0.251 Private.\n\n3. I was wandering in both discussions and kernels and found out that there was a YOLO thing that I had to spend some time on. And there was already another great and clear notebook from @awsaf49 https://www.kaggle.com/awsaf49/vinbigdata-cxr-ad-yolov5-14-class-infer\nWhy not to try ensembling YOLO and my detectron submission, right? I applied WBF again on my 0.236 and 0.154 YOLO and the magic happened: LB became 0.279 / Private 0.270 and I placed to #10 rank so quickly after joining the competition. If you still think somehow there was a magic in this comp, I strongly think that it was ensembling different models with YOLO preds. I was both surprised and worried about this jump because I was questioning why others did not try this already… And still don’t know why.\n\n4. Seeing this jump, I realized that the same YOLO notebook had different subs for different training folds. So I ensembled all YOLO fold predictions and that came 0.237. So After ensembling my detectron2 submission with this, LB became 0.283/ Private 0.284.\n\n5. After this point, in the same days, this another YOLO notebook from \n@nxhong93 (https://www.kaggle.com/nxhong93/yolov5-chest-512)  was published and of course, I wanted to check their ensemble again :D then LB became 0.299 / Private 0.305. This time after applying WBF I also applied NMS on top of it because I found out about the difference of test annotations and it was obviously not good to have lots of overlapping boxes. So LB became 0.301 / Private 0.304.\n\n**Part 2: Back to the Validation, and to the LB 324**\n\nAt this step, I already had 0.301 LB submission but it was worrying because I literally did not do anything with a proper validation step, which is something I used to do in all my previous competitions..s So I decided to build a new submission from scratch in a validated manner. We can have 2 final submissions, right?\n\n1. Started with detectron2 model again and separated a holdout with 3k images (KFold would take so much time and I had no enough patience). CV came 0.33 and LB came 0.226 / Private 0.235. Btw for cv calculation, I adapted @its7171 ’s this notebook. https://www.kaggle.com/its7171/map-understanding-with-code-and-its-tips\n\n2. Started to think about how I can improve this single model submission and decided to play with class distributions. So I ran several models by augmenting rare classes, and after checking their single class performances I realized that some models were performing differently in different classes. I realized that I couldn't directly use @zfturbo's ensembling function anymore because some classes hurt a lot during ensembling while others improved. So I built my own function on top of his functions where I could specify which classes to ensemble. With this method, I even applied different fusion parameters for different classes. You can find the function here: https://www.kaggle.com/fatihozturk/class-based-fusing?scriptVersionId=58351361.\n\n3. I improved my CV to 0.358 and LB became 0.236 / 0.245. Then I couldn’t help myself but check if this new model improves the previous lb 0.301 submission and it did indeed and LB became 0.312 / Private 0.308.\n\n4. I kept focusing on my CV. So this time instead of augmenting, I started to remove some of the classes during modeling. For example, till this point, I was always including class 14. What I did was simply I ran one model with only abnormal classes, then I ran another model by removing class 0,3,11,13 and so on. This part helped me a lot. With these new diverse models, I improved my CV to 0.423 and LB to 0.265 / Private 0.271.\n \n**Part - 3: To LB 0.324**\n1. As you can assume, I ensembled my previous 0.301 submission with this new validated and diverse 0.265 submission, and the LB reached 0.324 LB / Private 0.314.\n\n**Part 4: To LB 0.354 with Teaming and Making lots of analysis**\n@socom20 and his team were at 0.331 and they asked me to merge teams. Tbh, I could have kept going solo but I was still confused about my score given the number of public images and the difference in test annotations. I thought it would be more robust to ensemble boxes with another diverse model and then I accepted. \n\nOf course, we again ensembled our submissions (lots of ensembles...)and by giving more weight to their submission we jumped to 0.35X region / Private 0.31X. Giving more weight to my submission was giving 0.33X LB which was sad because this one had 0.321 private score which we obviously didn't select…\n\n**Some findings:**\n- After teaming, for the last ten days, I spent analyzing our good and bad submissions both by submitting only individual classes within them and also visually inspecting predicted boxes. I found out that our improved subs were indeed improving for almost all classes including common and rare ones. \n\n- After spending more time on the calculation of the competition metric I also realized “No Penalty For Adding More Bbox” as @cdeotte explains clearly here: https://www.kaggle.com/c/vinbigdata-chest-xray-abnormalities-detection/discussion/229637 This was key to big jumps I guess. Having more confident boxes is good but at the same time having many low confidence boxes can only improve this metric...\n\n- I’ve analyzed @morizin ‘s YOLO model (he reran his model with my validation split, huge thanks to him) and found out that it was indeed performing much differently than detectron2 models and ensembling with it was boosting both cv and lb. It boosted my 0.265 to 0.300 again but didn't affect the very final ensembles at all. YOLO never failed in this comp :) \n\nI was literally a noob for this field before the competition and obviously, I could’ve done nothing without public sharings and notebooks! So huge thanks to the authors of the notebooks I mentioned above! And I want to give hope to those feeling that they are not good enough to join these competitions, because I felt the same before and wanted join this competition anyways because I had to start somewhere…\n\n\n\n \n\n\n",
    "1258214": "Congrats again @fatihozturk and team. Thanks for the detailed writeup",
    "1258713": "@fatihozturk @socom20 @morizin @avsanjay Congratulations for the first prize, thank you for writing up!",
    "1258556": "Congratz ! \nYour write-up makes it seem like what you achieved is no big deal, but it's actually really impressive !",
    "1258176": "@fatihozturk this is amazing and encouraging for anyone. It also proved the power of the community on Kaggle. ",
    "1370818": "Congrats @fatihozturk and team.",
    "1312998": "Congratulations! Thx for sharing works",
    "1270208": "Congratulations!",
    "1268191": "Congratulations on your outstanding results.💯",
    "1267751": "Congratulations! and thanks for sharing your approach.",
    "1267731": "We posted our whole pipeline out [here](https://www.kaggle.com/c/vinbigdata-chest-xray-abnormalities-detection/discussion/231511) ",
    "1262587": "Congratulations! Nice work",
    "1261861": "Congratulations! ",
    "1260994": "Congratulations, great work!! What kind of hardware did you use for computation (GPU,.. )? \nAnd, thanks to many notebook editors here - they all keep us learning from each other. ",
    "1259140": "Congrats for 1st place holder and thanks for ur kind explanation! What a nice solution ...\n\nI have a question here, Are u using wbf preprocessed images or raw images?\nThanks.",
    "1258902": "Hi Faith @fatihozturk, I would like to congratulate you and your teammates on your work. Besides, I have some questions and hope that you will answer them\n\n1. Your Faster RCNN was trained with class 14 (bbox was the whole image). To ensemble with other models, I guessed you need to adjust the 14th class bboxes to 14 conf 0 0 1 1, right ? Or was there a different way that you did?\n2. When training with 14th classes, did you down sample the number of images of this class ? Because it made a huge imbalance and in my case, it affected badly our model.\n3. Can you give me more detail about how you augmented rare classes in Part2-2? \n4. As mentioned in Part2-4, how did you determine the classes to be removed when training another diverse model (class 0,3,11,13) ?",
    "1258273": "Hi congratulations,\nI have some questions:\n1) Did you apply 2nd class filter?\n2) How can you assemble your model (I guess you have 2nd class filter already) with another public notebook with 2nd class filter also?\nEx: Assume 5 images in your model [1-boxes, 2-boxes, 3-nofinding, 4-boxes, 5-boxes] and other notebook [1-nofinding, 2-boxes, 3-boxes, 4-boxes, 5-nofinding], how can you merge them?  Or you merge them all before  then apply your 2nd classifier?\n3) Did you merge all your model once at the final? or step by step like above? what is the IOU WBF did you select?\n",
    "1258223": "Congratulations on your outstanding results. In the treatment of multiple doctors' annotations, do you use wbf fusion or another way to deal with it?",
    "1260637": "Congrats on 1st place! @fatihozturk @socom20 @morizin @avsanjay \nAnd thank you for your kind explanation. Well done!",
    "1259337": "Yesterday I learned what WBF is, and today I have learned better useful an approach : **Class Based Fusing**. All very useful informations in total. Thank you for sharing your experience.",
    "1259252": "Congrats for 1st!",
    "1258878": "Congratz !",
    "1258803": "Congratulations. Great story. It must have been exicting watching your public LB climb so much. It looks like Yolo ensembles well with WBF. \n\nOur situation was similar but more scary. As we ensembled more models with WBF (Yolo, EffDet, VFNet) our CV kept increasing but our LB did not increase and many times it decreased. We wanted to break LB 0.300 on public but couldn't. Thankfully, we selected our best CV for our final sub. It turns out that as we ensembled and increased CV that our private LB was climbing each time but we don't know for sure during the competition.",
    "1258722": "Congratulations and thank you very much for sharing your solution in such detail. It will help us to keep learning. Great job !",
    "1258240": "Congrats and thanks for your details. It is absolutely amazing! ",
    "1258232": "Congrats on the First Place!!!\nThanks for your detailed explanation, Congrats Excellent teammates @fatihozturk @avsanjay @morizin @socom20 ",
    "1258174": "Huge congratulations and thanks for sharing your path, very helpful👍",
    "1258159": "congrats 😄",
    "2591601": "Thanks for your writing. It was clear and concise, helped me learned many new things. Congrats, on winning first price",
    "1597681": "I'm new here but i know this is a huge success.\ncongratulations @faithozturk",
    "1594743": "Congratulations and thank you for sharing",
    "1593909": "Congratulations! Thank you for sharing your work.",
    "1467874": "Hi Team @fatihozturk  @socom20 @morizin @avsanjay. Congratulations.\nI am new to Kaggle and trying to explore this competition and i am little confused about the values mentioned under Score within Leaderboard Tab.\nSo, are these MAP (Mean average precision) values of each model? or is this something else?\nthank you.\n\n",
    "1272422": "what does CV mean in \"CV and LB(for LeaderBoard)\"",
    "1270223": "What is NBS?",
    "1258414": "Can you tell us what weights was used during the ensembling detectron2 0.236  and yolo 0.154 submissions?",
    "1260319": "",
    "1259335": ""
  }
}