{
  "id": 406300,
  "title": "12th place solution - MLP Based (Structured Keypoint Pooling network)",
  "url": "/competitions/asl-signs/writeups/donjyarahoi-12th-place-solution-mlp-based-structur",
  "author_name": "",
  "post_date": "2023-05-02T00:17:10.847Z",
  "votes": 25,
  "comment_count": 2,
  "views": 0,
  "content": "<p>Thanks to the hosts and the Kaggle team for hosting such an amazing competition.\\<br>\nBelow is my brife solution.</p>\n<h2>Model</h2>\n<ul>\n<li>MLP based. I used a modified model of <a href=\"https://arxiv.org/abs/2303.15270\" target=\"_blank\">the Structured Keypoint Pooling network</a>.</li>\n<li>Input joint and bone separately. Bidirectional lateral Connection. Concat after 2 mlp blocks. <ul>\n<li>Refered to <a href=\"https://arxiv.org/abs/2211.01367\" target=\"_blank\">Two-Stream Network for Sign Language Recognition and Translation</a></li></ul></li>\n</ul>\n<h2>Data</h2>\n<ul>\n<li>Only original data</li>\n<li>Lip + Pose (upper body) + Left hand + Right hand</li>\n<li>Resize to 64 frames, if long.</li>\n<li>Feature: xy (joint or bone), motion of 1&amp;2frame.</li>\n<li>So, input shape is [64(frame), (107(joint) + 142(bone)) x 2 (xy) x 3 (+1&amp;2motion)]</li>\n<li>Exclude data with an low estimation probability on the training data (1%). [CV: -0.006, publicLB +0.01]</li>\n</ul>\n<h2>Augmentation</h2>\n<ul>\n<li>Flip [CV: +0.02]</li>\n<li>Scale [CV: + 0.008]</li>\n<li>Rotate3d all data [CV: + 0.003]<ul>\n<li>Better than Rotate2d by CV 0.002</li></ul></li>\n<li>Rotate3d hands individually [CV: +0.002]</li>\n<li>Resize frame (only shorten the frame) [CV: + 0.005]</li>\n<li>Cut the first or last frame [CV: +0.001]</li>\n<li>Swap hand or lip with same sign. [Hand CV: +0.006, Lip CV: + 0.002]</li>\n</ul>\n<h2>Loss</h2>\n<ul>\n<li>CrossEntropy (label smoothing 0.4)</li>\n</ul>\n<h2>What Didn't Work</h2>\n<ul>\n<li>Word based-label smoothing</li>\n<li>Manifold mixup</li>\n<li>Shift DA</li>\n<li>Adding eye</li>\n<li>Pseudo labels</li>\n</ul>\n<h2>Especially thanks to these kernels</h2>\n<ul>\n<li><a href=\"https://www.kaggle.com/code/hengck23/lb-0-67-one-pytorch-transformer-solution\" target=\"_blank\">[LB 0.67] one pytorch transformer solution</a> <a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a></li>\n<li><a href=\"https://www.kaggle.com/code/roberthatch/gislr-lb-0-63-on-the-shoulders\" target=\"_blank\">GISLR [LB 0.63]: On the Shoulders</a> <a href=\"https://www.kaggle.com/roberthatch\" target=\"_blank\">@roberthatch</a></li>\n<li><a href=\"https://www.kaggle.com/code/danielpeshkov/animated-data-visualization\" target=\"_blank\">Animated Data Visualization</a> <a href=\"https://www.kaggle.com/danielpeshkov\" target=\"_blank\">@danielpeshkov</a></li>\n</ul>",
  "messages": [
    {
      "id": "2241887",
      "postDate": "05/02/2023 00:04:09",
      "content": "<p>Thanks to the hosts and the Kaggle team for hosting such an amazing competition.\\<br>\nBelow is my brife solution.</p>\n<h2>Model</h2>\n<ul>\n<li>MLP based. I used a modified model of <a href=\"https://arxiv.org/abs/2303.15270\" target=\"_blank\">the Structured Keypoint Pooling network</a>.</li>\n<li>Input joint and bone separately. Bidirectional lateral Connection. Concat after 2 mlp blocks. <ul>\n<li>Refered to <a href=\"https://arxiv.org/abs/2211.01367\" target=\"_blank\">Two-Stream Network for Sign Language Recognition and Translation</a></li></ul></li>\n</ul>\n<h2>Data</h2>\n<ul>\n<li>Only original data</li>\n<li>Lip + Pose (upper body) + Left hand + Right hand</li>\n<li>Resize to 64 frames, if long.</li>\n<li>Feature: xy (joint or bone), motion of 1&amp;2frame.</li>\n<li>So, input shape is [64(frame), (107(joint) + 142(bone)) x 2 (xy) x 3 (+1&amp;2motion)]</li>\n<li>Exclude data with an low estimation probability on the training data (1%). [CV: -0.006, publicLB +0.01]</li>\n</ul>\n<h2>Augmentation</h2>\n<ul>\n<li>Flip [CV: +0.02]</li>\n<li>Scale [CV: + 0.008]</li>\n<li>Rotate3d all data [CV: + 0.003]<ul>\n<li>Better than Rotate2d by CV 0.002</li></ul></li>\n<li>Rotate3d hands individually [CV: +0.002]</li>\n<li>Resize frame (only shorten the frame) [CV: + 0.005]</li>\n<li>Cut the first or last frame [CV: +0.001]</li>\n<li>Swap hand or lip with same sign. [Hand CV: +0.006, Lip CV: + 0.002]</li>\n</ul>\n<h2>Loss</h2>\n<ul>\n<li>CrossEntropy (label smoothing 0.4)</li>\n</ul>\n<h2>What Didn't Work</h2>\n<ul>\n<li>Word based-label smoothing</li>\n<li>Manifold mixup</li>\n<li>Shift DA</li>\n<li>Adding eye</li>\n<li>Pseudo labels</li>\n</ul>\n<h2>Especially thanks to these kernels</h2>\n<ul>\n<li><a href=\"https://www.kaggle.com/code/hengck23/lb-0-67-one-pytorch-transformer-solution\" target=\"_blank\">[LB 0.67] one pytorch transformer solution</a> <a href=\"https://www.kaggle.com/hengck23\" target=\"_blank\">@hengck23</a></li>\n<li><a href=\"https://www.kaggle.com/code/roberthatch/gislr-lb-0-63-on-the-shoulders\" target=\"_blank\">GISLR [LB 0.63]: On the Shoulders</a> <a href=\"https://www.kaggle.com/roberthatch\" target=\"_blank\">@roberthatch</a></li>\n<li><a href=\"https://www.kaggle.com/code/danielpeshkov/animated-data-visualization\" target=\"_blank\">Animated Data Visualization</a> <a href=\"https://www.kaggle.com/danielpeshkov\" target=\"_blank\">@danielpeshkov</a></li>\n</ul>",
      "rawMarkdown": "Thanks to the hosts and the Kaggle team for hosting such an amazing competition.\\\nBelow is my brife solution.\n\n## Model\n\n* MLP based. I used a modified model of [the Structured Keypoint Pooling network](https://arxiv.org/abs/2303.15270).\n* Input joint and bone separately. Bidirectional lateral Connection. Concat after 2 mlp blocks. \n  * Refered to [Two-Stream Network for Sign Language Recognition and Translation](https://arxiv.org/abs/2211.01367)\n\n## Data\n* Only original data\n* Lip + Pose (upper body) + Left hand + Right hand\n* Resize to 64 frames, if long.\n* Feature: xy (joint or bone), motion of 1&2frame.\n* So, input shape is [64(frame), (107(joint) + 142(bone)) x 2 (xy) x 3 (+1&2motion)]\n* Exclude data with an low estimation probability on the training data (1%). [CV: -0.006, publicLB +0.01]\n\n## Augmentation\n* Flip [CV: +0.02]\n* Scale [CV: + 0.008]\n* Rotate3d all data [CV: + 0.003]\n  * Better than Rotate2d by CV 0.002\n* Rotate3d hands individually [CV: +0.002]\n* Resize frame (only shorten the frame) [CV: + 0.005]\n* Cut the first or last frame [CV: +0.001]\n* Swap hand or lip with same sign. [Hand CV: +0.006, Lip CV: + 0.002]\n\n## Loss\n* CrossEntropy (label smoothing 0.4)\n  \n## What Didn't Work\n* Word based-label smoothing\n* Manifold mixup\n* Shift DA\n* Adding eye\n* Pseudo labels\n\n## Especially thanks to these kernels\n* [[LB 0.67] one pytorch transformer solution](https://www.kaggle.com/code/hengck23/lb-0-67-one-pytorch-transformer-solution) [@hengck23](https://www.kaggle.com/hengck23)\n* [GISLR [LB 0.63]: On the Shoulders](https://www.kaggle.com/code/roberthatch/gislr-lb-0-63-on-the-shoulders) [@roberthatch](https://www.kaggle.com/roberthatch)\n* [Animated Data Visualization](https://www.kaggle.com/code/danielpeshkov/animated-data-visualization) [@danielpeshkov](https://www.kaggle.com/danielpeshkov)",
      "votes": null
    },
    {
      "id": "2241984",
      "postDate": "05/02/2023 01:29:18",
      "content": "<p>Hearty congratulations for the result and kudos to you for the approach note as well <a href=\"https://www.kaggle.com/donjyarahoi\" target=\"_blank\">@donjyarahoi</a> </p>",
      "rawMarkdown": "Hearty congratulations for the result and kudos to you for the approach note as well @donjyarahoi",
      "votes": null
    },
    {
      "id": "2242850",
      "postDate": "05/02/2023 14:38:41",
      "content": "<p><a href=\"https://www.kaggle.com/donjyarahoi\" target=\"_blank\">@donjyarahoi</a> congratulations with great result!💥 Thanks for sharing - it helps to improve skills!🤝🙂  </p>",
      "rawMarkdown": "donjyarahoi congratulations with great result!💥 Thanks for sharing - it helps to improve skills!🤝🙂",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 2241984,
      "author_name": "ravi20076",
      "author_url": "",
      "post_date": "05/02/2023 01:29:18",
      "content": "<p>Hearty congratulations for the result and kudos to you for the approach note as well <a href=\"https://www.kaggle.com/donjyarahoi\" target=\"_blank\">@donjyarahoi</a> </p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 2242850,
      "author_name": "ivanisaev",
      "author_url": "",
      "post_date": "05/02/2023 14:38:41",
      "content": "<p><a href=\"https://www.kaggle.com/donjyarahoi\" target=\"_blank\">@donjyarahoi</a> congratulations with great result!💥 Thanks for sharing - it helps to improve skills!🤝🙂  </p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "2241887": "Thanks to the hosts and the Kaggle team for hosting such an amazing competition.\\\nBelow is my brife solution.\n\n## Model\n\n* MLP based. I used a modified model of [the Structured Keypoint Pooling network](https://arxiv.org/abs/2303.15270).\n* Input joint and bone separately. Bidirectional lateral Connection. Concat after 2 mlp blocks. \n  * Refered to [Two-Stream Network for Sign Language Recognition and Translation](https://arxiv.org/abs/2211.01367)\n\n## Data\n* Only original data\n* Lip + Pose (upper body) + Left hand + Right hand\n* Resize to 64 frames, if long.\n* Feature: xy (joint or bone), motion of 1&2frame.\n* So, input shape is [64(frame), (107(joint) + 142(bone)) x 2 (xy) x 3 (+1&2motion)]\n* Exclude data with an low estimation probability on the training data (1%). [CV: -0.006, publicLB +0.01]\n\n## Augmentation\n* Flip [CV: +0.02]\n* Scale [CV: + 0.008]\n* Rotate3d all data [CV: + 0.003]\n  * Better than Rotate2d by CV 0.002\n* Rotate3d hands individually [CV: +0.002]\n* Resize frame (only shorten the frame) [CV: + 0.005]\n* Cut the first or last frame [CV: +0.001]\n* Swap hand or lip with same sign. [Hand CV: +0.006, Lip CV: + 0.002]\n\n## Loss\n* CrossEntropy (label smoothing 0.4)\n  \n## What Didn't Work\n* Word based-label smoothing\n* Manifold mixup\n* Shift DA\n* Adding eye\n* Pseudo labels\n\n## Especially thanks to these kernels\n* [[LB 0.67] one pytorch transformer solution](https://www.kaggle.com/code/hengck23/lb-0-67-one-pytorch-transformer-solution) [@hengck23](https://www.kaggle.com/hengck23)\n* [GISLR [LB 0.63]: On the Shoulders](https://www.kaggle.com/code/roberthatch/gislr-lb-0-63-on-the-shoulders) [@roberthatch](https://www.kaggle.com/roberthatch)\n* [Animated Data Visualization](https://www.kaggle.com/code/danielpeshkov/animated-data-visualization) [@danielpeshkov](https://www.kaggle.com/danielpeshkov)",
    "2241984": "Hearty congratulations for the result and kudos to you for the approach note as well @donjyarahoi",
    "2242850": "donjyarahoi congratulations with great result!💥 Thanks for sharing - it helps to improve skills!🤝🙂"
  },
  "source": "meta"
}