{
  "id": 582959,
  "title": "4th Place Solution",
  "url": "/competitions/image-matching-challenge-2025/writeups/xtcpete-4th-place-solution",
  "author_name": "",
  "post_date": "2025-06-04T04:49:40.853Z",
  "votes": 35,
  "comment_count": 4,
  "views": 0,
  "content": "<p>I’m very excited to have participated in this great competition.  <br>\nHuge thanks to the organizers and the Kaggle team for hosting such an amazing challenge. I also want to thank the Kaggle community and fellow participants for sharing valuable insights, discussions, and notebooks—it was a great opportunity to learn, experiment, and improve my skills.</p>\n<p>As someone relatively new to this type of competition, my implementation started from <a href=\"https://www.kaggle.com/code/octaviograu/baseline-dinov2-aliked-lightglue\" target=\"_blank\">Baseline: DINOV2+ALIKED+LightGLUE</a> by <a href=\"https://www.kaggle.com/octaviograu\" target=\"_blank\">@octaviograu</a>, and was inspired by previous solutions from <a href=\"https://www.kaggle.com/motono0223\" target=\"_blank\">@motono0223</a>, <a href=\"https://www.kaggle.com/tmyok1984\" target=\"_blank\">@tmyok1984</a>, <a href=\"https://www.kaggle.com/igorlashkov\" target=\"_blank\">@igorlashkov</a>, and their collaborators. Their work was incredibly helpful and is much appreciated.</p>\n<h3>Overview of the solution</h3>\n<p>The core of my solution is <a href=\"https://xtcpete.github.io/rdd/\" target=\"_blank\">RDD: Robust Feature Detector and Descriptor using Deformable Transformer</a> which will be presented at CVPR 2025.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F11021856%2F9c7f411f856807f0bfcd1dbe476fdfd2%2FScreenshot%202025-06-03%20at%2012.39.09PM.png?generation=1748986598837167&amp;alt=media\" alt=\"\"></p>\n<h4>1. Orientation Fix</h4>\n<p>Similar to past solutions, I used <a href=\"https://github.com/ternaus/check_orientation\" target=\"_blank\">check_orientation</a> to correct image orientations. However, the model produced a relatively high number of false positives. To mitigate this, I applied a confidence threshold of 0.9; only predictions with confidence above this value were accepted.</p>\n<h4>2. Image Retrieval</h4>\n<p>The key challenge in this competition is to cluster a messy collection of images. This naturally leads to framing the problem as binary classification: determining whether a given image pair belongs to the same cluster.</p>\n<p>To tackle this, I built a classifier using a linear transformer to predict whether two images are from the same scene.</p>\n<p>Since the provided training data alone was insufficient to train a robust model, I augmented it with a much larger dataset, MegaDepth. I performed image retrieval over all combined images to generate candidate pairs, which included both true and false matches. Labels were derived based on the known scene structure.</p>\n<p>The trained model achieved 99% accuracy on a validation set composed of both IMC and MegaDepth samples.</p>\n<p>The model proved effective at pruning false matches. The image below shows an example of a cleaned image graph in scene ETs, after applying the model:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F11021856%2F4316f7c8574454b2881f8f67a051f124%2Foutput.png?generation=1748983699984112&amp;alt=media\" alt=\"\"></p>\n<p>Initially, adding this pruning step decreased my public leaderboard score—it also removed some true pairs. To address this, I added NetVLAD-retrieved pairs to compensate. For each scene, I included:</p>\n<ul>\n<li>At least 20 pairs.</li>\n<li>At most 0.12 × n pairs, where n is the number of images in the scene.</li>\n</ul>\n<p>This didn't improve the public score but reduce the runtime significantly and allow other tricks that can actually improve the scores to run.</p>\n<h4>3. Image matching</h4>\n<ul>\n<li>I used RDD to extract 8192 features using image size 1024 and 1280.</li>\n<li>I used LightGlue to match RDD features with filter_threshold=0.2 and width_confidence=0.99.</li>\n<li>Matches from 2 image sizes are merged to generate final matches.</li>\n</ul>\n<h3>Things I tried that didn't work</h3>\n<ul>\n<li>Used doppelgängers and its followup work doppelgängers++ to distinguish pairs.</li>\n<li>Combine different keypoint locations(Superpoint, ALIKED, DaD) with RDD descriptors for matching.</li>\n</ul>\n<h3>Things I didn't have time to try but might work</h3>\n<ul>\n<li>ROI matching that crop the original images and then rematch.</li>\n<li>Rotation augmentation that rotate one image in 90° increments (4 times), match each version, and keep the best result.</li>\n</ul>\n<h3>Metrics</h3>\n<table>\n<thead>\n<tr>\n<th></th>\n<th>Public Scores</th>\n<th>Private Scores</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Baseline</td>\n<td>46.27</td>\n<td>45.16</td>\n</tr>\n<tr>\n<td>+ Pair Removal</td>\n<td>44.89</td>\n<td>45.15</td>\n</tr>\n<tr>\n<td>+ Pair Removal  + netvlad (min:20; max: 0.12n)</td>\n<td>46.10</td>\n<td>45.48</td>\n</tr>\n<tr>\n<td>+ Pair Removal  + netvlad (min:20; max: 0.12n) + TTA</td>\n<td>48.02</td>\n<td>47.88</td>\n</tr>\n</tbody>\n</table>\n<ul>\n<li>Baseline: orientation fix + netvlad (up to 200 pairs) + RDD (8192 feature + imsize 1024) + LightGlue</li>\n<li>TTA: Run RDD+LG with two different image sizes 1024 and 1280 and then merge.</li>\n</ul>\n<h3>Code</h3>\n<p><a href=\"https://www.kaggle.com/code/xtcpete/merge-rdd-lightglue/notebook?scriptVersionId=243557064\" target=\"_blank\">Notebook</a><br>\n<a href=\"https://github.com/xtcpete/rdd\" target=\"_blank\">RDD</a><br>\n<a href=\"https://www.kaggle.com/datasets/xtcpete/kaggle-classifier\" target=\"_blank\">Pair Classifier</a><br>\n<a href=\"https://www.kaggle.com/models/xtcpete/hloc-with-rdd/\" target=\"_blank\">hloc with rdd and dino</a></p>",
  "messages": [
    {
      "id": "3216651",
      "postDate": "06/03/2025 22:23:59",
      "content": "<p>I’m very excited to have participated in this great competition.  <br>\nHuge thanks to the organizers and the Kaggle team for hosting such an amazing challenge. I also want to thank the Kaggle community and fellow participants for sharing valuable insights, discussions, and notebooks—it was a great opportunity to learn, experiment, and improve my skills.</p>\n<p>As someone relatively new to this type of competition, my implementation started from <a href=\"https://www.kaggle.com/code/octaviograu/baseline-dinov2-aliked-lightglue\" target=\"_blank\">Baseline: DINOV2+ALIKED+LightGLUE</a> by <a href=\"https://www.kaggle.com/octaviograu\" target=\"_blank\">@octaviograu</a>, and was inspired by previous solutions from <a href=\"https://www.kaggle.com/motono0223\" target=\"_blank\">@motono0223</a>, <a href=\"https://www.kaggle.com/tmyok1984\" target=\"_blank\">@tmyok1984</a>, <a href=\"https://www.kaggle.com/igorlashkov\" target=\"_blank\">@igorlashkov</a>, and their collaborators. Their work was incredibly helpful and is much appreciated.</p>\n<h3>Overview of the solution</h3>\n<p>The core of my solution is <a href=\"https://xtcpete.github.io/rdd/\" target=\"_blank\">RDD: Robust Feature Detector and Descriptor using Deformable Transformer</a> which will be presented at CVPR 2025.</p>\n<p><img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F11021856%2F9c7f411f856807f0bfcd1dbe476fdfd2%2FScreenshot%202025-06-03%20at%2012.39.09PM.png?generation=1748986598837167&amp;alt=media\" alt=\"\"></p>\n<h4>1. Orientation Fix</h4>\n<p>Similar to past solutions, I used <a href=\"https://github.com/ternaus/check_orientation\" target=\"_blank\">check_orientation</a> to correct image orientations. However, the model produced a relatively high number of false positives. To mitigate this, I applied a confidence threshold of 0.9; only predictions with confidence above this value were accepted.</p>\n<h4>2. Image Retrieval</h4>\n<p>The key challenge in this competition is to cluster a messy collection of images. This naturally leads to framing the problem as binary classification: determining whether a given image pair belongs to the same cluster.</p>\n<p>To tackle this, I built a classifier using a linear transformer to predict whether two images are from the same scene.</p>\n<p>Since the provided training data alone was insufficient to train a robust model, I augmented it with a much larger dataset, MegaDepth. I performed image retrieval over all combined images to generate candidate pairs, which included both true and false matches. Labels were derived based on the known scene structure.</p>\n<p>The trained model achieved 99% accuracy on a validation set composed of both IMC and MegaDepth samples.</p>\n<p>The model proved effective at pruning false matches. The image below shows an example of a cleaned image graph in scene ETs, after applying the model:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F11021856%2F4316f7c8574454b2881f8f67a051f124%2Foutput.png?generation=1748983699984112&amp;alt=media\" alt=\"\"></p>\n<p>Initially, adding this pruning step decreased my public leaderboard score—it also removed some true pairs. To address this, I added NetVLAD-retrieved pairs to compensate. For each scene, I included:</p>\n<ul>\n<li>At least 20 pairs.</li>\n<li>At most 0.12 × n pairs, where n is the number of images in the scene.</li>\n</ul>\n<p>This didn't improve the public score but reduce the runtime significantly and allow other tricks that can actually improve the scores to run.</p>\n<h4>3. Image matching</h4>\n<ul>\n<li>I used RDD to extract 8192 features using image size 1024 and 1280.</li>\n<li>I used LightGlue to match RDD features with filter_threshold=0.2 and width_confidence=0.99.</li>\n<li>Matches from 2 image sizes are merged to generate final matches.</li>\n</ul>\n<h3>Things I tried that didn't work</h3>\n<ul>\n<li>Used doppelgängers and its followup work doppelgängers++ to distinguish pairs.</li>\n<li>Combine different keypoint locations(Superpoint, ALIKED, DaD) with RDD descriptors for matching.</li>\n</ul>\n<h3>Things I didn't have time to try but might work</h3>\n<ul>\n<li>ROI matching that crop the original images and then rematch.</li>\n<li>Rotation augmentation that rotate one image in 90° increments (4 times), match each version, and keep the best result.</li>\n</ul>\n<h3>Metrics</h3>\n<table>\n<thead>\n<tr>\n<th></th>\n<th>Public Scores</th>\n<th>Private Scores</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Baseline</td>\n<td>46.27</td>\n<td>45.16</td>\n</tr>\n<tr>\n<td>+ Pair Removal</td>\n<td>44.89</td>\n<td>45.15</td>\n</tr>\n<tr>\n<td>+ Pair Removal  + netvlad (min:20; max: 0.12n)</td>\n<td>46.10</td>\n<td>45.48</td>\n</tr>\n<tr>\n<td>+ Pair Removal  + netvlad (min:20; max: 0.12n) + TTA</td>\n<td>48.02</td>\n<td>47.88</td>\n</tr>\n</tbody>\n</table>\n<ul>\n<li>Baseline: orientation fix + netvlad (up to 200 pairs) + RDD (8192 feature + imsize 1024) + LightGlue</li>\n<li>TTA: Run RDD+LG with two different image sizes 1024 and 1280 and then merge.</li>\n</ul>\n<h3>Code</h3>\n<p><a href=\"https://www.kaggle.com/code/xtcpete/merge-rdd-lightglue/notebook?scriptVersionId=243557064\" target=\"_blank\">Notebook</a><br>\n<a href=\"https://github.com/xtcpete/rdd\" target=\"_blank\">RDD</a><br>\n<a href=\"https://www.kaggle.com/datasets/xtcpete/kaggle-classifier\" target=\"_blank\">Pair Classifier</a><br>\n<a href=\"https://www.kaggle.com/models/xtcpete/hloc-with-rdd/\" target=\"_blank\">hloc with rdd and dino</a></p>",
      "rawMarkdown": "I’m very excited to have participated in this great competition.  \nHuge thanks to the organizers and the Kaggle team for hosting such an amazing challenge. I also want to thank the Kaggle community and fellow participants for sharing valuable insights, discussions, and notebooks—it was a great opportunity to learn, experiment, and improve my skills.\n\nAs someone relatively new to this type of competition, my implementation started from [Baseline: DINOV2+ALIKED+LightGLUE](https://www.kaggle.com/code/octaviograu/baseline-dinov2-aliked-lightglue) by @octaviograu, and was inspired by previous solutions from @motono0223, @tmyok1984, @igorlashkov, and their collaborators. Their work was incredibly helpful and is much appreciated.\n\n### Overview of the solution\n\nThe core of my solution is [RDD: Robust Feature Detector and Descriptor using Deformable Transformer](https://xtcpete.github.io/rdd/) which will be presented at CVPR 2025.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F11021856%2F9c7f411f856807f0bfcd1dbe476fdfd2%2FScreenshot%202025-06-03%20at%2012.39.09PM.png?generation=1748986598837167&alt=media)\n\n#### 1. Orientation Fix\n\nSimilar to past solutions, I used [check_orientation](https://github.com/ternaus/check_orientation) to correct image orientations. However, the model produced a relatively high number of false positives. To mitigate this, I applied a confidence threshold of 0.9; only predictions with confidence above this value were accepted.\n\n#### 2. Image Retrieval\n\nThe key challenge in this competition is to cluster a messy collection of images. This naturally leads to framing the problem as binary classification: determining whether a given image pair belongs to the same cluster.\n\nTo tackle this, I built a classifier using a linear transformer to predict whether two images are from the same scene.\n\nSince the provided training data alone was insufficient to train a robust model, I augmented it with a much larger dataset, MegaDepth. I performed image retrieval over all combined images to generate candidate pairs, which included both true and false matches. Labels were derived based on the known scene structure.\n\nThe trained model achieved 99% accuracy on a validation set composed of both IMC and MegaDepth samples.\n\nThe model proved effective at pruning false matches. The image below shows an example of a cleaned image graph in scene ETs, after applying the model:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F11021856%2F4316f7c8574454b2881f8f67a051f124%2Foutput.png?generation=1748983699984112&alt=media)\n\nInitially, adding this pruning step decreased my public leaderboard score—it also removed some true pairs. To address this, I added NetVLAD-retrieved pairs to compensate. For each scene, I included:\n- At least 20 pairs.\n- At most 0.12 × n pairs, where n is the number of images in the scene.\n\nThis didn't improve the public score but reduce the runtime significantly and allow other tricks that can actually improve the scores to run.\n\n#### 3. Image matching\n\n- I used RDD to extract 8192 features using image size 1024 and 1280.\n- I used LightGlue to match RDD features with filter_threshold=0.2 and width_confidence=0.99.\n- Matches from 2 image sizes are merged to generate final matches.\n\n### Things I tried that didn't work\n\n- Used doppelgängers and its followup work doppelgängers++ to distinguish pairs.\n- Combine different keypoint locations(Superpoint, ALIKED, DaD) with RDD descriptors for matching.\n\n### Things I didn't have time to try but might work\n\n- ROI matching that crop the original images and then rematch.\n- Rotation augmentation that rotate one image in 90° increments (4 times), match each version, and keep the best result.\n\n### Metrics\n\n|      | Public Scores | Private Scores |\n|----------|----------|----------|\n| Baseline    | 46.27  | 45.16  |\n| + Pair Removal | 44.89  | 45.15  |\n| + Pair Removal  + netvlad (min:20; max: 0.12n)  | 46.10 | 45.48  |\n| + Pair Removal  + netvlad (min:20; max: 0.12n) + TTA  | 48.02 | 47.88  |\n\n- Baseline: orientation fix + netvlad (up to 200 pairs) + RDD (8192 feature + imsize 1024) + LightGlue\n- TTA: Run RDD+LG with two different image sizes 1024 and 1280 and then merge.\n\n### Code\n\n[Notebook](https://www.kaggle.com/code/xtcpete/merge-rdd-lightglue/notebook?scriptVersionId=243557064)\n[RDD](https://github.com/xtcpete/rdd)\n[Pair Classifier](https://www.kaggle.com/datasets/xtcpete/kaggle-classifier)\n[hloc with rdd and dino](https://www.kaggle.com/models/xtcpete/hloc-with-rdd/)",
      "votes": null
    },
    {
      "id": "3218794",
      "postDate": "06/06/2025 17:54:10",
      "content": "<p>Thank you for sharing your solution—placing 4th solo is truly impressive.<br>\nAlso, thank you for releasing RDD, such a brilliant approach.<br>\nOne of the reasons our team may have fallen short is that we failed to notice any connection between your Kaggle handle and the name of the RDD repository author during the competition 😄</p>",
      "rawMarkdown": "Thank you for sharing your solution—placing 4th solo is truly impressive.\nAlso, thank you for releasing RDD, such a brilliant approach.\nOne of the reasons our team may have fallen short is that we failed to notice any connection between your Kaggle handle and the name of the RDD repository author during the competition 😄",
      "votes": null
    },
    {
      "id": "3218871",
      "postDate": "06/06/2025 20:32:13",
      "content": "<p>Thank you so much! I learned a lot from your previous solutions and couldn’t have done it without them.</p>",
      "rawMarkdown": "Thank you so much! I learned a lot from your previous solutions and couldn’t have done it without them.",
      "votes": null
    },
    {
      "id": "3220327",
      "postDate": "06/09/2025 07:14:35",
      "content": "<p>Congratulations! I stopped flailing around in this contest after a while, but did keep tabs on the LB to check how you were faring - this was quite the debut performance. </p>",
      "rawMarkdown": "Congratulations! I stopped flailing around in this contest after a while, but did keep tabs on the LB to check how you were faring - this was quite the debut performance.",
      "votes": null
    },
    {
      "id": "3220686",
      "postDate": "06/09/2025 17:54:53",
      "content": "<p>Thank you!</p>",
      "rawMarkdown": "Thank you!",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 3218794,
      "author_name": "tmyok1984",
      "author_url": "",
      "post_date": "06/06/2025 17:54:10",
      "content": "<p>Thank you for sharing your solution—placing 4th solo is truly impressive.<br>\nAlso, thank you for releasing RDD, such a brilliant approach.<br>\nOne of the reasons our team may have fallen short is that we failed to notice any connection between your Kaggle handle and the name of the RDD repository author during the competition 😄</p>",
      "votes": null,
      "replies": [
        {
          "id": 3218871,
          "author_name": "xtcpete",
          "author_url": "",
          "post_date": "06/06/2025 20:32:13",
          "content": "<p>Thank you so much! I learned a lot from your previous solutions and couldn’t have done it without them.</p>",
          "votes": null,
          "replies": []
        }
      ]
    },
    {
      "id": 3220327,
      "author_name": "petermoorhouse",
      "author_url": "",
      "post_date": "06/09/2025 07:14:35",
      "content": "<p>Congratulations! I stopped flailing around in this contest after a while, but did keep tabs on the LB to check how you were faring - this was quite the debut performance. </p>",
      "votes": null,
      "replies": [
        {
          "id": 3220686,
          "author_name": "xtcpete",
          "author_url": "",
          "post_date": "06/09/2025 17:54:53",
          "content": "<p>Thank you!</p>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "3216651": "I’m very excited to have participated in this great competition.  \nHuge thanks to the organizers and the Kaggle team for hosting such an amazing challenge. I also want to thank the Kaggle community and fellow participants for sharing valuable insights, discussions, and notebooks—it was a great opportunity to learn, experiment, and improve my skills.\n\nAs someone relatively new to this type of competition, my implementation started from [Baseline: DINOV2+ALIKED+LightGLUE](https://www.kaggle.com/code/octaviograu/baseline-dinov2-aliked-lightglue) by @octaviograu, and was inspired by previous solutions from @motono0223, @tmyok1984, @igorlashkov, and their collaborators. Their work was incredibly helpful and is much appreciated.\n\n### Overview of the solution\n\nThe core of my solution is [RDD: Robust Feature Detector and Descriptor using Deformable Transformer](https://xtcpete.github.io/rdd/) which will be presented at CVPR 2025.\n\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F11021856%2F9c7f411f856807f0bfcd1dbe476fdfd2%2FScreenshot%202025-06-03%20at%2012.39.09PM.png?generation=1748986598837167&alt=media)\n\n#### 1. Orientation Fix\n\nSimilar to past solutions, I used [check_orientation](https://github.com/ternaus/check_orientation) to correct image orientations. However, the model produced a relatively high number of false positives. To mitigate this, I applied a confidence threshold of 0.9; only predictions with confidence above this value were accepted.\n\n#### 2. Image Retrieval\n\nThe key challenge in this competition is to cluster a messy collection of images. This naturally leads to framing the problem as binary classification: determining whether a given image pair belongs to the same cluster.\n\nTo tackle this, I built a classifier using a linear transformer to predict whether two images are from the same scene.\n\nSince the provided training data alone was insufficient to train a robust model, I augmented it with a much larger dataset, MegaDepth. I performed image retrieval over all combined images to generate candidate pairs, which included both true and false matches. Labels were derived based on the known scene structure.\n\nThe trained model achieved 99% accuracy on a validation set composed of both IMC and MegaDepth samples.\n\nThe model proved effective at pruning false matches. The image below shows an example of a cleaned image graph in scene ETs, after applying the model:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F11021856%2F4316f7c8574454b2881f8f67a051f124%2Foutput.png?generation=1748983699984112&alt=media)\n\nInitially, adding this pruning step decreased my public leaderboard score—it also removed some true pairs. To address this, I added NetVLAD-retrieved pairs to compensate. For each scene, I included:\n- At least 20 pairs.\n- At most 0.12 × n pairs, where n is the number of images in the scene.\n\nThis didn't improve the public score but reduce the runtime significantly and allow other tricks that can actually improve the scores to run.\n\n#### 3. Image matching\n\n- I used RDD to extract 8192 features using image size 1024 and 1280.\n- I used LightGlue to match RDD features with filter_threshold=0.2 and width_confidence=0.99.\n- Matches from 2 image sizes are merged to generate final matches.\n\n### Things I tried that didn't work\n\n- Used doppelgängers and its followup work doppelgängers++ to distinguish pairs.\n- Combine different keypoint locations(Superpoint, ALIKED, DaD) with RDD descriptors for matching.\n\n### Things I didn't have time to try but might work\n\n- ROI matching that crop the original images and then rematch.\n- Rotation augmentation that rotate one image in 90° increments (4 times), match each version, and keep the best result.\n\n### Metrics\n\n|      | Public Scores | Private Scores |\n|----------|----------|----------|\n| Baseline    | 46.27  | 45.16  |\n| + Pair Removal | 44.89  | 45.15  |\n| + Pair Removal  + netvlad (min:20; max: 0.12n)  | 46.10 | 45.48  |\n| + Pair Removal  + netvlad (min:20; max: 0.12n) + TTA  | 48.02 | 47.88  |\n\n- Baseline: orientation fix + netvlad (up to 200 pairs) + RDD (8192 feature + imsize 1024) + LightGlue\n- TTA: Run RDD+LG with two different image sizes 1024 and 1280 and then merge.\n\n### Code\n\n[Notebook](https://www.kaggle.com/code/xtcpete/merge-rdd-lightglue/notebook?scriptVersionId=243557064)\n[RDD](https://github.com/xtcpete/rdd)\n[Pair Classifier](https://www.kaggle.com/datasets/xtcpete/kaggle-classifier)\n[hloc with rdd and dino](https://www.kaggle.com/models/xtcpete/hloc-with-rdd/)",
    "3218794": "Thank you for sharing your solution—placing 4th solo is truly impressive.\nAlso, thank you for releasing RDD, such a brilliant approach.\nOne of the reasons our team may have fallen short is that we failed to notice any connection between your Kaggle handle and the name of the RDD repository author during the competition 😄",
    "3218871": "Thank you so much! I learned a lot from your previous solutions and couldn’t have done it without them.",
    "3220327": "Congratulations! I stopped flailing around in this contest after a while, but did keep tabs on the LB to check how you were faring - this was quite the debut performance.",
    "3220686": "Thank you!"
  },
  "source": "meta"
}