{
  "id": 326950,
  "title": "[Public #1 Private #2] + [Private #7/8 (potential)] solutions. The host wins.",
  "url": "/competitions/birdclef-2022/discussion/326950",
  "author_name": "Zhongkai Shangguan",
  "post_date": "2022-05-25T02:51:49.701000",
  "votes": 59,
  "comment_count": 66,
  "views": 0,
  "content": "<p>As I promised, I will publish my solution right after the competition. This will be a long topic as the two solutions are totally different. As kaggle says &gt; You've been sharing this link too often. We prevent redundant posts to reduce spam. So I put some link in the code block.</p>\n<p>Before the solutions, thanks to my teammate <a href=\"https://www.kaggle.com/jionie\" target=\"_blank\">@jionie</a>, our second gold medal, and first-time money zone!!!!!!!!!! Cheers!!!!!!!!!!</p>\n<p>I will start with our [Private #7/8 (potential)] Solution first since I **promise **you will say the \"F\" word after seeing the other solution.</p>\n<p><strong>[Private #7/8 (potential)] Solution</strong></p>\n<p>Training:<br>\nOur first solution is based on <a href=\"https://www.kaggle.com/kaerunantoka\" target=\"_blank\">@kaerunantoka</a> 's <a href=\"https://www.kaggle.com/code/kaerunantoka/birdclef2022-use-2nd-label-f0\" target=\"_blank\">public notebook</a> and last year's second-place solution. The training code is pretty the mixture of the two pipelines mentioned above. <br>\nSome key points to mention:</p>\n<ol>\n<li><p>data augmentation:<br>\n<code>OneOf([\n                    Gain(min_gain_in_db=-15, max_gain_in_db=15, p=0.8),\n                    GainTransition(min_gain_in_db=-15, max_gain_in_db=15, p=0.8),\n                ]),\n                OneOf(\n                    [\n                        NoiseInjection(p=1, max_noise_level=0.04),\n                        GaussianNoise(p=1, min_snr=5, max_snr=20),\n                        PinkNoise(p=1, min_snr=5, max_snr=20),\n                        AddGaussianNoise(min_amplitude=0.0001, max_amplitude=0.03, p=0.5),\n                        AddGaussianSNR(min_snr_in_db=5, max_snr_in_db=15, p=0.5),\n                    ],\n                    p=0.3,\n                ),\n                AddBackgroundNoise(\n                    sounds_path=self.config.BACKGROUND_PATH, min_snr_in_db=0, max_snr_in_db=2, p=0.5\n                ),\n                Normalize(p=1),</code></p></li>\n<li><p>cut mix + mix up</p></li>\n<li><p>loss function: BCEWithLogits + BCEFocal2WayLoss</p></li>\n<li><p>hypers setting (n_fft, n_mels, hop_length) refer to our inference notebook.</p></li>\n</ol>\n<p>Our inference kernel and all trained models are [<a href=\"https://www.kaggle.com/code/leonshangguan/private-7-8-final-of-submission\" target=\"_blank\">publicly available</a>] <br>\nOnly one key point to mention: if a bird is detected in the previous or next 5s, we will rank the probs and add the top5 bird species to the current detected birds.</p>\n<p>Because this solution was not selected as our final submission, we don't know the actual rank, but as it scores 0.79 in private, it should rank 7-8.</p>\n<p><strong>[#1 Private #2] Solution</strong></p>\n<p>Actually, I am curious that no one found it, the solution is provided by the host and finally allowed by the host.</p>\n<ol>\n<li>If you look at the discussion <a href=\"https://www.kaggle.com/competitions/birdclef-2022/discussion/307941\" target=\"_blank\">Meet the host</a>, you will find the host mentioned <a href=\"https://birdnet.cornell.edu/\" target=\"_blank\">BirdNet project</a> in the post.</li>\n<li>Click the link, and it is easy to find the host's <a href=\"https://github.com/kahst/BirdNET-Analyzer\" target=\"_blank\">github repo</a>.</li>\n<li>Then, find the overlap classes between the <a href=\"https://github.com/kahst/BirdNET-Analyzer/blob/main/checkpoints/V2.1/BirdNET_GLOBAL_2K_V2.1_Labels.txt\" target=\"_blank\">host's model</a> and the scored birds, 20 out of 21 scored birds are the same (except aniani).</li>\n<li>Modify species_list.txt under example folder accordingly, I have uploaded the modified repo to kaggle <a href=\"https://www.kaggle.com/datasets/leonshangguan/birdnet.\" target=\"_blank\">here</a>.</li>\n<li>Do some post-processing as in our [<a href=\"https://www.kaggle.com/code/leonshangguan/birdnet-inference\" target=\"_blank\">inference notebook</a>]</li>\n<li>Thanks to <a href=\"https://www.kaggle.com/ivanpan\" target=\"_blank\">@ivanpan</a> who opened <a href=\"https://github.com/kahst/BirdNET-Analyzer/issues/40\" target=\"_blank\">this issue</a>, the host says <code>we won't enforce the \"non-commercial\" clause in the license for BirdCLEF, and you can use BirdNET in your submissions.</code> (I don't know if they also benefit from this repo, we can wait for their solution)</li>\n</ol>\n<p>Some Notes:<br>\nHonestly, we didn't originally intend to use this model as a final submission until we notice the issue mentioned above, and actually, the ensemble of our own model could also reach the gold zone. The answer is provided by the host so that's why I say it is a weird solution. I guess the BirdNet was trained on the data for the public leaderboard but not the private one since there's a huge drop between the public lb to private (0.91 --&gt; 0.84; 0.85 --&gt; 0.78)</p>\n<p>The BirdNet is running on CPU less than 2h inference time, while ours cost about 8h to run on GPU. So the host wins, my hope is the first place team doesn't benefit from that model and can beat the host. Looking forward to their solution.</p>\n<p><strong>Finally, a big thanks to <a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> for hosting this amazing competition and providing the answer as well xD.</strong></p>",
  "messages": [
    {
      "id": 1800539,
      "postDate": "2022-05-25T02:51:49.700Z",
      "content": "<p>As I promised, I will publish my solution right after the competition. This will be a long topic as the two solutions are totally different. As kaggle says &gt; You've been sharing this link too often. We prevent redundant posts to reduce spam. So I put some link in the code block.</p>\n<p>Before the solutions, thanks to my teammate <a href=\"https://www.kaggle.com/jionie\" target=\"_blank\">@jionie</a>, our second gold medal, and first-time money zone!!!!!!!!!! Cheers!!!!!!!!!!</p>\n<p>I will start with our [Private #7/8 (potential)] Solution first since I **promise **you will say the \"F\" word after seeing the other solution.</p>\n<p><strong>[Private #7/8 (potential)] Solution</strong></p>\n<p>Training:<br>\nOur first solution is based on <a href=\"https://www.kaggle.com/kaerunantoka\" target=\"_blank\">@kaerunantoka</a> 's <a href=\"https://www.kaggle.com/code/kaerunantoka/birdclef2022-use-2nd-label-f0\" target=\"_blank\">public notebook</a> and last year's second-place solution. The training code is pretty the mixture of the two pipelines mentioned above. <br>\nSome key points to mention:</p>\n<ol>\n<li><p>data augmentation:<br>\n<code>OneOf([\n                    Gain(min_gain_in_db=-15, max_gain_in_db=15, p=0.8),\n                    GainTransition(min_gain_in_db=-15, max_gain_in_db=15, p=0.8),\n                ]),\n                OneOf(\n                    [\n                        NoiseInjection(p=1, max_noise_level=0.04),\n                        GaussianNoise(p=1, min_snr=5, max_snr=20),\n                        PinkNoise(p=1, min_snr=5, max_snr=20),\n                        AddGaussianNoise(min_amplitude=0.0001, max_amplitude=0.03, p=0.5),\n                        AddGaussianSNR(min_snr_in_db=5, max_snr_in_db=15, p=0.5),\n                    ],\n                    p=0.3,\n                ),\n                AddBackgroundNoise(\n                    sounds_path=self.config.BACKGROUND_PATH, min_snr_in_db=0, max_snr_in_db=2, p=0.5\n                ),\n                Normalize(p=1),</code></p></li>\n<li><p>cut mix + mix up</p></li>\n<li><p>loss function: BCEWithLogits + BCEFocal2WayLoss</p></li>\n<li><p>hypers setting (n_fft, n_mels, hop_length) refer to our inference notebook.</p></li>\n</ol>\n<p>Our inference kernel and all trained models are [<a href=\"https://www.kaggle.com/code/leonshangguan/private-7-8-final-of-submission\" target=\"_blank\">publicly available</a>] <br>\nOnly one key point to mention: if a bird is detected in the previous or next 5s, we will rank the probs and add the top5 bird species to the current detected birds.</p>\n<p>Because this solution was not selected as our final submission, we don't know the actual rank, but as it scores 0.79 in private, it should rank 7-8.</p>\n<p><strong>[#1 Private #2] Solution</strong></p>\n<p>Actually, I am curious that no one found it, the solution is provided by the host and finally allowed by the host.</p>\n<ol>\n<li>If you look at the discussion <a href=\"https://www.kaggle.com/competitions/birdclef-2022/discussion/307941\" target=\"_blank\">Meet the host</a>, you will find the host mentioned <a href=\"https://birdnet.cornell.edu/\" target=\"_blank\">BirdNet project</a> in the post.</li>\n<li>Click the link, and it is easy to find the host's <a href=\"https://github.com/kahst/BirdNET-Analyzer\" target=\"_blank\">github repo</a>.</li>\n<li>Then, find the overlap classes between the <a href=\"https://github.com/kahst/BirdNET-Analyzer/blob/main/checkpoints/V2.1/BirdNET_GLOBAL_2K_V2.1_Labels.txt\" target=\"_blank\">host's model</a> and the scored birds, 20 out of 21 scored birds are the same (except aniani).</li>\n<li>Modify species_list.txt under example folder accordingly, I have uploaded the modified repo to kaggle <a href=\"https://www.kaggle.com/datasets/leonshangguan/birdnet.\" target=\"_blank\">here</a>.</li>\n<li>Do some post-processing as in our [<a href=\"https://www.kaggle.com/code/leonshangguan/birdnet-inference\" target=\"_blank\">inference notebook</a>]</li>\n<li>Thanks to <a href=\"https://www.kaggle.com/ivanpan\" target=\"_blank\">@ivanpan</a> who opened <a href=\"https://github.com/kahst/BirdNET-Analyzer/issues/40\" target=\"_blank\">this issue</a>, the host says <code>we won't enforce the \"non-commercial\" clause in the license for BirdCLEF, and you can use BirdNET in your submissions.</code> (I don't know if they also benefit from this repo, we can wait for their solution)</li>\n</ol>\n<p>Some Notes:<br>\nHonestly, we didn't originally intend to use this model as a final submission until we notice the issue mentioned above, and actually, the ensemble of our own model could also reach the gold zone. The answer is provided by the host so that's why I say it is a weird solution. I guess the BirdNet was trained on the data for the public leaderboard but not the private one since there's a huge drop between the public lb to private (0.91 --&gt; 0.84; 0.85 --&gt; 0.78)</p>\n<p>The BirdNet is running on CPU less than 2h inference time, while ours cost about 8h to run on GPU. So the host wins, my hope is the first place team doesn't benefit from that model and can beat the host. Looking forward to their solution.</p>\n<p><strong>Finally, a big thanks to <a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> for hosting this amazing competition and providing the answer as well xD.</strong></p>",
      "rawMarkdown": "As I promised, I will publish my solution right after the competition. This will be a long topic as the two solutions are totally different. As kaggle says > You've been sharing this link too often. We prevent redundant posts to reduce spam. So I put some link in the code block.\n\nBefore the solutions, thanks to my teammate @jionie, our second gold medal, and first-time money zone!!!!!!!!!! Cheers!!!!!!!!!!\n\nI will start with our [Private #7/8 (potential)] Solution first since I **promise **you will say the \"F\" word after seeing the other solution.\n\n**[Private #7/8 (potential)] Solution**\n\nTraining:\nOur first solution is based on @kaerunantoka 's [public notebook](https://www.kaggle.com/code/kaerunantoka/birdclef2022-use-2nd-label-f0) and last year's second-place solution. The training code is pretty the mixture of the two pipelines mentioned above. \nSome key points to mention:\n1. data augmentation:\n`OneOf([\n                        Gain(min_gain_in_db=-15, max_gain_in_db=15, p=0.8),\n                        GainTransition(min_gain_in_db=-15, max_gain_in_db=15, p=0.8),\n                    ]),\n                    OneOf(\n                        [\n                            NoiseInjection(p=1, max_noise_level=0.04),\n                            GaussianNoise(p=1, min_snr=5, max_snr=20),\n                            PinkNoise(p=1, min_snr=5, max_snr=20),\n                            AddGaussianNoise(min_amplitude=0.0001, max_amplitude=0.03, p=0.5),\n                            AddGaussianSNR(min_snr_in_db=5, max_snr_in_db=15, p=0.5),\n                        ],\n                        p=0.3,\n                    ),\n                    AddBackgroundNoise(\n                        sounds_path=self.config.BACKGROUND_PATH, min_snr_in_db=0, max_snr_in_db=2, p=0.5\n                    ),\n                    Normalize(p=1),`\n\n2. cut mix + mix up\n3. loss function: BCEWithLogits + BCEFocal2WayLoss\n4. hypers setting (n_fft, n_mels, hop_length) refer to our inference notebook.\n\nOur inference kernel and all trained models are [[publicly available](https://www.kaggle.com/code/leonshangguan/private-7-8-final-of-submission)] \nOnly one key point to mention: if a bird is detected in the previous or next 5s, we will rank the probs and add the top5 bird species to the current detected birds.\n\nBecause this solution was not selected as our final submission, we don't know the actual rank, but as it scores 0.79 in private, it should rank 7-8.\n\n\n**[#1 Private #2] Solution**\n\nActually, I am curious that no one found it, the solution is provided by the host and finally allowed by the host.\n\n1. If you look at the discussion [Meet the host](https://www.kaggle.com/competitions/birdclef-2022/discussion/307941), you will find the host mentioned [BirdNet project](https://birdnet.cornell.edu/) in the post.\n2. Click the link, and it is easy to find the host's [github repo](https://github.com/kahst/BirdNET-Analyzer).\n3. Then, find the overlap classes between the [host's model](https://github.com/kahst/BirdNET-Analyzer/blob/main/checkpoints/V2.1/BirdNET_GLOBAL_2K_V2.1_Labels.txt) and the scored birds, 20 out of 21 scored birds are the same (except aniani).\n4. Modify species_list.txt under example folder accordingly, I have uploaded the modified repo to kaggle [here](https://www.kaggle.com/datasets/leonshangguan/birdnet.).\n5. Do some post-processing as in our [[inference notebook](https://www.kaggle.com/code/leonshangguan/birdnet-inference)]\n6. Thanks to @ivanpan who opened [this issue](https://github.com/kahst/BirdNET-Analyzer/issues/40), the host says `we won't enforce the \"non-commercial\" clause in the license for BirdCLEF, and you can use BirdNET in your submissions.` (I don't know if they also benefit from this repo, we can wait for their solution)\n\nSome Notes:\nHonestly, we didn't originally intend to use this model as a final submission until we notice the issue mentioned above, and actually, the ensemble of our own model could also reach the gold zone. The answer is provided by the host so that's why I say it is a weird solution. I guess the BirdNet was trained on the data for the public leaderboard but not the private one since there's a huge drop between the public lb to private (0.91 --> 0.84; 0.85 --> 0.78)\n\nThe BirdNet is running on CPU less than 2h inference time, while ours cost about 8h to run on GPU. So the host wins, my hope is the first place team doesn't benefit from that model and can beat the host. Looking forward to their solution.\n\n**Finally, a big thanks to @stefankahl for hosting this amazing competition and providing the answer as well xD.**",
      "votes": 59
    },
    {
      "id": 1800598,
      "postDate": "2022-05-25T04:25:22.333Z",
      "content": "<p>Congratulations!</p>\n<p>I do feel this should have been disclosed by <a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> as it seems like the BirdNET model has been trained at least partially on the test data used in this competition.</p>",
      "rawMarkdown": "Congratulations!\n\nI do feel this should have been disclosed by @stefankahl as it seems like the BirdNET model has been trained at least partially on the test data used in this competition.",
      "votes": 10,
      "replies": [
        {
          "id": 1801102,
          "postDate": "2022-05-25T12:54:06Z",
          "content": "<p>No, it wasn't. Yet, we used other soundscape data and I never realized that this might be an issue for this competition. My guess is, with competition data only, BirdNET would not have scored in the top 10.</p>",
          "rawMarkdown": "No, it wasn't. Yet, we used other soundscape data and I never realized that this might be an issue for this competition. My guess is, with competition data only, BirdNET would not have scored in the top 10.",
          "votes": 4
        }
      ]
    },
    {
      "id": 1800551,
      "postDate": "2022-05-25T03:07:21.853Z",
      "content": "<p>thanks for the story. it is very interesting whether the host used more training records to train the model or not</p>",
      "rawMarkdown": "thanks for the story. it is very interesting whether the host used more training records to train the model or not",
      "votes": 7,
      "replies": [
        {
          "id": 1800565,
          "postDate": "2022-05-25T03:27:03.180Z",
          "content": "<p>The host used many more. I think it was somewhere around 2434 species in the train set.</p>",
          "rawMarkdown": "The host used many more. I think it was somewhere around 2434 species in the train set.",
          "votes": 2
        },
        {
          "id": 1800634,
          "postDate": "2022-05-25T05:32:27.873Z",
          "content": "<p>I'm talking about our species. did they use, for example, the test data of this competition for training</p>",
          "rawMarkdown": "I'm talking about our species. did they use, for example, the test data of this competition for training",
          "votes": 3
        }
      ]
    },
    {
      "id": 1801322,
      "postDate": "2022-05-25T16:02:52.193Z",
      "content": "<p>Someone asked me <code>why didn't you contact the host already those 20 days ago when you found it or at least 12 days ago when you wrote your comment?</code> -- Because, as I said, we didn't manage to select BirdNet as our final submission so I didn't think that's an issue and did not contact the host. We keep training our own model until the last minute and our own one is ranking 9 which is also in the gold zone. To be honest, we didn't think the BirdNet is allowed until the host said it is allowed. I understand our solution is weird under some gray area, but I don't understand why someone downvotes my comments (and downvotes the 1st place team members comments). This situation happened in <a href=\"https://www.kaggle.com/competitions/cassava-leaf-disease-classification/overview\" target=\"_blank\">Cassava Leaf Disease Classification\n</a> as well where someone use pre-trained model and reached top places. Kaggle should manage to develop more clear rules and we should keep looking forward to helping avoid this case happen again.</p>",
      "rawMarkdown": "Someone asked me `why didn't you contact the host already those 20 days ago when you found it or at least 12 days ago when you wrote your comment?` -- Because, as I said, we didn't manage to select BirdNet as our final submission so I didn't think that's an issue and did not contact the host. We keep training our own model until the last minute and our own one is ranking 9 which is also in the gold zone. To be honest, we didn't think the BirdNet is allowed until the host said it is allowed. I understand our solution is weird under some gray area, but I don't understand why someone downvotes my comments (and downvotes the 1st place team members comments). This situation happened in [Cassava Leaf Disease Classification\n](https://www.kaggle.com/competitions/cassava-leaf-disease-classification/overview) as well where someone use pre-trained model and reached top places. Kaggle should manage to develop more clear rules and we should keep looking forward to helping avoid this case happen again.",
      "votes": 7
    },
    {
      "id": 1800641,
      "postDate": "2022-05-25T05:42:11.013Z",
      "content": "<p>BirdNet was a huge revelation to me in this competition. I couldn't believe how well it works, so decided to test on last year competition where we got 8th place. Easily managed to get top-1 on private there, but I believe public scores were around silver zone, that's why I wasn't 100% sure it would perform that well on private here.</p>\n<p>Glad I was wrong and now we can see that BirdNet gets top-1 on private in both years. </p>\n<p>For the sake of honesty, we actually ensembled BirdNet with our models to get some additional boost and spent a couple of months trying to perfect those models (if I'm not mistaken, they score 0.78-0.79 on private). I believe we will be sharing results soon. But anyway, thanks <a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> for this competition. I mentioned this last year, I'm gonna mention this again - great orgs! One of the very few on Kaggle who provide great resources here (including notebooks), and simply answer questions to participants without abandoning a competition 1 week in. </p>\n<p>Thanks! </p>",
      "rawMarkdown": "BirdNet was a huge revelation to me in this competition. I couldn't believe how well it works, so decided to test on last year competition where we got 8th place. Easily managed to get top-1 on private there, but I believe public scores were around silver zone, that's why I wasn't 100% sure it would perform that well on private here.\n\nGlad I was wrong and now we can see that BirdNet gets top-1 on private in both years. \n\nFor the sake of honesty, we actually ensembled BirdNet with our models to get some additional boost and spent a couple of months trying to perfect those models (if I'm not mistaken, they score 0.78-0.79 on private). I believe we will be sharing results soon. But anyway, thanks @stefankahl for this competition. I mentioned this last year, I'm gonna mention this again - great orgs! One of the very few on Kaggle who provide great resources here (including notebooks), and simply answer questions to participants without abandoning a competition 1 week in. \n\nThanks! ",
      "votes": 7,
      "replies": [
        {
          "id": 1800653,
          "postDate": "2022-05-25T05:51:43.273Z",
          "content": "<p>I think this network works better because they had more data. not a few records, as we have.</p>",
          "rawMarkdown": "I think this network works better because they had more data. not a few records, as we have.",
          "votes": 7
        },
        {
          "id": 1800661,
          "postDate": "2022-05-25T06:05:31.307Z",
          "content": "<p>Probably BirdNet also trained on data without noisy labels and maybe even on data which used for eval here.</p>",
          "rawMarkdown": "Probably BirdNet also trained on data without noisy labels and maybe even on data which used for eval here.",
          "votes": 1
        },
        {
          "id": 1800663,
          "postDate": "2022-05-25T06:06:38.027Z",
          "content": "<p><a href=\"https://www.kaggle.com/vlomme\" target=\"_blank\">@vlomme</a> I think you're right. The model itself is quite quite good, but combine it with a lot of data - and that's a recipe for SOTA.  </p>",
          "rawMarkdown": "@vlomme I think you're right. The model itself is quite quite good, but combine it with a lot of data - and that's a recipe for SOTA.  "
        },
        {
          "id": 1800677,
          "postDate": "2022-05-25T06:11:14.007Z",
          "content": "<p>It's just that if non-public data and, possibly, test data were used for it training, then it was pointless to compete with such a model. It's very strange and I'm sad</p>",
          "rawMarkdown": "It's just that if non-public data and, possibly, test data were used for it training, then it was pointless to compete with such a model. It's very strange and I'm sad",
          "votes": 7
        },
        {
          "id": 1800679,
          "postDate": "2022-05-25T06:14:01.277Z",
          "content": "<p>I think that the conclusion of this competition is<br>\n\"Let's increase the number of data without training with a few amount of data\"<br>\nIt wasn't what I expected.</p>",
          "rawMarkdown": "I think that the conclusion of this competition is\n\"Let's increase the number of data without training with a few amount of data\"\nIt wasn't what I expected.",
          "votes": 3
        },
        {
          "id": 1800689,
          "postDate": "2022-05-25T06:27:19.053Z",
          "content": "<p>Hold  up, let me get this straight. We do not allowed to use Macaulay Library data, but allowed to use BirdNet, trained on Macaulay Library data? Can I train my own public GlebNet on Macaulay Library data (with all agreement that needed), and use it?</p>",
          "rawMarkdown": "Hold  up, let me get this straight. We do not allowed to use Macaulay Library data, but allowed to use BirdNet, trained on Macaulay Library data? Can I train my own public GlebNet on Macaulay Library data (with all agreement that needed), and use it?",
          "votes": 11,
          "replies": [
            {
              "id": 1801090,
              "postDate": "2022-05-25T12:27:40.717Z",
              "content": "<p>If it's okay to use BirdNET it should be alright to use your own model as long as it's publicly available, no matter what data it's been trained on. Is this correct <a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> ?</p>",
              "rawMarkdown": "If it's okay to use BirdNET it should be alright to use your own model as long as it's publicly available, no matter what data it's been trained on. Is this correct @stefankahl ?",
              "votes": 1
            }
          ]
        },
        {
          "id": 1800690,
          "postDate": "2022-05-25T06:29:22.980Z",
          "content": "<p>No you can't.    </p>",
          "rawMarkdown": "No you can't.    ",
          "votes": 1
        },
        {
          "id": 1800699,
          "postDate": "2022-05-25T06:35:24.997Z",
          "content": "<p><a href=\"https://www.kaggle.com/bakeryproducts\" target=\"_blank\">@bakeryproducts</a> couldn't agree more, in the forum there were countless discussions that explicitly prohibited the use of Macaulay Library and audios from xeno-canto w/o appropriate license (e.g. see this <a href=\"https://www.kaggle.com/competitions/birdclef-2022/discussion/315361\" target=\"_blank\">post</a>)</p>",
          "rawMarkdown": "@bakeryproducts couldn't agree more, in the forum there were countless discussions that explicitly prohibited the use of Macaulay Library and audios from xeno-canto w/o appropriate license (e.g. see this [post](https://www.kaggle.com/competitions/birdclef-2022/discussion/315361))",
          "votes": 4
        },
        {
          "id": 1800723,
          "postDate": "2022-05-25T06:59:33.683Z",
          "content": "<p>To fellow participants, imagine scenario: someone creating topic \"BirdNet is kinda good\" two days ago. Month(s) of time -&gt; poof -&gt; 'i would like to thank kaggle for this competition and great orgs, …'</p>",
          "rawMarkdown": "To fellow participants, imagine scenario: someone creating topic \"BirdNet is kinda good\" two days ago. Month(s) of time -> poof -> 'i would like to thank kaggle for this competition and great orgs, ...'",
          "votes": 4
        },
        {
          "id": 1800724,
          "postDate": "2022-05-25T07:00:44.813Z",
          "content": "<p>Around which point in the competition did you discover BirdNET?</p>",
          "rawMarkdown": "Around which point in the competition did you discover BirdNET?",
          "votes": 1
        },
        {
          "id": 1800728,
          "postDate": "2022-05-25T07:05:28.450Z",
          "content": "<p>no questions to the participants, it is strange that the organizers allowed the use of this model</p>",
          "rawMarkdown": "no questions to the participants, it is strange that the organizers allowed the use of this model",
          "votes": 2
        },
        {
          "id": 1800730,
          "postDate": "2022-05-25T07:09:08.577Z",
          "content": "<p><a href=\"https://www.kaggle.com/vlomme\" target=\"_blank\">@vlomme</a>  thats my point, rules were made in such a way that it all could end disastrously</p>",
          "rawMarkdown": "@vlomme  thats my point, rules were made in such a way that it all could end disastrously",
          "votes": 6
        },
        {
          "id": 1800732,
          "postDate": "2022-05-25T07:12:27.660Z",
          "content": "<p>I agree       </p>",
          "rawMarkdown": "I agree       ",
          "votes": 1
        },
        {
          "id": 1800793,
          "postDate": "2022-05-25T08:15:55.780Z",
          "content": "<p>I am very confident (although I have no proof) that BirdNet only works so well because it was either trained on more data, or even the test data itself. So I am not sure if the host really wins here… It looks like a big leak.</p>",
          "rawMarkdown": "I am very confident (although I have no proof) that BirdNet only works so well because it was either trained on more data, or even the test data itself. So I am not sure if the host really wins here... It looks like a big leak.",
          "votes": 19
        },
        {
          "id": 1800809,
          "postDate": "2022-05-25T08:26:26.350Z",
          "content": "<p>It is a fact that BirdNet is trained on a larger amount of data (but hardly on a test). In a competition where there were few examples (several per class) this is a non-competitive advantage</p>",
          "rawMarkdown": "It is a fact that BirdNet is trained on a larger amount of data (but hardly on a test). In a competition where there were few examples (several per class) this is a non-competitive advantage",
          "votes": 3
        },
        {
          "id": 1800830,
          "postDate": "2022-05-25T08:44:38.680Z",
          "content": "<p>And this extra data Macaulay Library was not allowed to be used here in this competition but the BirdNet model was trained on it? Wouldn't that mean that BirdNet model should not be allowed?</p>",
          "rawMarkdown": "And this extra data Macaulay Library was not allowed to be used here in this competition but the BirdNet model was trained on it? Wouldn't that mean that BirdNet model should not be allowed?",
          "votes": 13
        },
        {
          "id": 1800841,
          "postDate": "2022-05-25T08:55:22.787Z",
          "content": "<p>Correct. But unfortunately, permission seems to have been given by the organizers to use this in a github issue 2 days ago. </p>",
          "rawMarkdown": "Correct. But unfortunately, permission seems to have been given by the organizers to use this in a github issue 2 days ago. ",
          "votes": 9
        },
        {
          "id": 1800842,
          "postDate": "2022-05-25T08:55:45.820Z",
          "content": "<p>Yes, that's right. For some reason the organizer allowed the model to be used</p>",
          "rawMarkdown": "Yes, that's right. For some reason the organizer allowed the model to be used",
          "votes": 2
        },
        {
          "id": 1800937,
          "postDate": "2022-05-25T10:06:31.677Z",
          "content": "<p>I think the organizers should clarify whether the Macaulay Library or competition test data were used or not in the BirdNet. In any case, I feel empty.</p>",
          "rawMarkdown": "I think the organizers should clarify whether the Macaulay Library or competition test data were used or not in the BirdNet. In any case, I feel empty.",
          "votes": 6
        },
        {
          "id": 1800946,
          "postDate": "2022-05-25T10:09:57.753Z",
          "content": "<p>They mention it explicitly in the linked issue that they use Macaulay data!</p>",
          "rawMarkdown": "They mention it explicitly in the linked issue that they use Macaulay data!",
          "votes": 4
        },
        {
          "id": 1800962,
          "postDate": "2022-05-25T10:16:34.937Z",
          "content": "<p>Wow, I feel for you. Crazy to make such a ground-breaking decision in a github issue one day before end of competition…</p>",
          "rawMarkdown": "Wow, I feel for you. Crazy to make such a ground-breaking decision in a github issue one day before end of competition...",
          "votes": 10
        },
        {
          "id": 1801094,
          "postDate": "2022-05-25T12:32:09.127Z",
          "content": "<p>Yes, I also believe that BirdNET works so well because of additional training data (we indeed used Macaulay Library and another soundscape set from Hawaii). It would probably not score in the top 10 with only the competition data. Unfortunately, we only realized that people would use BirdNET one day before the deadline, and it was too late to implement any last-minute rule changes. This is just something that slipped our minds when organizing the competition.</p>",
          "rawMarkdown": "Yes, I also believe that BirdNET works so well because of additional training data (we indeed used Macaulay Library and another soundscape set from Hawaii). It would probably not score in the top 10 with only the competition data. Unfortunately, we only realized that people would use BirdNET one day before the deadline, and it was too late to implement any last-minute rule changes. This is just something that slipped our minds when organizing the competition.",
          "votes": -4
        },
        {
          "id": 1801096,
          "postDate": "2022-05-25T12:34:42.807Z",
          "content": "<p>I am not sure I am following <a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> - but you explicitly <strong>allowed</strong> it one day before deadline, there was no reason to as it was disallowed before that. So you actually implemented a last-minute rule change.</p>",
          "rawMarkdown": "I am not sure I am following @stefankahl - but you explicitly **allowed** it one day before deadline, there was no reason to as it was disallowed before that. So you actually implemented a last-minute rule change.",
          "votes": 5
        },
        {
          "id": 1801100,
          "postDate": "2022-05-25T12:47:53.713Z",
          "content": "<p>No, it was not disallowed before that, it's a public repo and anyone could have used it. Even the fact that it uses Macaulay data doesn't change that. If we had been aware earlier, we would have implemented a rule change at the beginning of the competition. It's like a vision model trained on the non-public Google JFT-300M dataset used for an ImageNet competition. However, we are interested in alternative approaches and thus would have limited the use of BirdNET - it just never occurred to us that this might be a useful rule addition.</p>",
          "rawMarkdown": "No, it was not disallowed before that, it's a public repo and anyone could have used it. Even the fact that it uses Macaulay data doesn't change that. If we had been aware earlier, we would have implemented a rule change at the beginning of the competition. It's like a vision model trained on the non-public Google JFT-300M dataset used for an ImageNet competition. However, we are interested in alternative approaches and thus would have limited the use of BirdNET - it just never occurred to us that this might be a useful rule addition.",
          "votes": -2
        },
        {
          "id": 1801129,
          "postDate": "2022-05-25T13:34:12.047Z",
          "content": "<p>Your first statement in this github repo was very definite that it was not allowed. Also, according to reports of others, the Macaulay dataset was explicitly forbidden to use, so what sense does it make to allow a separate model that has been trained on this dataset?</p>\n<p>If a competition only allows external data that can be commercially used, which is the default, then also models trained on non-commercial-only data are obviously not allowed, this also applies to any of the standard pretrained models. If that is actually always enforced, I am not sure. </p>\n<p>If you really suddenly wanted to allow this dataset, then you should have posted it here for everyone to see and extend the deadline by 1-2 weeks.</p>",
          "rawMarkdown": "Your first statement in this github repo was very definite that it was not allowed. Also, according to reports of others, the Macaulay dataset was explicitly forbidden to use, so what sense does it make to allow a separate model that has been trained on this dataset?\n\nIf a competition only allows external data that can be commercially used, which is the default, then also models trained on non-commercial-only data are obviously not allowed, this also applies to any of the standard pretrained models. If that is actually always enforced, I am not sure. \n\nIf you really suddenly wanted to allow this dataset, then you should have posted it here for everyone to see and extend the deadline by 1-2 weeks.",
          "votes": 7
        },
        {
          "id": 1801132,
          "postDate": "2022-05-25T13:37:35.927Z",
          "content": "<p>But here is where it gets complicated. BirdNET is not a dataset, it's a trained model which is publicly available, so the Macaulay Library rule does not apply. It was trained on ML data, but it is not the same as ML data. Yet, we should have anticipated the implications when publishing the model which is simply something that we missed. Otherwise, we would have been able to implement a \"no BirdNET\" rule.</p>",
          "rawMarkdown": "But here is where it gets complicated. BirdNET is not a dataset, it's a trained model which is publicly available, so the Macaulay Library rule does not apply. It was trained on ML data, but it is not the same as ML data. Yet, we should have anticipated the implications when publishing the model which is simply something that we missed. Otherwise, we would have been able to implement a \"no BirdNET\" rule.",
          "votes": -1
        },
        {
          "id": 1801140,
          "postDate": "2022-05-25T13:50:52.350Z",
          "content": "<blockquote>\n  <p>BirdNET is not a dataset, it's a trained model which is publicly available, so the Macaulay Library rule does not apply</p>\n</blockquote>\n<p>How do you come to that conclusion? A model always has the same license as the data it was trained on. At least that is my knowledge. Otherwise you could always train a model on unlicensed data and then say, well, I only use the model from now on, but not the data.</p>\n<p>But anyways, you have the model published as non-commercial only, so it was fine to not be used here in this competition.</p>",
          "rawMarkdown": "> BirdNET is not a dataset, it's a trained model which is publicly available, so the Macaulay Library rule does not apply\n\nHow do you come to that conclusion? A model always has the same license as the data it was trained on. At least that is my knowledge. Otherwise you could always train a model on unlicensed data and then say, well, I only use the model from now on, but not the data.\n\nBut anyways, you have the model published as non-commercial only, so it was fine to not be used here in this competition.",
          "votes": 4
        },
        {
          "id": 1801149,
          "postDate": "2022-05-25T13:55:45.447Z",
          "content": "<p>The confusion is understandable, and our first response to the request to use BirdNET for this competition was to not allow it due to the non-commercial clause in the license. Yet, we realized that parts of the training data have the exact same license and that we cannot restrict the use of BirdNET based on the license without being inconsistent. We will do a better job next time - that's definitively a lesson learned.</p>",
          "rawMarkdown": "The confusion is understandable, and our first response to the request to use BirdNET for this competition was to not allow it due to the non-commercial clause in the license. Yet, we realized that parts of the training data have the exact same license and that we cannot restrict the use of BirdNET based on the license without being inconsistent. We will do a better job next time - that's definitively a lesson learned.",
          "votes": -1
        },
        {
          "id": 1801160,
          "postDate": "2022-05-25T13:58:57.260Z",
          "content": "<p>But, correct me if I am wrong, as a host you can always disallow specific models and data, regardless of the circumstances. </p>",
          "rawMarkdown": "But, correct me if I am wrong, as a host you can always disallow specific models and data, regardless of the circumstances. ",
          "votes": 4
        },
        {
          "id": 1801165,
          "postDate": "2022-05-25T14:00:32.907Z",
          "content": "<p>Guys, I think there's no need to quarrel over this topic. I think the main problem is I found the solution too late otherwise I would make it publicly available, and no one asked about the BirdNet. I don't know how many teams found the solution (perhaps only top-1 and us). If this solution impact too many teams, those teams should stand out to say it. It's a learning process for us as well as the host, things beyond expectation always happen. The best option is just never to allow external data, and I believe the host will organize better in the future.</p>",
          "rawMarkdown": "Guys, I think there's no need to quarrel over this topic. I think the main problem is I found the solution too late otherwise I would make it publicly available, and no one asked about the BirdNet. I don't know how many teams found the solution (perhaps only top-1 and us). If this solution impact too many teams, those teams should stand out to say it. It's a learning process for us as well as the host, things beyond expectation always happen. The best option is just never to allow external data, and I believe the host will organize better in the future.",
          "votes": -3
        },
        {
          "id": 1801174,
          "postDate": "2022-05-25T14:09:08.993Z",
          "content": "<p>Yeah, someone could have used BirdNet last year and still win. But nobody found it (including us), until this competition. So live and learn. Now we can prepare better for the next competition(s)</p>",
          "rawMarkdown": "Yeah, someone could have used BirdNet last year and still win. But nobody found it (including us), until this competition. So live and learn. Now we can prepare better for the next competition(s)",
          "votes": -6
        },
        {
          "id": 1801176,
          "postDate": "2022-05-25T14:11:42.353Z",
          "content": "<p>Did you use last year's version of BirdNet?</p>",
          "rawMarkdown": "Did you use last year's version of BirdNet?",
          "votes": 5
        },
        {
          "id": 1801177,
          "postDate": "2022-05-25T14:12:23.540Z",
          "content": "<p>BirdNet in this form only exists since way after last year's competition. It is only useful because it has been trained on extra data that was not available to other participants.</p>\n<p>And how does this help me to prepare better for the next competition?</p>",
          "rawMarkdown": "BirdNet in this form only exists since way after last year's competition. It is only useful because it has been trained on extra data that was not available to other participants.\n\nAnd how does this help me to prepare better for the next competition?",
          "votes": 6
        },
        {
          "id": 1801178,
          "postDate": "2022-05-25T14:13:33.700Z",
          "content": "<p><a href=\"https://www.kaggle.com/ivanpan\" target=\"_blank\">@ivanpan</a>  Did you run your \"test\" on new edition of BirdNet, or correct edition (dated before 2021 competition) ? </p>",
          "rawMarkdown": "@ivanpan  Did you run your \"test\" on new edition of BirdNet, or correct edition (dated before 2021 competition) ? ",
          "votes": 2
        },
        {
          "id": 1801182,
          "postDate": "2022-05-25T14:13:44.970Z",
          "content": "<p>We will make sure that the competition data equals the data we used for BirdNET. This way, using BirdNET will not result in an advantage.</p>",
          "rawMarkdown": "We will make sure that the competition data equals the data we used for BirdNET. This way, using BirdNET will not result in an advantage.",
          "votes": 2
        },
        {
          "id": 1801189,
          "postDate": "2022-05-25T14:17:07.047Z",
          "content": "<p>The first commit on the Birdnet repo (not including the lasagne code one) is from September 2021, so I doubt that it was useful in a competition that ended in June 2021. </p>\n<p>This just sets an extremely dangerous precedent for all future Kaggle competitions. What I learned from this is that I cannot use data that is not licensed CC-BY(-SA), but I am allowed to use a model trained on data that does not have that license as long as it is publicly available? I can buy a dataset, give it a friend, ask him to train a model on it and put it on a repo, and then I am allowed to use that in a competition. Clearly this is circumventing a restriction that is put onto competitors.</p>",
          "rawMarkdown": "The first commit on the Birdnet repo (not including the lasagne code one) is from September 2021, so I doubt that it was useful in a competition that ended in June 2021. \n\nThis just sets an extremely dangerous precedent for all future Kaggle competitions. What I learned from this is that I cannot use data that is not licensed CC-BY(-SA), but I am allowed to use a model trained on data that does not have that license as long as it is publicly available? I can buy a dataset, give it a friend, ask him to train a model on it and put it on a repo, and then I am allowed to use that in a competition. Clearly this is circumventing a restriction that is put onto competitors.",
          "votes": 10
        },
        {
          "id": 1801194,
          "postDate": "2022-05-25T14:18:57.163Z",
          "content": "<p>BirdNet in this form only exists since way after last year's competition -- anyone even tried <a href=\"https://github.com/kahst/BirdNET-Lite\" target=\"_blank\">this repo</a> and <a href=\"https://github.com/kahst/BirdNET-Demo\" target=\"_blank\">this</a> for the last year's competition? This is before 2021 (even 3 years ago), I don't know how they perform but it seems no one even tried it.<br>\nprepare better for the next competition -- I think this is for both the host and us</p>",
          "rawMarkdown": "BirdNet in this form only exists since way after last year's competition -- anyone even tried [this repo](https://github.com/kahst/BirdNET-Lite) and [this](https://github.com/kahst/BirdNET-Demo) for the last year's competition? This is before 2021 (even 3 years ago), I don't know how they perform but it seems no one even tried it.\nprepare better for the next competition -- I think this is for both the host and us",
          "votes": -2
        },
        {
          "id": 1801229,
          "postDate": "2022-05-25T14:37:02.490Z",
          "content": "<p>\"But here is where it gets complicated. BirdNET is not a dataset, it's a trained model which is publicly available, so the Macaulay Library rule does not apply. It was trained on ML data, but it is not the same as ML data.\"<br>\n<a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> I think that last year I did ask if Macaulay data was usable and the answer was no. Now you are saying that using  a model trained on that data is fine. This is weird. What is the difference between a model trained by you and a model trained by a competition participant?<br>\nI did find data for the birds in this comp on macalulay library, then remembered I could not use it and gave up on the competition. I'm glad I did not spent time on it.</p>",
          "rawMarkdown": "\n\"But here is where it gets complicated. BirdNET is not a dataset, it's a trained model which is publicly available, so the Macaulay Library rule does not apply. It was trained on ML data, but it is not the same as ML data.\"\n\n\n@stefankahl I think that last year I did ask if Macaulay data was usable and the answer was no. Now you are saying that using  a model trained on that data is fine. This is weird. What is the difference between a model trained by you and a model trained by a competition participant?\n\nI did find data for the birds in this comp on macalulay library, then remembered I could not use it and gave up on the competition. I'm glad I did not spent time on it.",
          "votes": 10
        },
        {
          "id": 1801270,
          "postDate": "2022-05-25T15:11:55.157Z",
          "content": "<p><a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> at least, hundreds of competitors got hurt because of this pretrained model using data not allowed in the competition. This model should not be allowed, even in the last day of the competiton, because it simply hurt the rules. I got disqualified from other competition for much less than that.</p>",
          "rawMarkdown": "@stefankahl at least, hundreds of competitors got hurt because of this pretrained model using data not allowed in the competition. This model should not be allowed, even in the last day of the competiton, because it simply hurt the rules. I got disqualified from other competition for much less than that.",
          "votes": 12
        },
        {
          "id": 1801285,
          "postDate": "2022-05-25T15:31:19.117Z",
          "content": "<p><a href=\"https://www.kaggle.com/cpmpml\" target=\"_blank\">@cpmpml</a> the way I understand, a model trained on some data does not necessarily need to have the same license as the data it was trained on. So considering this, if someone (e.g. us as hosts) trains a model and publishes it so that everyone can use it, it doesn't matter which license the training data had. Yet, I fully understand that this is a weird situation and at least a legal gray area, and we have to be more thoughtful next year to avoid another situation like this. We probably would have had time to figure out a good solution if we had been aware earlier during the competition.</p>",
          "rawMarkdown": "@cpmpml the way I understand, a model trained on some data does not necessarily need to have the same license as the data it was trained on. So considering this, if someone (e.g. us as hosts) trains a model and publishes it so that everyone can use it, it doesn't matter which license the training data had. Yet, I fully understand that this is a weird situation and at least a legal gray area, and we have to be more thoughtful next year to avoid another situation like this. We probably would have had time to figure out a good solution if we had been aware earlier during the competition."
        },
        {
          "id": 1801305,
          "postDate": "2022-05-25T15:50:44.137Z",
          "content": "<p>Here you go future BirdClef2023, no need to thank me:</p>\n<pre><code>class GlebNet:\n  def __init__(self, macaulay_data):\n    self.data = macaulay_data\n    self.important_parameter = True\n  def forward(self, idx):\n    return self.data[idx]\n</code></pre>",
          "rawMarkdown": "Here you go future BirdClef2023, no need to thank me:\n\n```\nclass GlebNet:\n  def __init__(self, macaulay_data):\n    self.data = macaulay_data\n    self.important_parameter = True\n  def forward(self, idx):\n    return self.data[idx]\n\n```",
          "votes": -3
        },
        {
          "id": 1801321,
          "postDate": "2022-05-25T16:02:15.440Z",
          "content": "<p>It has already been said many times that a mistake was made. Now it can not be corrected and the 1st and 2nd place is not to blame for this. And in principle nothing will change (except for 3-5 places). </p>",
          "rawMarkdown": "It has already been said many times that a mistake was made. Now it can not be corrected and the 1st and 2nd place is not to blame for this. And in principle nothing will change (except for 3-5 places). ",
          "votes": 6
        },
        {
          "id": 1801483,
          "postDate": "2022-05-25T19:43:38.267Z",
          "content": "<p>I fully agree. The LB cannot be changed, as organizers gave permission explicitly. However, this should be put into rules for future competitions, bcs as I mentioned before, this sets a dangerous precedent.</p>",
          "rawMarkdown": "I fully agree. The LB cannot be changed, as organizers gave permission explicitly. However, this should be put into rules for future competitions, bcs as I mentioned before, this sets a dangerous precedent.",
          "votes": 7
        },
        {
          "id": 1805103,
          "postDate": "2022-05-29T19:34:58.483Z",
          "content": "<p>\"a model trained on some data does not necessarily need to have the same license as the data it was trained on\"</p>\n<p><a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> You should check with a lawyer. Intuition is not a good predictor of the meaning of legal terms.</p>\n<p>In a similar case I know about (different dataset and different pretrained model though, but similar data license), lawyers considered that the license limits on training data were considered to apply to the model trained on the data.</p>\n<p>Anyway, my point was not on the legal side as I am no more a lawyer than you are.  My point was about the distortion in training data. Using your model means using Macaulay Library as training data. Something we were told not to do.</p>\n<p>I feel it is unfair, and this is why i am happy i did not spend time in this competition.</p>\n<p>On a related note, I don't blame people who used your model once you allowed them to. That's not the issue I am discussing.</p>\n<p>I waited a bit to make sure there was no hard feelings, but I think it had to be said. For your own safety (from a legal point of view).</p>",
          "rawMarkdown": "\"a model trained on some data does not necessarily need to have the same license as the data it was trained on\"\n\n@stefankahl You should check with a lawyer. Intuition is not a good predictor of the meaning of legal terms.\n\nIn a similar case I know about (different dataset and different pretrained model though, but similar data license), lawyers considered that the license limits on training data were considered to apply to the model trained on the data.\n\nAnyway, my point was not on the legal side as I am no more a lawyer than you are.  My point was about the distortion in training data. Using your model means using Macaulay Library as training data. Something we were told not to do.\n\nI feel it is unfair, and this is why i am happy i did not spend time in this competition.\n\nOn a related note, I don't blame people who used your model once you allowed them to. That's not the issue I am discussing.\n\nI waited a bit to make sure there was no hard feelings, but I think it had to be said. For your own safety (from a legal point of view).",
          "votes": 1
        }
      ]
    },
    {
      "id": 1801566,
      "postDate": "2022-05-25T22:07:45Z",
      "content": "<p>Despite the fact that the host mistakenly allow the BirdNet model, it's execrable that some Kagglers can find a leak-like situation and secretly exploit it for gold and money prize. This is not a glorious habit and anyone doing it should not be exalted.</p>\n<p>Cheers for <a href=\"https://www.kaggle.com/maxhalford\" target=\"_blank\">@maxhalford</a> who could win the <a href=\"https://www.kaggle.com/competitions/riiid-test-answer-prediction/discussion/189437\" target=\"_blank\">RIID 100k worth competition</a> but chooses to timely disclose the leakage.</p>",
      "rawMarkdown": "Despite the fact that the host mistakenly allow the BirdNet model, it's execrable that some Kagglers can find a leak-like situation and secretly exploit it for gold and money prize. This is not a glorious habit and anyone doing it should not be exalted.\n\nCheers for @maxhalford who could win the [RIID 100k worth competition](https://www.kaggle.com/competitions/riiid-test-answer-prediction/discussion/189437) but chooses to timely disclose the leakage.",
      "votes": 5
    },
    {
      "id": 1800559,
      "postDate": "2022-05-25T03:18:34.827Z",
      "content": "<p>It reminds me of the <a href=\"https://www.kaggle.com/competitions/cassava-leaf-disease-classification/discussion/220898\" target=\"_blank\">2nd place solution of Cassava competition</a>.</p>",
      "rawMarkdown": "It reminds me of the [2nd place solution of Cassava competition](https://www.kaggle.com/competitions/cassava-leaf-disease-classification/discussion/220898).",
      "votes": 3,
      "replies": [
        {
          "id": 1800569,
          "postDate": "2022-05-25T03:38:31.283Z",
          "content": "<p>Yes exactly, </p>",
          "rawMarkdown": "Yes exactly, ",
          "votes": 1
        }
      ]
    },
    {
      "id": 1800666,
      "postDate": "2022-05-25T06:08:01.630Z",
      "content": "<p>Seems like this competition was useless:( Best results achieved by existed model which also can be used in real world instead of ensembles which we train.</p>",
      "rawMarkdown": "Seems like this competition was useless:( Best results achieved by existed model which also can be used in real world instead of ensembles which we train.",
      "votes": 2,
      "replies": [
        {
          "id": 1801103,
          "postDate": "2022-05-25T12:56:26.457Z",
          "content": "<p>No, it was not useless. We will investigate all write-ups, notebooks and working notes to add to our existing model, drawing ideas from everyone's effort. We want to improve bird sound detection and with your participation in this competition, we can do that.</p>",
          "rawMarkdown": "No, it was not useless. We will investigate all write-ups, notebooks and working notes to add to our existing model, drawing ideas from everyone's effort. We want to improve bird sound detection and with your participation in this competition, we can do that.",
          "votes": 2
        }
      ]
    },
    {
      "id": 1805062,
      "postDate": "2022-05-29T18:26:16.937Z",
      "content": "<blockquote>\n  <p>if a bird is detected in the previous or next 5s, we will rank the probs and add the top5 bird species to the current detected birds.</p>\n</blockquote>\n<p>It's really amazing that the information of adjacent time segments can bring up such a boost. </p>",
      "rawMarkdown": "> if a bird is detected in the previous or next 5s, we will rank the probs and add the top5 bird species to the current detected birds.\n\nIt's really amazing that the information of adjacent time segments can bring up such a boost. ",
      "votes": 1,
      "replies": [
        {
          "id": 1805079,
          "postDate": "2022-05-29T19:00:41.153Z",
          "content": "<p>I've also noticed in some recent work that averaging adjacent time windows can be quite helpful. This might in part be due to calls cut off at the window; you may get a misclassification with a partial-call which becomes easier with a small time-shift.</p>\n<p>I've also noticed that this averaging tends to improve precision at the expense of recall. If any time-shift creates more ambiguity, then the model's score will decrease with time-shift averaging.</p>",
          "rawMarkdown": "I've also noticed in some recent work that averaging adjacent time windows can be quite helpful. This might in part be due to calls cut off at the window; you may get a misclassification with a partial-call which becomes easier with a small time-shift.\n\nI've also noticed that this averaging tends to improve precision at the expense of recall. If any time-shift creates more ambiguity, then the model's score will decrease with time-shift averaging.",
          "votes": 3
        }
      ]
    },
    {
      "id": 1800572,
      "postDate": "2022-05-25T03:44:07.690Z",
      "content": "<p>Congrats and thanks for sharing the solution!<br>\nI can't always find this kind of information😂</p>",
      "rawMarkdown": "Congrats and thanks for sharing the solution!\nI can't always find this kind of information😂"
    },
    {
      "id": 1800554,
      "postDate": "2022-05-25T03:11:39.037Z",
      "content": "<p>Congratulations with your score<br>\nAnd I'm happy that you are the only team who found and used it :)</p>",
      "rawMarkdown": "Congratulations with your score\nAnd I'm happy that you are the only team who found and used it :)",
      "replies": [
        {
          "id": 1800556,
          "postDate": "2022-05-25T03:13:34.673Z",
          "content": "<p>the first place also found this</p>",
          "rawMarkdown": "the first place also found this",
          "votes": 3
        }
      ]
    },
    {
      "id": 1801227,
      "postDate": "2022-05-25T14:34:07.357Z",
      "rawMarkdown": "",
      "isDeleted": true
    },
    {
      "id": 1801507,
      "postDate": "2022-05-25T20:08:57.670Z",
      "content": "<p>Thanks for sharing this</p>",
      "rawMarkdown": "Thanks for sharing this"
    },
    {
      "id": 1801395,
      "postDate": "2022-05-25T17:26:08.443Z",
      "content": "<p>Thanks for sharing the solution.</p>",
      "rawMarkdown": "Thanks for sharing the solution."
    },
    {
      "id": 1801208,
      "postDate": "2022-05-25T14:26:13.567Z",
      "content": "<p>Thanks for sharing and Congrats!</p>",
      "rawMarkdown": "Thanks for sharing and Congrats!"
    }
  ],
  "comments": [
    {
      "id": 1800598,
      "author_name": "Gilles Vandewiele",
      "author_url": "",
      "post_date": "2022-05-25T04:25:22.333000",
      "content": "<p>Congratulations!</p>\n<p>I do feel this should have been disclosed by <a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> as it seems like the BirdNET model has been trained at least partially on the test data used in this competition.</p>",
      "votes": 10,
      "replies": [
        {
          "id": 1801102,
          "author_name": "Stefan Kahl",
          "author_url": "",
          "post_date": "2022-05-25T12:54:06",
          "content": "<p>No, it wasn't. Yet, we used other soundscape data and I never realized that this might be an issue for this competition. My guess is, with competition data only, BirdNET would not have scored in the top 10.</p>",
          "votes": 4,
          "replies": []
        }
      ]
    },
    {
      "id": 1800551,
      "author_name": "Kramarenko Vladislav",
      "author_url": "",
      "post_date": "2022-05-25T03:07:21.853000",
      "content": "<p>thanks for the story. it is very interesting whether the host used more training records to train the model or not</p>",
      "votes": 7,
      "replies": [
        {
          "id": 1800565,
          "author_name": "Ari",
          "author_url": "",
          "post_date": "2022-05-25T03:27:03.180000",
          "content": "<p>The host used many more. I think it was somewhere around 2434 species in the train set.</p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 1800634,
          "author_name": "Kramarenko Vladislav",
          "author_url": "",
          "post_date": "2022-05-25T05:32:27.873000",
          "content": "<p>I'm talking about our species. did they use, for example, the test data of this competition for training</p>",
          "votes": 3,
          "replies": []
        }
      ]
    },
    {
      "id": 1801322,
      "author_name": "Zhongkai Shangguan",
      "author_url": "",
      "post_date": "2022-05-25T16:02:52.193000",
      "content": "<p>Someone asked me <code>why didn't you contact the host already those 20 days ago when you found it or at least 12 days ago when you wrote your comment?</code> -- Because, as I said, we didn't manage to select BirdNet as our final submission so I didn't think that's an issue and did not contact the host. We keep training our own model until the last minute and our own one is ranking 9 which is also in the gold zone. To be honest, we didn't think the BirdNet is allowed until the host said it is allowed. I understand our solution is weird under some gray area, but I don't understand why someone downvotes my comments (and downvotes the 1st place team members comments). This situation happened in <a href=\"https://www.kaggle.com/competitions/cassava-leaf-disease-classification/overview\" target=\"_blank\">Cassava Leaf Disease Classification\n</a> as well where someone use pre-trained model and reached top places. Kaggle should manage to develop more clear rules and we should keep looking forward to helping avoid this case happen again.</p>",
      "votes": 7,
      "replies": []
    },
    {
      "id": 1800641,
      "author_name": "Ivan Panshin",
      "author_url": "",
      "post_date": "2022-05-25T05:42:11.013000",
      "content": "<p>BirdNet was a huge revelation to me in this competition. I couldn't believe how well it works, so decided to test on last year competition where we got 8th place. Easily managed to get top-1 on private there, but I believe public scores were around silver zone, that's why I wasn't 100% sure it would perform that well on private here.</p>\n<p>Glad I was wrong and now we can see that BirdNet gets top-1 on private in both years. </p>\n<p>For the sake of honesty, we actually ensembled BirdNet with our models to get some additional boost and spent a couple of months trying to perfect those models (if I'm not mistaken, they score 0.78-0.79 on private). I believe we will be sharing results soon. But anyway, thanks <a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> for this competition. I mentioned this last year, I'm gonna mention this again - great orgs! One of the very few on Kaggle who provide great resources here (including notebooks), and simply answer questions to participants without abandoning a competition 1 week in. </p>\n<p>Thanks! </p>",
      "votes": 7,
      "replies": [
        {
          "id": 1800653,
          "author_name": "Kramarenko Vladislav",
          "author_url": "",
          "post_date": "2022-05-25T05:51:43.273000",
          "content": "<p>I think this network works better because they had more data. not a few records, as we have.</p>",
          "votes": 7,
          "replies": []
        },
        {
          "id": 1800661,
          "author_name": "anthony",
          "author_url": "",
          "post_date": "2022-05-25T06:05:31.307000",
          "content": "<p>Probably BirdNet also trained on data without noisy labels and maybe even on data which used for eval here.</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 1800663,
          "author_name": "Ivan Panshin",
          "author_url": "",
          "post_date": "2022-05-25T06:06:38.027000",
          "content": "<p><a href=\"https://www.kaggle.com/vlomme\" target=\"_blank\">@vlomme</a> I think you're right. The model itself is quite quite good, but combine it with a lot of data - and that's a recipe for SOTA.  </p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 1800677,
          "author_name": "Kramarenko Vladislav",
          "author_url": "",
          "post_date": "2022-05-25T06:11:14.007000",
          "content": "<p>It's just that if non-public data and, possibly, test data were used for it training, then it was pointless to compete with such a model. It's very strange and I'm sad</p>",
          "votes": 7,
          "replies": []
        },
        {
          "id": 1800679,
          "author_name": "UEMU",
          "author_url": "",
          "post_date": "2022-05-25T06:14:01.277000",
          "content": "<p>I think that the conclusion of this competition is<br>\n\"Let's increase the number of data without training with a few amount of data\"<br>\nIt wasn't what I expected.</p>",
          "votes": 3,
          "replies": []
        },
        {
          "id": 1800689,
          "author_name": "Gleb",
          "author_url": "",
          "post_date": "2022-05-25T06:27:19.053000",
          "content": "<p>Hold  up, let me get this straight. We do not allowed to use Macaulay Library data, but allowed to use BirdNet, trained on Macaulay Library data? Can I train my own public GlebNet on Macaulay Library data (with all agreement that needed), and use it?</p>",
          "votes": 11,
          "replies": [
            {
              "id": 1801090,
              "author_name": "Markus Vogelbacher",
              "author_url": "",
              "post_date": "2022-05-25T12:27:40.717000",
              "content": "<p>If it's okay to use BirdNET it should be alright to use your own model as long as it's publicly available, no matter what data it's been trained on. Is this correct <a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> ?</p>",
              "votes": 1,
              "replies": []
            }
          ]
        },
        {
          "id": 1800690,
          "author_name": "Kramarenko Vladislav",
          "author_url": "",
          "post_date": "2022-05-25T06:29:22.980000",
          "content": "<p>No you can't.    </p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 1800699,
          "author_name": "slime",
          "author_url": "",
          "post_date": "2022-05-25T06:35:24.997000",
          "content": "<p><a href=\"https://www.kaggle.com/bakeryproducts\" target=\"_blank\">@bakeryproducts</a> couldn't agree more, in the forum there were countless discussions that explicitly prohibited the use of Macaulay Library and audios from xeno-canto w/o appropriate license (e.g. see this <a href=\"https://www.kaggle.com/competitions/birdclef-2022/discussion/315361\" target=\"_blank\">post</a>)</p>",
          "votes": 4,
          "replies": []
        },
        {
          "id": 1800723,
          "author_name": "Gleb",
          "author_url": "",
          "post_date": "2022-05-25T06:59:33.683000",
          "content": "<p>To fellow participants, imagine scenario: someone creating topic \"BirdNet is kinda good\" two days ago. Month(s) of time -&gt; poof -&gt; 'i would like to thank kaggle for this competition and great orgs, …'</p>",
          "votes": 4,
          "replies": []
        },
        {
          "id": 1800724,
          "author_name": "Gilles Vandewiele",
          "author_url": "",
          "post_date": "2022-05-25T07:00:44.813000",
          "content": "<p>Around which point in the competition did you discover BirdNET?</p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 1800728,
          "author_name": "Kramarenko Vladislav",
          "author_url": "",
          "post_date": "2022-05-25T07:05:28.450000",
          "content": "<p>no questions to the participants, it is strange that the organizers allowed the use of this model</p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 1800730,
          "author_name": "Gleb",
          "author_url": "",
          "post_date": "2022-05-25T07:09:08.577000",
          "content": "<p><a href=\"https://www.kaggle.com/vlomme\" target=\"_blank\">@vlomme</a>  thats my point, rules were made in such a way that it all could end disastrously</p>",
          "votes": 6,
          "replies": []
        },
        {
          "id": 1800732,
          "author_name": "Kramarenko Vladislav",
          "author_url": "",
          "post_date": "2022-05-25T07:12:27.660000",
          "content": "<p>I agree       </p>",
          "votes": 1,
          "replies": []
        },
        {
          "id": 1800793,
          "author_name": "Psi",
          "author_url": "",
          "post_date": "2022-05-25T08:15:55.780000",
          "content": "<p>I am very confident (although I have no proof) that BirdNet only works so well because it was either trained on more data, or even the test data itself. So I am not sure if the host really wins here… It looks like a big leak.</p>",
          "votes": 19,
          "replies": []
        },
        {
          "id": 1800809,
          "author_name": "Kramarenko Vladislav",
          "author_url": "",
          "post_date": "2022-05-25T08:26:26.350000",
          "content": "<p>It is a fact that BirdNet is trained on a larger amount of data (but hardly on a test). In a competition where there were few examples (several per class) this is a non-competitive advantage</p>",
          "votes": 3,
          "replies": []
        },
        {
          "id": 1800830,
          "author_name": "Psi",
          "author_url": "",
          "post_date": "2022-05-25T08:44:38.680000",
          "content": "<p>And this extra data Macaulay Library was not allowed to be used here in this competition but the BirdNet model was trained on it? Wouldn't that mean that BirdNet model should not be allowed?</p>",
          "votes": 13,
          "replies": []
        },
        {
          "id": 1800841,
          "author_name": "Gilles Vandewiele",
          "author_url": "",
          "post_date": "2022-05-25T08:55:22.787000",
          "content": "<p>Correct. But unfortunately, permission seems to have been given by the organizers to use this in a github issue 2 days ago. </p>",
          "votes": 9,
          "replies": []
        },
        {
          "id": 1800842,
          "author_name": "Kramarenko Vladislav",
          "author_url": "",
          "post_date": "2022-05-25T08:55:45.820000",
          "content": "<p>Yes, that's right. For some reason the organizer allowed the model to be used</p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 1800937,
          "author_name": "S. Tomizawa",
          "author_url": "",
          "post_date": "2022-05-25T10:06:31.677000",
          "content": "<p>I think the organizers should clarify whether the Macaulay Library or competition test data were used or not in the BirdNet. In any case, I feel empty.</p>",
          "votes": 6,
          "replies": []
        },
        {
          "id": 1800946,
          "author_name": "Gilles Vandewiele",
          "author_url": "",
          "post_date": "2022-05-25T10:09:57.753000",
          "content": "<p>They mention it explicitly in the linked issue that they use Macaulay data!</p>",
          "votes": 4,
          "replies": []
        },
        {
          "id": 1800962,
          "author_name": "Psi",
          "author_url": "",
          "post_date": "2022-05-25T10:16:34.937000",
          "content": "<p>Wow, I feel for you. Crazy to make such a ground-breaking decision in a github issue one day before end of competition…</p>",
          "votes": 10,
          "replies": []
        },
        {
          "id": 1801094,
          "author_name": "Stefan Kahl",
          "author_url": "",
          "post_date": "2022-05-25T12:32:09.127000",
          "content": "<p>Yes, I also believe that BirdNET works so well because of additional training data (we indeed used Macaulay Library and another soundscape set from Hawaii). It would probably not score in the top 10 with only the competition data. Unfortunately, we only realized that people would use BirdNET one day before the deadline, and it was too late to implement any last-minute rule changes. This is just something that slipped our minds when organizing the competition.</p>",
          "votes": -4,
          "replies": []
        },
        {
          "id": 1801096,
          "author_name": "Psi",
          "author_url": "",
          "post_date": "2022-05-25T12:34:42.807000",
          "content": "<p>I am not sure I am following <a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> - but you explicitly <strong>allowed</strong> it one day before deadline, there was no reason to as it was disallowed before that. So you actually implemented a last-minute rule change.</p>",
          "votes": 5,
          "replies": []
        },
        {
          "id": 1801100,
          "author_name": "Stefan Kahl",
          "author_url": "",
          "post_date": "2022-05-25T12:47:53.713000",
          "content": "<p>No, it was not disallowed before that, it's a public repo and anyone could have used it. Even the fact that it uses Macaulay data doesn't change that. If we had been aware earlier, we would have implemented a rule change at the beginning of the competition. It's like a vision model trained on the non-public Google JFT-300M dataset used for an ImageNet competition. However, we are interested in alternative approaches and thus would have limited the use of BirdNET - it just never occurred to us that this might be a useful rule addition.</p>",
          "votes": -2,
          "replies": []
        },
        {
          "id": 1801129,
          "author_name": "Psi",
          "author_url": "",
          "post_date": "2022-05-25T13:34:12.047000",
          "content": "<p>Your first statement in this github repo was very definite that it was not allowed. Also, according to reports of others, the Macaulay dataset was explicitly forbidden to use, so what sense does it make to allow a separate model that has been trained on this dataset?</p>\n<p>If a competition only allows external data that can be commercially used, which is the default, then also models trained on non-commercial-only data are obviously not allowed, this also applies to any of the standard pretrained models. If that is actually always enforced, I am not sure. </p>\n<p>If you really suddenly wanted to allow this dataset, then you should have posted it here for everyone to see and extend the deadline by 1-2 weeks.</p>",
          "votes": 7,
          "replies": []
        },
        {
          "id": 1801132,
          "author_name": "Stefan Kahl",
          "author_url": "",
          "post_date": "2022-05-25T13:37:35.927000",
          "content": "<p>But here is where it gets complicated. BirdNET is not a dataset, it's a trained model which is publicly available, so the Macaulay Library rule does not apply. It was trained on ML data, but it is not the same as ML data. Yet, we should have anticipated the implications when publishing the model which is simply something that we missed. Otherwise, we would have been able to implement a \"no BirdNET\" rule.</p>",
          "votes": -1,
          "replies": []
        },
        {
          "id": 1801140,
          "author_name": "Psi",
          "author_url": "",
          "post_date": "2022-05-25T13:50:52.350000",
          "content": "<blockquote>\n  <p>BirdNET is not a dataset, it's a trained model which is publicly available, so the Macaulay Library rule does not apply</p>\n</blockquote>\n<p>How do you come to that conclusion? A model always has the same license as the data it was trained on. At least that is my knowledge. Otherwise you could always train a model on unlicensed data and then say, well, I only use the model from now on, but not the data.</p>\n<p>But anyways, you have the model published as non-commercial only, so it was fine to not be used here in this competition.</p>",
          "votes": 4,
          "replies": []
        },
        {
          "id": 1801149,
          "author_name": "Stefan Kahl",
          "author_url": "",
          "post_date": "2022-05-25T13:55:45.447000",
          "content": "<p>The confusion is understandable, and our first response to the request to use BirdNET for this competition was to not allow it due to the non-commercial clause in the license. Yet, we realized that parts of the training data have the exact same license and that we cannot restrict the use of BirdNET based on the license without being inconsistent. We will do a better job next time - that's definitively a lesson learned.</p>",
          "votes": -1,
          "replies": []
        },
        {
          "id": 1801160,
          "author_name": "Psi",
          "author_url": "",
          "post_date": "2022-05-25T13:58:57.260000",
          "content": "<p>But, correct me if I am wrong, as a host you can always disallow specific models and data, regardless of the circumstances. </p>",
          "votes": 4,
          "replies": []
        },
        {
          "id": 1801165,
          "author_name": "Zhongkai Shangguan",
          "author_url": "",
          "post_date": "2022-05-25T14:00:32.907000",
          "content": "<p>Guys, I think there's no need to quarrel over this topic. I think the main problem is I found the solution too late otherwise I would make it publicly available, and no one asked about the BirdNet. I don't know how many teams found the solution (perhaps only top-1 and us). If this solution impact too many teams, those teams should stand out to say it. It's a learning process for us as well as the host, things beyond expectation always happen. The best option is just never to allow external data, and I believe the host will organize better in the future.</p>",
          "votes": -3,
          "replies": []
        },
        {
          "id": 1801174,
          "author_name": "Ivan Panshin",
          "author_url": "",
          "post_date": "2022-05-25T14:09:08.993000",
          "content": "<p>Yeah, someone could have used BirdNet last year and still win. But nobody found it (including us), until this competition. So live and learn. Now we can prepare better for the next competition(s)</p>",
          "votes": -6,
          "replies": []
        },
        {
          "id": 1801176,
          "author_name": "Kramarenko Vladislav",
          "author_url": "",
          "post_date": "2022-05-25T14:11:42.353000",
          "content": "<p>Did you use last year's version of BirdNet?</p>",
          "votes": 5,
          "replies": []
        },
        {
          "id": 1801177,
          "author_name": "Psi",
          "author_url": "",
          "post_date": "2022-05-25T14:12:23.540000",
          "content": "<p>BirdNet in this form only exists since way after last year's competition. It is only useful because it has been trained on extra data that was not available to other participants.</p>\n<p>And how does this help me to prepare better for the next competition?</p>",
          "votes": 6,
          "replies": []
        },
        {
          "id": 1801178,
          "author_name": "Gleb",
          "author_url": "",
          "post_date": "2022-05-25T14:13:33.700000",
          "content": "<p><a href=\"https://www.kaggle.com/ivanpan\" target=\"_blank\">@ivanpan</a>  Did you run your \"test\" on new edition of BirdNet, or correct edition (dated before 2021 competition) ? </p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 1801182,
          "author_name": "Stefan Kahl",
          "author_url": "",
          "post_date": "2022-05-25T14:13:44.970000",
          "content": "<p>We will make sure that the competition data equals the data we used for BirdNET. This way, using BirdNET will not result in an advantage.</p>",
          "votes": 2,
          "replies": []
        },
        {
          "id": 1801189,
          "author_name": "Gilles Vandewiele",
          "author_url": "",
          "post_date": "2022-05-25T14:17:07.047000",
          "content": "<p>The first commit on the Birdnet repo (not including the lasagne code one) is from September 2021, so I doubt that it was useful in a competition that ended in June 2021. </p>\n<p>This just sets an extremely dangerous precedent for all future Kaggle competitions. What I learned from this is that I cannot use data that is not licensed CC-BY(-SA), but I am allowed to use a model trained on data that does not have that license as long as it is publicly available? I can buy a dataset, give it a friend, ask him to train a model on it and put it on a repo, and then I am allowed to use that in a competition. Clearly this is circumventing a restriction that is put onto competitors.</p>",
          "votes": 10,
          "replies": []
        },
        {
          "id": 1801194,
          "author_name": "Zhongkai Shangguan",
          "author_url": "",
          "post_date": "2022-05-25T14:18:57.163000",
          "content": "<p>BirdNet in this form only exists since way after last year's competition -- anyone even tried <a href=\"https://github.com/kahst/BirdNET-Lite\" target=\"_blank\">this repo</a> and <a href=\"https://github.com/kahst/BirdNET-Demo\" target=\"_blank\">this</a> for the last year's competition? This is before 2021 (even 3 years ago), I don't know how they perform but it seems no one even tried it.<br>\nprepare better for the next competition -- I think this is for both the host and us</p>",
          "votes": -2,
          "replies": []
        },
        {
          "id": 1801229,
          "author_name": "CPMP",
          "author_url": "",
          "post_date": "2022-05-25T14:37:02.490000",
          "content": "<p>\"But here is where it gets complicated. BirdNET is not a dataset, it's a trained model which is publicly available, so the Macaulay Library rule does not apply. It was trained on ML data, but it is not the same as ML data.\"<br>\n<a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> I think that last year I did ask if Macaulay data was usable and the answer was no. Now you are saying that using  a model trained on that data is fine. This is weird. What is the difference between a model trained by you and a model trained by a competition participant?<br>\nI did find data for the birds in this comp on macalulay library, then remembered I could not use it and gave up on the competition. I'm glad I did not spent time on it.</p>",
          "votes": 10,
          "replies": []
        },
        {
          "id": 1801270,
          "author_name": "Giba",
          "author_url": "",
          "post_date": "2022-05-25T15:11:55.157000",
          "content": "<p><a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> at least, hundreds of competitors got hurt because of this pretrained model using data not allowed in the competition. This model should not be allowed, even in the last day of the competiton, because it simply hurt the rules. I got disqualified from other competition for much less than that.</p>",
          "votes": 12,
          "replies": []
        },
        {
          "id": 1801285,
          "author_name": "Stefan Kahl",
          "author_url": "",
          "post_date": "2022-05-25T15:31:19.117000",
          "content": "<p><a href=\"https://www.kaggle.com/cpmpml\" target=\"_blank\">@cpmpml</a> the way I understand, a model trained on some data does not necessarily need to have the same license as the data it was trained on. So considering this, if someone (e.g. us as hosts) trains a model and publishes it so that everyone can use it, it doesn't matter which license the training data had. Yet, I fully understand that this is a weird situation and at least a legal gray area, and we have to be more thoughtful next year to avoid another situation like this. We probably would have had time to figure out a good solution if we had been aware earlier during the competition.</p>",
          "votes": 0,
          "replies": []
        },
        {
          "id": 1801305,
          "author_name": "Gleb",
          "author_url": "",
          "post_date": "2022-05-25T15:50:44.137000",
          "content": "<p>Here you go future BirdClef2023, no need to thank me:</p>\n<pre><code>class GlebNet:\n  def __init__(self, macaulay_data):\n    self.data = macaulay_data\n    self.important_parameter = True\n  def forward(self, idx):\n    return self.data[idx]\n</code></pre>",
          "votes": -3,
          "replies": []
        },
        {
          "id": 1801321,
          "author_name": "Kramarenko Vladislav",
          "author_url": "",
          "post_date": "2022-05-25T16:02:15.440000",
          "content": "<p>It has already been said many times that a mistake was made. Now it can not be corrected and the 1st and 2nd place is not to blame for this. And in principle nothing will change (except for 3-5 places). </p>",
          "votes": 6,
          "replies": []
        },
        {
          "id": 1801483,
          "author_name": "Gilles Vandewiele",
          "author_url": "",
          "post_date": "2022-05-25T19:43:38.267000",
          "content": "<p>I fully agree. The LB cannot be changed, as organizers gave permission explicitly. However, this should be put into rules for future competitions, bcs as I mentioned before, this sets a dangerous precedent.</p>",
          "votes": 7,
          "replies": []
        },
        {
          "id": 1805103,
          "author_name": "CPMP",
          "author_url": "",
          "post_date": "2022-05-29T19:34:58.483000",
          "content": "<p>\"a model trained on some data does not necessarily need to have the same license as the data it was trained on\"</p>\n<p><a href=\"https://www.kaggle.com/stefankahl\" target=\"_blank\">@stefankahl</a> You should check with a lawyer. Intuition is not a good predictor of the meaning of legal terms.</p>\n<p>In a similar case I know about (different dataset and different pretrained model though, but similar data license), lawyers considered that the license limits on training data were considered to apply to the model trained on the data.</p>\n<p>Anyway, my point was not on the legal side as I am no more a lawyer than you are.  My point was about the distortion in training data. Using your model means using Macaulay Library as training data. Something we were told not to do.</p>\n<p>I feel it is unfair, and this is why i am happy i did not spend time in this competition.</p>\n<p>On a related note, I don't blame people who used your model once you allowed them to. That's not the issue I am discussing.</p>\n<p>I waited a bit to make sure there was no hard feelings, but I think it had to be said. For your own safety (from a legal point of view).</p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 1801566,
      "author_name": "kkiller",
      "author_url": "",
      "post_date": "2022-05-25T22:07:45",
      "content": "<p>Despite the fact that the host mistakenly allow the BirdNet model, it's execrable that some Kagglers can find a leak-like situation and secretly exploit it for gold and money prize. This is not a glorious habit and anyone doing it should not be exalted.</p>\n<p>Cheers for <a href=\"https://www.kaggle.com/maxhalford\" target=\"_blank\">@maxhalford</a> who could win the <a href=\"https://www.kaggle.com/competitions/riiid-test-answer-prediction/discussion/189437\" target=\"_blank\">RIID 100k worth competition</a> but chooses to timely disclose the leakage.</p>",
      "votes": 5,
      "replies": []
    },
    {
      "id": 1800559,
      "author_name": "S. Tomizawa",
      "author_url": "",
      "post_date": "2022-05-25T03:18:34.827000",
      "content": "<p>It reminds me of the <a href=\"https://www.kaggle.com/competitions/cassava-leaf-disease-classification/discussion/220898\" target=\"_blank\">2nd place solution of Cassava competition</a>.</p>",
      "votes": 3,
      "replies": [
        {
          "id": 1800569,
          "author_name": "Zhongkai Shangguan",
          "author_url": "",
          "post_date": "2022-05-25T03:38:31.283000",
          "content": "<p>Yes exactly, </p>",
          "votes": 1,
          "replies": []
        }
      ]
    },
    {
      "id": 1800666,
      "author_name": "anthony",
      "author_url": "",
      "post_date": "2022-05-25T06:08:01.630000",
      "content": "<p>Seems like this competition was useless:( Best results achieved by existed model which also can be used in real world instead of ensembles which we train.</p>",
      "votes": 2,
      "replies": [
        {
          "id": 1801103,
          "author_name": "Stefan Kahl",
          "author_url": "",
          "post_date": "2022-05-25T12:56:26.457000",
          "content": "<p>No, it was not useless. We will investigate all write-ups, notebooks and working notes to add to our existing model, drawing ideas from everyone's effort. We want to improve bird sound detection and with your participation in this competition, we can do that.</p>",
          "votes": 2,
          "replies": []
        }
      ]
    },
    {
      "id": 1805062,
      "author_name": "WANG XIN",
      "author_url": "",
      "post_date": "2022-05-29T18:26:16.937000",
      "content": "<blockquote>\n  <p>if a bird is detected in the previous or next 5s, we will rank the probs and add the top5 bird species to the current detected birds.</p>\n</blockquote>\n<p>It's really amazing that the information of adjacent time segments can bring up such a boost. </p>",
      "votes": 1,
      "replies": [
        {
          "id": 1805079,
          "author_name": "Tom Denton",
          "author_url": "",
          "post_date": "2022-05-29T19:00:41.153000",
          "content": "<p>I've also noticed in some recent work that averaging adjacent time windows can be quite helpful. This might in part be due to calls cut off at the window; you may get a misclassification with a partial-call which becomes easier with a small time-shift.</p>\n<p>I've also noticed that this averaging tends to improve precision at the expense of recall. If any time-shift creates more ambiguity, then the model's score will decrease with time-shift averaging.</p>",
          "votes": 3,
          "replies": []
        }
      ]
    },
    {
      "id": 1800572,
      "author_name": "atfujita",
      "author_url": "",
      "post_date": "2022-05-25T03:44:07.690000",
      "content": "<p>Congrats and thanks for sharing the solution!<br>\nI can't always find this kind of information😂</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1800554,
      "author_name": "Kolya Forrat",
      "author_url": "",
      "post_date": "2022-05-25T03:11:39.037000",
      "content": "<p>Congratulations with your score<br>\nAnd I'm happy that you are the only team who found and used it :)</p>",
      "votes": 0,
      "replies": [
        {
          "id": 1800556,
          "author_name": "Kramarenko Vladislav",
          "author_url": "",
          "post_date": "2022-05-25T03:13:34.673000",
          "content": "<p>the first place also found this</p>",
          "votes": 3,
          "replies": []
        }
      ]
    },
    {
      "id": 1801227,
      "author_name": "",
      "author_url": "",
      "post_date": "2022-05-25T14:34:07.357000",
      "content": "",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1801507,
      "author_name": "gilty15",
      "author_url": "",
      "post_date": "2022-05-25T20:08:57.670000",
      "content": "<p>Thanks for sharing this</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1801395,
      "author_name": "jackmtlee",
      "author_url": "",
      "post_date": "2022-05-25T17:26:08.443000",
      "content": "<p>Thanks for sharing the solution.</p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 1801208,
      "author_name": "Thịnh Lâm",
      "author_url": "",
      "post_date": "2022-05-25T14:26:13.567000",
      "content": "<p>Thanks for sharing and Congrats!</p>",
      "votes": 0,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1800539": "As I promised, I will publish my solution right after the competition. This will be a long topic as the two solutions are totally different. As kaggle says > You've been sharing this link too often. We prevent redundant posts to reduce spam. So I put some link in the code block.\n\nBefore the solutions, thanks to my teammate @jionie, our second gold medal, and first-time money zone!!!!!!!!!! Cheers!!!!!!!!!!\n\nI will start with our [Private #7/8 (potential)] Solution first since I **promise **you will say the \"F\" word after seeing the other solution.\n\n**[Private #7/8 (potential)] Solution**\n\nTraining:\nOur first solution is based on @kaerunantoka 's [public notebook](https://www.kaggle.com/code/kaerunantoka/birdclef2022-use-2nd-label-f0) and last year's second-place solution. The training code is pretty the mixture of the two pipelines mentioned above. \nSome key points to mention:\n1. data augmentation:\n`OneOf([\n                        Gain(min_gain_in_db=-15, max_gain_in_db=15, p=0.8),\n                        GainTransition(min_gain_in_db=-15, max_gain_in_db=15, p=0.8),\n                    ]),\n                    OneOf(\n                        [\n                            NoiseInjection(p=1, max_noise_level=0.04),\n                            GaussianNoise(p=1, min_snr=5, max_snr=20),\n                            PinkNoise(p=1, min_snr=5, max_snr=20),\n                            AddGaussianNoise(min_amplitude=0.0001, max_amplitude=0.03, p=0.5),\n                            AddGaussianSNR(min_snr_in_db=5, max_snr_in_db=15, p=0.5),\n                        ],\n                        p=0.3,\n                    ),\n                    AddBackgroundNoise(\n                        sounds_path=self.config.BACKGROUND_PATH, min_snr_in_db=0, max_snr_in_db=2, p=0.5\n                    ),\n                    Normalize(p=1),`\n\n2. cut mix + mix up\n3. loss function: BCEWithLogits + BCEFocal2WayLoss\n4. hypers setting (n_fft, n_mels, hop_length) refer to our inference notebook.\n\nOur inference kernel and all trained models are [[publicly available](https://www.kaggle.com/code/leonshangguan/private-7-8-final-of-submission)] \nOnly one key point to mention: if a bird is detected in the previous or next 5s, we will rank the probs and add the top5 bird species to the current detected birds.\n\nBecause this solution was not selected as our final submission, we don't know the actual rank, but as it scores 0.79 in private, it should rank 7-8.\n\n\n**[#1 Private #2] Solution**\n\nActually, I am curious that no one found it, the solution is provided by the host and finally allowed by the host.\n\n1. If you look at the discussion [Meet the host](https://www.kaggle.com/competitions/birdclef-2022/discussion/307941), you will find the host mentioned [BirdNet project](https://birdnet.cornell.edu/) in the post.\n2. Click the link, and it is easy to find the host's [github repo](https://github.com/kahst/BirdNET-Analyzer).\n3. Then, find the overlap classes between the [host's model](https://github.com/kahst/BirdNET-Analyzer/blob/main/checkpoints/V2.1/BirdNET_GLOBAL_2K_V2.1_Labels.txt) and the scored birds, 20 out of 21 scored birds are the same (except aniani).\n4. Modify species_list.txt under example folder accordingly, I have uploaded the modified repo to kaggle [here](https://www.kaggle.com/datasets/leonshangguan/birdnet.).\n5. Do some post-processing as in our [[inference notebook](https://www.kaggle.com/code/leonshangguan/birdnet-inference)]\n6. Thanks to @ivanpan who opened [this issue](https://github.com/kahst/BirdNET-Analyzer/issues/40), the host says `we won't enforce the \"non-commercial\" clause in the license for BirdCLEF, and you can use BirdNET in your submissions.` (I don't know if they also benefit from this repo, we can wait for their solution)\n\nSome Notes:\nHonestly, we didn't originally intend to use this model as a final submission until we notice the issue mentioned above, and actually, the ensemble of our own model could also reach the gold zone. The answer is provided by the host so that's why I say it is a weird solution. I guess the BirdNet was trained on the data for the public leaderboard but not the private one since there's a huge drop between the public lb to private (0.91 --> 0.84; 0.85 --> 0.78)\n\nThe BirdNet is running on CPU less than 2h inference time, while ours cost about 8h to run on GPU. So the host wins, my hope is the first place team doesn't benefit from that model and can beat the host. Looking forward to their solution.\n\n**Finally, a big thanks to @stefankahl for hosting this amazing competition and providing the answer as well xD.**",
    "1800598": "Congratulations!\n\nI do feel this should have been disclosed by @stefankahl as it seems like the BirdNET model has been trained at least partially on the test data used in this competition.",
    "1800551": "thanks for the story. it is very interesting whether the host used more training records to train the model or not",
    "1801322": "Someone asked me `why didn't you contact the host already those 20 days ago when you found it or at least 12 days ago when you wrote your comment?` -- Because, as I said, we didn't manage to select BirdNet as our final submission so I didn't think that's an issue and did not contact the host. We keep training our own model until the last minute and our own one is ranking 9 which is also in the gold zone. To be honest, we didn't think the BirdNet is allowed until the host said it is allowed. I understand our solution is weird under some gray area, but I don't understand why someone downvotes my comments (and downvotes the 1st place team members comments). This situation happened in [Cassava Leaf Disease Classification\n](https://www.kaggle.com/competitions/cassava-leaf-disease-classification/overview) as well where someone use pre-trained model and reached top places. Kaggle should manage to develop more clear rules and we should keep looking forward to helping avoid this case happen again.",
    "1800641": "BirdNet was a huge revelation to me in this competition. I couldn't believe how well it works, so decided to test on last year competition where we got 8th place. Easily managed to get top-1 on private there, but I believe public scores were around silver zone, that's why I wasn't 100% sure it would perform that well on private here.\n\nGlad I was wrong and now we can see that BirdNet gets top-1 on private in both years. \n\nFor the sake of honesty, we actually ensembled BirdNet with our models to get some additional boost and spent a couple of months trying to perfect those models (if I'm not mistaken, they score 0.78-0.79 on private). I believe we will be sharing results soon. But anyway, thanks @stefankahl for this competition. I mentioned this last year, I'm gonna mention this again - great orgs! One of the very few on Kaggle who provide great resources here (including notebooks), and simply answer questions to participants without abandoning a competition 1 week in. \n\nThanks! ",
    "1801566": "Despite the fact that the host mistakenly allow the BirdNet model, it's execrable that some Kagglers can find a leak-like situation and secretly exploit it for gold and money prize. This is not a glorious habit and anyone doing it should not be exalted.\n\nCheers for @maxhalford who could win the [RIID 100k worth competition](https://www.kaggle.com/competitions/riiid-test-answer-prediction/discussion/189437) but chooses to timely disclose the leakage.",
    "1800559": "It reminds me of the [2nd place solution of Cassava competition](https://www.kaggle.com/competitions/cassava-leaf-disease-classification/discussion/220898).",
    "1800666": "Seems like this competition was useless:( Best results achieved by existed model which also can be used in real world instead of ensembles which we train.",
    "1805062": "> if a bird is detected in the previous or next 5s, we will rank the probs and add the top5 bird species to the current detected birds.\n\nIt's really amazing that the information of adjacent time segments can bring up such a boost. ",
    "1800572": "Congrats and thanks for sharing the solution!\nI can't always find this kind of information😂",
    "1800554": "Congratulations with your score\nAnd I'm happy that you are the only team who found and used it :)",
    "1801227": "",
    "1801507": "Thanks for sharing this",
    "1801395": "Thanks for sharing the solution.",
    "1801208": "Thanks for sharing and Congrats!"
  }
}