{
  "id": 613200,
  "title": "Note: the mask highlights both the copy+pasted part AND the original part that was copied from",
  "url": "/competitions/recodai-luc-scientific-image-forgery-detection/discussion/613200",
  "author_name": "",
  "post_date": "2025-10-25T01:18:31.800417600Z",
  "votes": 10,
  "comment_count": 10,
  "views": 0,
  "content": "<p>This can lead to some augmentation ideas - maybe taking existing medical literature figures, applying magic wand tool onto parts of it and pasting it into random areas of the image. An easier way would be to just use the clone stamp tool.</p>\n<p>Examples:</p>\n<p>1) Corn is copied to the left-side, but the mask highlights both the original and the copy<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2Fd5b5a919f5a7e7324040f041508dec01%2Fcorn1.png?generation=1761354794074512&amp;alt=media\" alt=\"\"></p>\n<p>2) Corn is very obviously copy-pasted (both authentic and copy+paste are highlighted)<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F91baac77360161ed9d42715f45cb96af%2Fcorn2.png?generation=1761355002473303&amp;alt=media\" alt=\"\"></p>\n<p>3) Blot from rightside is copy-pasted onto the left-side<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2Fe43a8e9e5b23f1f8ae173572e5b92f61%2Fblot1.png?generation=1761355017385689&amp;alt=media\" alt=\"\"></p>\n<p>4) Cell from top image is copied and slightly rotated<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F625b91c515612e359238a9f276a1ce85%2Fcells1.png?generation=1761355032010992&amp;alt=media\" alt=\"\"></p>",
  "messages": [
    {
      "id": "3306641",
      "postDate": "10/25/2025 01:18:31",
      "content": "<p>This can lead to some augmentation ideas - maybe taking existing medical literature figures, applying magic wand tool onto parts of it and pasting it into random areas of the image. An easier way would be to just use the clone stamp tool.</p>\n<p>Examples:</p>\n<p>1) Corn is copied to the left-side, but the mask highlights both the original and the copy<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2Fd5b5a919f5a7e7324040f041508dec01%2Fcorn1.png?generation=1761354794074512&amp;alt=media\" alt=\"\"></p>\n<p>2) Corn is very obviously copy-pasted (both authentic and copy+paste are highlighted)<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F91baac77360161ed9d42715f45cb96af%2Fcorn2.png?generation=1761355002473303&amp;alt=media\" alt=\"\"></p>\n<p>3) Blot from rightside is copy-pasted onto the left-side<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2Fe43a8e9e5b23f1f8ae173572e5b92f61%2Fblot1.png?generation=1761355017385689&amp;alt=media\" alt=\"\"></p>\n<p>4) Cell from top image is copied and slightly rotated<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F625b91c515612e359238a9f276a1ce85%2Fcells1.png?generation=1761355032010992&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "This can lead to some augmentation ideas - maybe taking existing medical literature figures, applying magic wand tool onto parts of it and pasting it into random areas of the image. An easier way would be to just use the clone stamp tool.\n\nExamples:\n\n1) Corn is copied to the left-side, but the mask highlights both the original and the copy\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2Fd5b5a919f5a7e7324040f041508dec01%2Fcorn1.png?generation=1761354794074512&alt=media)\n\n2) Corn is very obviously copy-pasted (both authentic and copy+paste are highlighted)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F91baac77360161ed9d42715f45cb96af%2Fcorn2.png?generation=1761355002473303&alt=media)\n\n3) Blot from rightside is copy-pasted onto the left-side\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2Fe43a8e9e5b23f1f8ae173572e5b92f61%2Fblot1.png?generation=1761355017385689&alt=media)\n\n4) Cell from top image is copied and slightly rotated\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F625b91c515612e359238a9f276a1ce85%2Fcells1.png?generation=1761355032010992&alt=media)",
      "votes": null
    },
    {
      "id": "3306751",
      "postDate": "10/25/2025 07:00:00",
      "content": "<p>initial results: Model is pretty good at detecting the copy (not always perfect) - however it commonly forgets to also predict the mask for the original thing that was highlighted. Perhaps different approach might be: 1) predict mask for ONLY forged part (we can obtain by looking at difference from original authentic image), then 2) if found, identify where the copy is (either through NN or through classical approach such as SIFT or DCT)</p>\n<p>Example image:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F4df02c19154181f5676b8cc77be4c803%2Fresnet34_initial_pred.png?generation=1761375595742458&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "initial results: Model is pretty good at detecting the copy (not always perfect) - however it commonly forgets to also predict the mask for the original thing that was highlighted. Perhaps different approach might be: 1) predict mask for ONLY forged part (we can obtain by looking at difference from original authentic image), then 2) if found, identify where the copy is (either through NN or through classical approach such as SIFT or DCT)\n\nExample image:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F4df02c19154181f5676b8cc77be4c803%2Fresnet34_initial_pred.png?generation=1761375595742458&alt=media)",
      "votes": null
    },
    {
      "id": "3307214",
      "postDate": "10/26/2025 13:35:14",
      "content": "<p>Yes, exactly. In that sense, you would essentially be creating a new set of masks for training. This raises the question of efficiency and purpose: instead of manually generating or modifying masks, it might be more straightforward to train the model directly to detect duplications or copied regions. The model could then focus purely on finding repeated patterns or duplicated areas, which are the essence of the manipulation, rather than trying to reconstruct or guess the exact “forged mask.” This could simplify the workflow and possibly improve generalization, as the model learns the core task: identifying copied regions.</p>",
      "rawMarkdown": "Yes, exactly. In that sense, you would essentially be creating a new set of masks for training. This raises the question of efficiency and purpose: instead of manually generating or modifying masks, it might be more straightforward to train the model directly to detect duplications or copied regions. The model could then focus purely on finding repeated patterns or duplicated areas, which are the essence of the manipulation, rather than trying to reconstruct or guess the exact “forged mask.” This could simplify the workflow and possibly improve generalization, as the model learns the core task: identifying copied regions.",
      "votes": null
    },
    {
      "id": "3307244",
      "postDate": "10/26/2025 15:00:59",
      "content": "<p>I have successfully generated my own masks by comparing the authentic and forged images directly. This approach highlights the manipulated regions accurately and automatically, based on the differences between the images. I will prepare and share a few example images along with their corresponding masks to illustrate the results.<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F19522488%2F116bbc3ec08bdcc729aad46975289579%2FCaptura%20de%20Tela%202025-10-26%20as%2011.57.38.png?generation=1761490771982721&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F19522488%2F5557e9818000533646336636e413f57c%2FCaptura%20de%20Tela%202025-10-26%20as%2012.00.32.png?generation=1761490857255499&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "I have successfully generated my own masks by comparing the authentic and forged images directly. This approach highlights the manipulated regions accurately and automatically, based on the differences between the images. I will prepare and share a few example images along with their corresponding masks to illustrate the results.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F19522488%2F116bbc3ec08bdcc729aad46975289579%2FCaptura%20de%20Tela%202025-10-26%20as%2011.57.38.png?generation=1761490771982721&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F19522488%2F5557e9818000533646336636e413f57c%2FCaptura%20de%20Tela%202025-10-26%20as%2012.00.32.png?generation=1761490857255499&alt=media)",
      "votes": null
    },
    {
      "id": "3307541",
      "postDate": "10/27/2025 08:36:20",
      "content": "<p>This is actually quite difficult for pure UNet to solve. I mean, the loss is going down, but visually it's difficult for the model to firstly identify if the image is even forged or not. If it's unsure (50/50), then it sometimes tries to predict all visible structures as forgeries. If it is confident there is a forgery, identifying where the forgery is is not easy for the model; sometimes it will highlight the incorrect structures. I suspect to get better predictions, we will need to 1) combine neural network predictions with classical copy-forge detection techniques, and 2) get more data.</p>\n<p>Attaching a screenshot of my current out-of-fold predictions.<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2Fcec2e331d33a516e493732040b67a337%2Fvit_unet_results.png?generation=1761554153641590&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "This is actually quite difficult for pure UNet to solve. I mean, the loss is going down, but visually it's difficult for the model to firstly identify if the image is even forged or not. If it's unsure (50/50), then it sometimes tries to predict all visible structures as forgeries. If it is confident there is a forgery, identifying where the forgery is is not easy for the model; sometimes it will highlight the incorrect structures. I suspect to get better predictions, we will need to 1) combine neural network predictions with classical copy-forge detection techniques, and 2) get more data.\n\nAttaching a screenshot of my current out-of-fold predictions.![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2Fcec2e331d33a516e493732040b67a337%2Fvit_unet_results.png?generation=1761554153641590&alt=media)",
      "votes": null
    },
    {
      "id": "3307542",
      "postDate": "10/27/2025 08:40:42",
      "content": "<p>Like, here is an example of the UNet seeing 3 red corncobs. It knows the image is a forgery, but it doesn't know which corncob was copied over. So it highlights all 3 corncobs. But if you used a classical technique, you could compare each highlighted corncob and only accept predictions if you notice near-perfect copies. Maybe the classical techniques should be applied as a post-processing, instead of pre-processing input to the model. It remains to empirically test.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F40caf79683f063ec666bafe58bb014a2%2Fvit_unet_corncob_tripup.png?generation=1761554412645039&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "Like, here is an example of the UNet seeing 3 red corncobs. It knows the image is a forgery, but it doesn't know which corncob was copied over. So it highlights all 3 corncobs. But if you used a classical technique, you could compare each highlighted corncob and only accept predictions if you notice near-perfect copies. Maybe the classical techniques should be applied as a post-processing, instead of pre-processing input to the model. It remains to empirically test.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F40caf79683f063ec666bafe58bb014a2%2Fvit_unet_corncob_tripup.png?generation=1761554412645039&alt=media)",
      "votes": null
    },
    {
      "id": "3307638",
      "postDate": "10/27/2025 13:24:08",
      "content": "<p>Same prediction results, but with SIFT features added as a channel. Performed roughly the same in terms of loss. This means perhaps the classical features are best as post-processing technique? <img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F4a6daf1dbf7a1805f1c48e0b8da5cf9e%2Fvit_unet_results_with_SIFT_features.png?generation=1761571363537138&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "Same prediction results, but with SIFT features added as a channel. Performed roughly the same in terms of loss. This means perhaps the classical features are best as post-processing technique? ![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F4a6daf1dbf7a1805f1c48e0b8da5cf9e%2Fvit_unet_results_with_SIFT_features.png?generation=1761571363537138&alt=media)",
      "votes": null
    },
    {
      "id": "3308222",
      "postDate": "10/28/2025 21:49:26",
      "content": "<p>I don't think it matters which pixels corresponds to original and which is the copied version, because for us humans, we have real world context for example, \"a corn wouldn't float on top of another corn\" so we can say the floating corn looks fake and the corn placed on top of table is original. But for a computer, both are just a set of grouped pixels that are identical.</p>",
      "rawMarkdown": "I don't think it matters which pixels corresponds to original and which is the copied version, because for us humans, we have real world context for example, \"a corn wouldn't float on top of another corn\" so we can say the floating corn looks fake and the corn placed on top of table is original. But for a computer, both are just a set of grouped pixels that are identical.",
      "votes": null
    },
    {
      "id": "3313019",
      "postDate": "11/08/2025 13:42:42",
      "content": "<p>Hi,I read your post about the model detecting the copied region well but often missing the mask for the original source region. This raises an important question about competition scoring:</p>\n<p>Do we need to annotate BOTH the source region (original part that was copied from) AND the target region (copy-pasted part) in our predicted masks to maximize the oF1 score? Or does the evaluation metric primarily reward detection of just the forged/target regions?</p>",
      "rawMarkdown": "Hi,I read your post about the model detecting the copied region well but often missing the mask for the original source region. This raises an important question about competition scoring:\n\nDo we need to annotate BOTH the source region (original part that was copied from) AND the target region (copy-pasted part) in our predicted masks to maximize the oF1 score? Or does the evaluation metric primarily reward detection of just the forged/target regions?",
      "votes": null
    },
    {
      "id": "3313066",
      "postDate": "11/08/2025 15:35:18",
      "content": "<p>We need to annotate BOTH the source region </p>",
      "rawMarkdown": "We need to annotate BOTH the source region",
      "votes": null
    },
    {
      "id": "3313585",
      "postDate": "11/09/2025 14:01:57",
      "content": "<p>Okey!Thank you.Good luck!</p>",
      "rawMarkdown": "Okey!Thank you.Good luck!",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 3306751,
      "author_name": "returnofsputnik",
      "author_url": "",
      "post_date": "10/25/2025 07:00:00",
      "content": "<p>initial results: Model is pretty good at detecting the copy (not always perfect) - however it commonly forgets to also predict the mask for the original thing that was highlighted. Perhaps different approach might be: 1) predict mask for ONLY forged part (we can obtain by looking at difference from original authentic image), then 2) if found, identify where the copy is (either through NN or through classical approach such as SIFT or DCT)</p>\n<p>Example image:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F4df02c19154181f5676b8cc77be4c803%2Fresnet34_initial_pred.png?generation=1761375595742458&amp;alt=media\" alt=\"\"></p>",
      "votes": null,
      "replies": [
        {
          "id": 3307214,
          "author_name": "geancorreia",
          "author_url": "",
          "post_date": "10/26/2025 13:35:14",
          "content": "<p>Yes, exactly. In that sense, you would essentially be creating a new set of masks for training. This raises the question of efficiency and purpose: instead of manually generating or modifying masks, it might be more straightforward to train the model directly to detect duplications or copied regions. The model could then focus purely on finding repeated patterns or duplicated areas, which are the essence of the manipulation, rather than trying to reconstruct or guess the exact “forged mask.” This could simplify the workflow and possibly improve generalization, as the model learns the core task: identifying copied regions.</p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 3307244,
          "author_name": "geancorreia",
          "author_url": "",
          "post_date": "10/26/2025 15:00:59",
          "content": "<p>I have successfully generated my own masks by comparing the authentic and forged images directly. This approach highlights the manipulated regions accurately and automatically, based on the differences between the images. I will prepare and share a few example images along with their corresponding masks to illustrate the results.<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F19522488%2F116bbc3ec08bdcc729aad46975289579%2FCaptura%20de%20Tela%202025-10-26%20as%2011.57.38.png?generation=1761490771982721&amp;alt=media\" alt=\"\"></p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F19522488%2F5557e9818000533646336636e413f57c%2FCaptura%20de%20Tela%202025-10-26%20as%2012.00.32.png?generation=1761490857255499&amp;alt=media\" alt=\"\"></p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 3313019,
          "author_name": "jakkma",
          "author_url": "",
          "post_date": "11/08/2025 13:42:42",
          "content": "<p>Hi,I read your post about the model detecting the copied region well but often missing the mask for the original source region. This raises an important question about competition scoring:</p>\n<p>Do we need to annotate BOTH the source region (original part that was copied from) AND the target region (copy-pasted part) in our predicted masks to maximize the oF1 score? Or does the evaluation metric primarily reward detection of just the forged/target regions?</p>",
          "votes": null,
          "replies": [
            {
              "id": 3313066,
              "author_name": "qifeihhh666",
              "author_url": "",
              "post_date": "11/08/2025 15:35:18",
              "content": "<p>We need to annotate BOTH the source region </p>",
              "votes": null,
              "replies": [
                {
                  "id": 3313585,
                  "author_name": "jakkma",
                  "author_url": "",
                  "post_date": "11/09/2025 14:01:57",
                  "content": "<p>Okey!Thank you.Good luck!</p>",
                  "votes": null,
                  "replies": []
                }
              ]
            }
          ]
        }
      ]
    },
    {
      "id": 3307541,
      "author_name": "returnofsputnik",
      "author_url": "",
      "post_date": "10/27/2025 08:36:20",
      "content": "<p>This is actually quite difficult for pure UNet to solve. I mean, the loss is going down, but visually it's difficult for the model to firstly identify if the image is even forged or not. If it's unsure (50/50), then it sometimes tries to predict all visible structures as forgeries. If it is confident there is a forgery, identifying where the forgery is is not easy for the model; sometimes it will highlight the incorrect structures. I suspect to get better predictions, we will need to 1) combine neural network predictions with classical copy-forge detection techniques, and 2) get more data.</p>\n<p>Attaching a screenshot of my current out-of-fold predictions.<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2Fcec2e331d33a516e493732040b67a337%2Fvit_unet_results.png?generation=1761554153641590&amp;alt=media\" alt=\"\"></p>",
      "votes": null,
      "replies": [
        {
          "id": 3307542,
          "author_name": "returnofsputnik",
          "author_url": "",
          "post_date": "10/27/2025 08:40:42",
          "content": "<p>Like, here is an example of the UNet seeing 3 red corncobs. It knows the image is a forgery, but it doesn't know which corncob was copied over. So it highlights all 3 corncobs. But if you used a classical technique, you could compare each highlighted corncob and only accept predictions if you notice near-perfect copies. Maybe the classical techniques should be applied as a post-processing, instead of pre-processing input to the model. It remains to empirically test.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F40caf79683f063ec666bafe58bb014a2%2Fvit_unet_corncob_tripup.png?generation=1761554412645039&amp;alt=media\" alt=\"\"></p>",
          "votes": null,
          "replies": []
        },
        {
          "id": 3307638,
          "author_name": "returnofsputnik",
          "author_url": "",
          "post_date": "10/27/2025 13:24:08",
          "content": "<p>Same prediction results, but with SIFT features added as a channel. Performed roughly the same in terms of loss. This means perhaps the classical features are best as post-processing technique? <img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F4a6daf1dbf7a1805f1c48e0b8da5cf9e%2Fvit_unet_results_with_SIFT_features.png?generation=1761571363537138&amp;alt=media\" alt=\"\"></p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 3308222,
      "author_name": "tashijawed",
      "author_url": "",
      "post_date": "10/28/2025 21:49:26",
      "content": "<p>I don't think it matters which pixels corresponds to original and which is the copied version, because for us humans, we have real world context for example, \"a corn wouldn't float on top of another corn\" so we can say the floating corn looks fake and the corn placed on top of table is original. But for a computer, both are just a set of grouped pixels that are identical.</p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "3306641": "This can lead to some augmentation ideas - maybe taking existing medical literature figures, applying magic wand tool onto parts of it and pasting it into random areas of the image. An easier way would be to just use the clone stamp tool.\n\nExamples:\n\n1) Corn is copied to the left-side, but the mask highlights both the original and the copy\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2Fd5b5a919f5a7e7324040f041508dec01%2Fcorn1.png?generation=1761354794074512&alt=media)\n\n2) Corn is very obviously copy-pasted (both authentic and copy+paste are highlighted)\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F91baac77360161ed9d42715f45cb96af%2Fcorn2.png?generation=1761355002473303&alt=media)\n\n3) Blot from rightside is copy-pasted onto the left-side\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2Fe43a8e9e5b23f1f8ae173572e5b92f61%2Fblot1.png?generation=1761355017385689&alt=media)\n\n4) Cell from top image is copied and slightly rotated\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F625b91c515612e359238a9f276a1ce85%2Fcells1.png?generation=1761355032010992&alt=media)",
    "3306751": "initial results: Model is pretty good at detecting the copy (not always perfect) - however it commonly forgets to also predict the mask for the original thing that was highlighted. Perhaps different approach might be: 1) predict mask for ONLY forged part (we can obtain by looking at difference from original authentic image), then 2) if found, identify where the copy is (either through NN or through classical approach such as SIFT or DCT)\n\nExample image:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F4df02c19154181f5676b8cc77be4c803%2Fresnet34_initial_pred.png?generation=1761375595742458&alt=media)",
    "3307214": "Yes, exactly. In that sense, you would essentially be creating a new set of masks for training. This raises the question of efficiency and purpose: instead of manually generating or modifying masks, it might be more straightforward to train the model directly to detect duplications or copied regions. The model could then focus purely on finding repeated patterns or duplicated areas, which are the essence of the manipulation, rather than trying to reconstruct or guess the exact “forged mask.” This could simplify the workflow and possibly improve generalization, as the model learns the core task: identifying copied regions.",
    "3307244": "I have successfully generated my own masks by comparing the authentic and forged images directly. This approach highlights the manipulated regions accurately and automatically, based on the differences between the images. I will prepare and share a few example images along with their corresponding masks to illustrate the results.\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F19522488%2F116bbc3ec08bdcc729aad46975289579%2FCaptura%20de%20Tela%202025-10-26%20as%2011.57.38.png?generation=1761490771982721&alt=media)\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F19522488%2F5557e9818000533646336636e413f57c%2FCaptura%20de%20Tela%202025-10-26%20as%2012.00.32.png?generation=1761490857255499&alt=media)",
    "3307541": "This is actually quite difficult for pure UNet to solve. I mean, the loss is going down, but visually it's difficult for the model to firstly identify if the image is even forged or not. If it's unsure (50/50), then it sometimes tries to predict all visible structures as forgeries. If it is confident there is a forgery, identifying where the forgery is is not easy for the model; sometimes it will highlight the incorrect structures. I suspect to get better predictions, we will need to 1) combine neural network predictions with classical copy-forge detection techniques, and 2) get more data.\n\nAttaching a screenshot of my current out-of-fold predictions.![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2Fcec2e331d33a516e493732040b67a337%2Fvit_unet_results.png?generation=1761554153641590&alt=media)",
    "3307542": "Like, here is an example of the UNet seeing 3 red corncobs. It knows the image is a forgery, but it doesn't know which corncob was copied over. So it highlights all 3 corncobs. But if you used a classical technique, you could compare each highlighted corncob and only accept predictions if you notice near-perfect copies. Maybe the classical techniques should be applied as a post-processing, instead of pre-processing input to the model. It remains to empirically test.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F40caf79683f063ec666bafe58bb014a2%2Fvit_unet_corncob_tripup.png?generation=1761554412645039&alt=media)",
    "3307638": "Same prediction results, but with SIFT features added as a channel. Performed roughly the same in terms of loss. This means perhaps the classical features are best as post-processing technique? ![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1238844%2F4a6daf1dbf7a1805f1c48e0b8da5cf9e%2Fvit_unet_results_with_SIFT_features.png?generation=1761571363537138&alt=media)",
    "3308222": "I don't think it matters which pixels corresponds to original and which is the copied version, because for us humans, we have real world context for example, \"a corn wouldn't float on top of another corn\" so we can say the floating corn looks fake and the corn placed on top of table is original. But for a computer, both are just a set of grouped pixels that are identical.",
    "3313019": "Hi,I read your post about the model detecting the copied region well but often missing the mask for the original source region. This raises an important question about competition scoring:\n\nDo we need to annotate BOTH the source region (original part that was copied from) AND the target region (copy-pasted part) in our predicted masks to maximize the oF1 score? Or does the evaluation metric primarily reward detection of just the forged/target regions?",
    "3313066": "We need to annotate BOTH the source region",
    "3313585": "Okey!Thank you.Good luck!"
  },
  "source": "meta"
}