{
  "id": 505873,
  "title": "GANs may be promising (Domain Adaptation)",
  "url": "/competitions/birdclef-2024/discussion/505873",
  "author_name": "",
  "post_date": "2024-05-19T12:41:11.069823400Z",
  "votes": 12,
  "comment_count": 10,
  "views": 0,
  "content": "<p>As you noticed, we have a significant domain shift, primarily caused by a variety of new noises appearing as distinct figures on the spectrograms (not just Gaussian noise). This noise is particularly perplexing because it's unclear whether it indicates insects (like crickets) or is merely an obscured bird song.<br>\nHaving a lot of unlabeled data from test domain (about 400k 5 sec segments), I decided to try to train GANs (Generative adversarial network) to replicate this noise while preserving the original spectrogram features from the source domain (training data). While this approach did not improve the LB score, the visual results (in my opinion) closely transformed training samples to the similar test domain samples. I believe that with the appropriate selected GAN architecture and its hyperparameters, this may work out. Therefore, I wanted to share the obtained results to encourage further development in this direction.</p>\n<p>Target domain sample.<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2F7c86da8ea06c7aed4ce9f87e3781496c%2FScreenshot%20from%202024-05-19%2015-34-44.png?generation=1716122112863700&amp;alt=media\"><br>\nTransformed by GAN the same sample from above.<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2Faa390a9885835f0963aba171324d11f1%2FScreenshot%20from%202024-05-19%2015-34-49.png?generation=1716122176193416&amp;alt=media\"></p>\n<p>Target domain sample.<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2F22348704d7b30594c120e515161b57ad%2FScreenshot%20from%202024-05-19%2015-48-56.png?generation=1716123018923134&amp;alt=media\"><br>\nTransformed by GAN the same sample from above.<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2F8cca3248c4da26a3562047d7c11f88b4%2FScreenshot%20from%202024-05-19%2015-49-01.png?generation=1716123027704212&amp;alt=media\"></p>\n<p>For sure that is not ideal transformations and some features related to other birds can be injected by GAN to generated images. <br>\nBut the curernt post is meant just to demonstrate the potential of this deirection.</p>",
  "messages": [
    {
      "id": "2823808",
      "postDate": "05/19/2024 12:41:11",
      "content": "<p>As you noticed, we have a significant domain shift, primarily caused by a variety of new noises appearing as distinct figures on the spectrograms (not just Gaussian noise). This noise is particularly perplexing because it's unclear whether it indicates insects (like crickets) or is merely an obscured bird song.<br>\nHaving a lot of unlabeled data from test domain (about 400k 5 sec segments), I decided to try to train GANs (Generative adversarial network) to replicate this noise while preserving the original spectrogram features from the source domain (training data). While this approach did not improve the LB score, the visual results (in my opinion) closely transformed training samples to the similar test domain samples. I believe that with the appropriate selected GAN architecture and its hyperparameters, this may work out. Therefore, I wanted to share the obtained results to encourage further development in this direction.</p>\n<p>Target domain sample.<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2F7c86da8ea06c7aed4ce9f87e3781496c%2FScreenshot%20from%202024-05-19%2015-34-44.png?generation=1716122112863700&amp;alt=media\"><br>\nTransformed by GAN the same sample from above.<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2Faa390a9885835f0963aba171324d11f1%2FScreenshot%20from%202024-05-19%2015-34-49.png?generation=1716122176193416&amp;alt=media\"></p>\n<p>Target domain sample.<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2F22348704d7b30594c120e515161b57ad%2FScreenshot%20from%202024-05-19%2015-48-56.png?generation=1716123018923134&amp;alt=media\"><br>\nTransformed by GAN the same sample from above.<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2F8cca3248c4da26a3562047d7c11f88b4%2FScreenshot%20from%202024-05-19%2015-49-01.png?generation=1716123027704212&amp;alt=media\"></p>\n<p>For sure that is not ideal transformations and some features related to other birds can be injected by GAN to generated images. <br>\nBut the curernt post is meant just to demonstrate the potential of this deirection.</p>",
      "rawMarkdown": "As you noticed, we have a significant domain shift, primarily caused by a variety of new noises appearing as distinct figures on the spectrograms (not just Gaussian noise). This noise is particularly perplexing because it's unclear whether it indicates insects (like crickets) or is merely an obscured bird song.\nHaving a lot of unlabeled data from test domain (about 400k 5 sec segments), I decided to try to train GANs (Generative adversarial network) to replicate this noise while preserving the original spectrogram features from the source domain (training data). While this approach did not improve the LB score, the visual results (in my opinion) closely transformed training samples to the similar test domain samples. I believe that with the appropriate selected GAN architecture and its hyperparameters, this may work out. Therefore, I wanted to share the obtained results to encourage further development in this direction.\n\nTarget domain sample.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2F7c86da8ea06c7aed4ce9f87e3781496c%2FScreenshot%20from%202024-05-19%2015-34-44.png?generation=1716122112863700&alt=media)\nTransformed by GAN the same sample from above.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2Faa390a9885835f0963aba171324d11f1%2FScreenshot%20from%202024-05-19%2015-34-49.png?generation=1716122176193416&alt=media)\n\nTarget domain sample.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2F22348704d7b30594c120e515161b57ad%2FScreenshot%20from%202024-05-19%2015-48-56.png?generation=1716123018923134&alt=media)\nTransformed by GAN the same sample from above.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2F8cca3248c4da26a3562047d7c11f88b4%2FScreenshot%20from%202024-05-19%2015-49-01.png?generation=1716123027704212&alt=media)\n\n\nFor sure that is not ideal transformations and some features related to other birds can be injected by GAN to generated images. \nBut the curernt post is meant just to demonstrate the potential of this deirection.",
      "votes": null
    },
    {
      "id": "2823912",
      "postDate": "05/19/2024 13:26:05",
      "content": "<p>Maybe using the unlabeled data.</p>",
      "rawMarkdown": "Maybe using the unlabeled data.",
      "votes": null
    },
    {
      "id": "2823918",
      "postDate": "05/19/2024 13:30:50",
      "content": "<p>That is all your point ?) Or what do you mean?</p>",
      "rawMarkdown": "That is all your point ?) Or what do you mean?",
      "votes": null
    },
    {
      "id": "2823934",
      "postDate": "05/19/2024 13:44:51",
      "content": "<p>very nice experiment</p>",
      "rawMarkdown": "very nice experiment",
      "votes": null
    },
    {
      "id": "2823975",
      "postDate": "05/19/2024 14:08:56",
      "content": "<p>The unlabeled dataset already provide you with the domain information. So, if you want to adapt to domain shift, you should probably study unlabeled dataset “directly”. </p>",
      "rawMarkdown": "The unlabeled dataset already provide you with the domain information. So, if you want to adapt to domain shift, you should probably study unlabeled dataset “directly”.",
      "votes": null
    },
    {
      "id": "2824083",
      "postDate": "05/19/2024 15:17:04",
      "content": "<p>If you can say on your own which infromation from unlabeled data can be used that is cool, I still did not find the way how directly use unlabled data because some noise may be the bird song. But for sure there are multiple ways how to make use of unlabeled data. Here is one of them. </p>",
      "rawMarkdown": "If you can say on your own which infromation from unlabeled data can be used that is cool, I still did not find the way how directly use unlabled data because some noise may be the bird song. But for sure there are multiple ways how to make use of unlabeled data. Here is one of them.",
      "votes": null
    },
    {
      "id": "2824263",
      "postDate": "05/19/2024 17:00:38",
      "content": "<p><a href=\"https://www.kaggle.com/yuanzhezhou\" target=\"_blank\">@yuanzhezhou</a> Do you have any suggestions on what to look at when studying the soundscape data directly? I’ve been unable to get any useful augmentations from it so far, so Nikita’s “learned” approach here seems promising </p>",
      "rawMarkdown": "yuanzhezhou Do you have any suggestions on what to look at when studying the soundscape data directly? I’ve been unable to get any useful augmentations from it so far, so Nikita’s “learned” approach here seems promising",
      "votes": null
    },
    {
      "id": "2824474",
      "postDate": "05/19/2024 19:28:17",
      "content": "<p>I think if you could extract useful information from the unlabeled birds that helps LB then using a generative model to synthesize more is a valid approach. Just my two cents of course.</p>",
      "rawMarkdown": "I think if you could extract useful information from the unlabeled birds that helps LB then using a generative model to synthesize more is a valid approach. Just my two cents of course.",
      "votes": null
    },
    {
      "id": "2825380",
      "postDate": "05/20/2024 10:53:36",
      "content": "<p>Thanks for your idea! This is very creative, though</p>",
      "rawMarkdown": "Thanks for your idea! This is very creative, though",
      "votes": null
    },
    {
      "id": "2825906",
      "postDate": "05/20/2024 16:07:43",
      "content": "<p>Could you try sharing the code so that everyone can experiment with it or not?</p>",
      "rawMarkdown": "Could you try sharing the code so that everyone can experiment with it or not?",
      "votes": null
    },
    {
      "id": "2827785",
      "postDate": "05/21/2024 16:35:45",
      "content": "<p>Thanks. It is so interesting</p>",
      "rawMarkdown": "Thanks. It is so interesting",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 2823912,
      "author_name": "yuanzhezhou",
      "author_url": "",
      "post_date": "05/19/2024 13:26:05",
      "content": "<p>Maybe using the unlabeled data.</p>",
      "votes": null,
      "replies": [
        {
          "id": 2823918,
          "author_name": "nikitababich",
          "author_url": "",
          "post_date": "05/19/2024 13:30:50",
          "content": "<p>That is all your point ?) Or what do you mean?</p>",
          "votes": null,
          "replies": [
            {
              "id": 2823975,
              "author_name": "yuanzhezhou",
              "author_url": "",
              "post_date": "05/19/2024 14:08:56",
              "content": "<p>The unlabeled dataset already provide you with the domain information. So, if you want to adapt to domain shift, you should probably study unlabeled dataset “directly”. </p>",
              "votes": null,
              "replies": [
                {
                  "id": 2824083,
                  "author_name": "nikitababich",
                  "author_url": "",
                  "post_date": "05/19/2024 15:17:04",
                  "content": "<p>If you can say on your own which infromation from unlabeled data can be used that is cool, I still did not find the way how directly use unlabled data because some noise may be the bird song. But for sure there are multiple ways how to make use of unlabeled data. Here is one of them. </p>",
                  "votes": null,
                  "replies": []
                },
                {
                  "id": 2824263,
                  "author_name": "robbynevels",
                  "author_url": "",
                  "post_date": "05/19/2024 17:00:38",
                  "content": "<p><a href=\"https://www.kaggle.com/yuanzhezhou\" target=\"_blank\">@yuanzhezhou</a> Do you have any suggestions on what to look at when studying the soundscape data directly? I’ve been unable to get any useful augmentations from it so far, so Nikita’s “learned” approach here seems promising </p>",
                  "votes": null,
                  "replies": [
                    {
                      "id": 2824474,
                      "author_name": "willrice",
                      "author_url": "",
                      "post_date": "05/19/2024 19:28:17",
                      "content": "<p>I think if you could extract useful information from the unlabeled birds that helps LB then using a generative model to synthesize more is a valid approach. Just my two cents of course.</p>",
                      "votes": null,
                      "replies": []
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "id": 2823934,
      "author_name": "hypnotu",
      "author_url": "",
      "post_date": "05/19/2024 13:44:51",
      "content": "<p>very nice experiment</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2825380,
      "author_name": "demko1",
      "author_url": "",
      "post_date": "05/20/2024 10:53:36",
      "content": "<p>Thanks for your idea! This is very creative, though</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2825906,
      "author_name": "max1mum",
      "author_url": "",
      "post_date": "05/20/2024 16:07:43",
      "content": "<p>Could you try sharing the code so that everyone can experiment with it or not?</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2827785,
      "author_name": "kataka1213",
      "author_url": "",
      "post_date": "05/21/2024 16:35:45",
      "content": "<p>Thanks. It is so interesting</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "2823808": "As you noticed, we have a significant domain shift, primarily caused by a variety of new noises appearing as distinct figures on the spectrograms (not just Gaussian noise). This noise is particularly perplexing because it's unclear whether it indicates insects (like crickets) or is merely an obscured bird song.\nHaving a lot of unlabeled data from test domain (about 400k 5 sec segments), I decided to try to train GANs (Generative adversarial network) to replicate this noise while preserving the original spectrogram features from the source domain (training data). While this approach did not improve the LB score, the visual results (in my opinion) closely transformed training samples to the similar test domain samples. I believe that with the appropriate selected GAN architecture and its hyperparameters, this may work out. Therefore, I wanted to share the obtained results to encourage further development in this direction.\n\nTarget domain sample.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2F7c86da8ea06c7aed4ce9f87e3781496c%2FScreenshot%20from%202024-05-19%2015-34-44.png?generation=1716122112863700&alt=media)\nTransformed by GAN the same sample from above.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2Faa390a9885835f0963aba171324d11f1%2FScreenshot%20from%202024-05-19%2015-34-49.png?generation=1716122176193416&alt=media)\n\nTarget domain sample.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2F22348704d7b30594c120e515161b57ad%2FScreenshot%20from%202024-05-19%2015-48-56.png?generation=1716123018923134&alt=media)\nTransformed by GAN the same sample from above.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F6343664%2F8cca3248c4da26a3562047d7c11f88b4%2FScreenshot%20from%202024-05-19%2015-49-01.png?generation=1716123027704212&alt=media)\n\n\nFor sure that is not ideal transformations and some features related to other birds can be injected by GAN to generated images. \nBut the curernt post is meant just to demonstrate the potential of this deirection.",
    "2823912": "Maybe using the unlabeled data.",
    "2823918": "That is all your point ?) Or what do you mean?",
    "2823934": "very nice experiment",
    "2823975": "The unlabeled dataset already provide you with the domain information. So, if you want to adapt to domain shift, you should probably study unlabeled dataset “directly”.",
    "2824083": "If you can say on your own which infromation from unlabeled data can be used that is cool, I still did not find the way how directly use unlabled data because some noise may be the bird song. But for sure there are multiple ways how to make use of unlabeled data. Here is one of them.",
    "2824263": "yuanzhezhou Do you have any suggestions on what to look at when studying the soundscape data directly? I’ve been unable to get any useful augmentations from it so far, so Nikita’s “learned” approach here seems promising",
    "2824474": "I think if you could extract useful information from the unlabeled birds that helps LB then using a generative model to synthesize more is a valid approach. Just my two cents of course.",
    "2825380": "Thanks for your idea! This is very creative, though",
    "2825906": "Could you try sharing the code so that everyone can experiment with it or not?",
    "2827785": "Thanks. It is so interesting"
  },
  "source": "meta"
}