{
  "id": 666639,
  "title": "New Public Synthetic ECG Data Generator With All You Need.",
  "url": "/competitions/physionet-ecg-image-digitization/discussion/666639",
  "author_name": "",
  "post_date": "2026-01-08T08:53:21.133571700Z",
  "votes": 6,
  "comment_count": 2,
  "views": 0,
  "content": "<p>So, I've spent quite some time crafting a synthetic ECG dataset generator capable of generating nigh-realistic images with convincing artifacts and distortions, alongside corresponding segmentation masks. The synthetic images are created from the csv files provided in this competition, with the correct layout and all. If you find this helpful do upvote and leave a comment if you have any questions.</p>\n<p>Here is the link to a notebook guide on all that it entails: <a href=\"https://www.kaggle.com/code/henrychibueze/synthesize-ecg-samples\" target=\"_blank\">Synthesizer Notebook</a></p>\n<p>Here is the link to the github repository: <a href=\"https://github.com/ches-001/ECG-Synthesizer\" target=\"_blank\">ECG-Synthesizer</a></p>",
  "messages": [
    {
      "id": "3388128",
      "postDate": "01/08/2026 08:53:21",
      "content": "<p>So, I've spent quite some time crafting a synthetic ECG dataset generator capable of generating nigh-realistic images with convincing artifacts and distortions, alongside corresponding segmentation masks. The synthetic images are created from the csv files provided in this competition, with the correct layout and all. If you find this helpful do upvote and leave a comment if you have any questions.</p>\n<p>Here is the link to a notebook guide on all that it entails: <a href=\"https://www.kaggle.com/code/henrychibueze/synthesize-ecg-samples\" target=\"_blank\">Synthesizer Notebook</a></p>\n<p>Here is the link to the github repository: <a href=\"https://github.com/ches-001/ECG-Synthesizer\" target=\"_blank\">ECG-Synthesizer</a></p>",
      "rawMarkdown": "So, I've spent quite some time crafting a synthetic ECG dataset generator capable of generating nigh-realistic images with convincing artifacts and distortions, alongside corresponding segmentation masks. The synthetic images are created from the csv files provided in this competition, with the correct layout and all. If you find this helpful do upvote and leave a comment if you have any questions.\n\nHere is the link to a notebook guide on all that it entails: [Synthesizer Notebook](https://www.kaggle.com/code/henrychibueze/synthesize-ecg-samples)\n\nHere is the link to the github repository: [ECG-Synthesizer](https://github.com/ches-001/ECG-Synthesizer)",
      "votes": null
    },
    {
      "id": "3388540",
      "postDate": "01/09/2026 04:12:52",
      "content": "<p>Thanks for contributing this. We are always very grateful for any open source contributions that may be of help to the competitors. To help teams understand how useful this might be, can you answer the following questions, please? </p>\n<ol>\n<li><p>How does your code compare with ECG-Image-Kit, the code we provided for this challenge?\nSee: <a href=\"https://github.com/alphanumericslab/ecg-image-kit\" target=\"_blank\">https://github.com/alphanumericslab/ecg-image-kit</a> <a href=\"https://arxiv.org/abs/2307.01946\" target=\"_blank\">https://arxiv.org/abs/2307.01946</a>\nDoes it provide anything new?</p></li>\n<li><p>What analysis did you perform to test the realism of the images? Did you use any metrics, and what were the results?</p></li>\n<li><p>Did you use this to help (pre?)train your model for the competition? If so, how much did it improve the performance of your model? (This is the best test of the utility of the synthetic ECG generator.)</p></li>\n</ol>",
      "rawMarkdown": "Thanks for contributing this. We are always very grateful for any open source contributions that may be of help to the competitors. To help teams understand how useful this might be, can you answer the following questions, please? \n\n1. How does your code compare with ECG-Image-Kit, the code we provided for this challenge?\nSee: https://github.com/alphanumericslab/ecg-image-kit https://arxiv.org/abs/2307.01946\nDoes it provide anything new?\n\n2. What analysis did you perform to test the realism of the images? Did you use any metrics, and what were the results?\n\n3. Did you use this to help (pre?)train your model for the competition? If so, how much did it improve the performance of your model? (This is the best test of the utility of the synthetic ECG generator.)",
      "votes": null
    },
    {
      "id": "3388620",
      "postDate": "01/09/2026 08:58:24",
      "content": "<p>Sure.</p>\n<ol>\n<li><p>I did not make any direct comparisons to the ECG-Image-Kit codebase, although I took some inspirations from it, especially with regards to crease lines and wrinkles (with quilting) augmentations, however, I did include more image augmentation techniques that were not available in the ECG-Image-Kit codebase, especially with regards to the distortion. Asides from affine distortions, I also implemented foreshortening, sinusoidal distortion (to create more wavey lines), pin cushion and barrel distortions, and smooth random distortions to mimic folded / rumpled papers with slightly jagged lines and edges. And some other minor augmentations like contrast and brightness, noise (including Perlin, Speckle, Gaussian, Poisson, Salt and Pepper), lightening gradients, stains (with dark circles and aggressive smoothening) to mimic molds, etc.</p></li>\n<li><p>No particular analysis was performed to check realism, just some visual inspections. Actually I am even unaware of any kind of analysis used to determine realism asides just visual inspection and maybe model performance comparisons (same model across two or more datasets), so If you know any do let me know.</p></li>\n<li><p>I am currently working on my solutions (mostly with regards to signal tracing), The segmentation results look good, for samples that I have manually annotated (from competition data), using them as targets for evaluation, the model does achieve Tversky score of ~0.93 and a BCE cost of ~0.037. Of course My technique depends on cropping the largest contour area in a sample image and resizing to a shape (1720 x 2240) consistent with the synthetic samples being generated with this codebase, rectifying them and segmenting the signals on the rectified image, even images taken with mobile device cameras. As for improvements, well I have only one solution so far and it hinges on this so I wouldn't necessarily be able to provide info on improvements if there's nothing else I have done that I can use to compare to this. Time really isn't on my side to explore many things, However, I did feel like building this synthesizer, so I just did.\nI am able to achieve an SNR of 15.25 with this solution so far, although, some samples in the competition evaluation set did cause my program to crash, and with no means to see the error logs for errors that caused my submissions to fail, I resorted to explicitly catching errors  and setting the predictions to 0s, rather than adjusting my solution to accommodate those error samples. Of course I could just copy the public best solution, but I do want to see what I can achieve on my own…</p></li>\n</ol>\n<p>Thank you for your feedback</p>",
      "rawMarkdown": "Sure.\n\n1. I did not make any direct comparisons to the ECG-Image-Kit codebase, although I took some inspirations from it, especially with regards to crease lines and wrinkles (with quilting) augmentations, however, I did include more image augmentation techniques that were not available in the ECG-Image-Kit codebase, especially with regards to the distortion. Asides from affine distortions, I also implemented foreshortening, sinusoidal distortion (to create more wavey lines), pin cushion and barrel distortions, and smooth random distortions to mimic folded / rumpled papers with slightly jagged lines and edges. And some other minor augmentations like contrast and brightness, noise (including Perlin, Speckle, Gaussian, Poisson, Salt and Pepper), lightening gradients, stains (with dark circles and aggressive smoothening) to mimic molds, etc.\n\n2. No particular analysis was performed to check realism, just some visual inspections. Actually I am even unaware of any kind of analysis used to determine realism asides just visual inspection and maybe model performance comparisons (same model across two or more datasets), so If you know any do let me know.\n\n3. I am currently working on my solutions (mostly with regards to signal tracing), The segmentation results look good, for samples that I have manually annotated (from competition data), using them as targets for evaluation, the model does achieve Tversky score of ~0.93 and a BCE cost of ~0.037. Of course My technique depends on cropping the largest contour area in a sample image and resizing to a shape (1720 x 2240) consistent with the synthetic samples being generated with this codebase, rectifying them and segmenting the signals on the rectified image, even images taken with mobile device cameras. As for improvements, well I have only one solution so far and it hinges on this so I wouldn't necessarily be able to provide info on improvements if there's nothing else I have done that I can use to compare to this. Time really isn't on my side to explore many things, However, I did feel like building this synthesizer, so I just did.\nI am able to achieve an SNR of 15.25 with this solution so far, although, some samples in the competition evaluation set did cause my program to crash, and with no means to see the error logs for errors that caused my submissions to fail, I resorted to explicitly catching errors  and setting the predictions to 0s, rather than adjusting my solution to accommodate those error samples. Of course I could just copy the public best solution, but I do want to see what I can achieve on my own...\n\nThank you for your feedback",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 3388540,
      "author_name": "gdclifford",
      "author_url": "",
      "post_date": "01/09/2026 04:12:52",
      "content": "<p>Thanks for contributing this. We are always very grateful for any open source contributions that may be of help to the competitors. To help teams understand how useful this might be, can you answer the following questions, please? </p>\n<ol>\n<li><p>How does your code compare with ECG-Image-Kit, the code we provided for this challenge?\nSee: <a href=\"https://github.com/alphanumericslab/ecg-image-kit\" target=\"_blank\">https://github.com/alphanumericslab/ecg-image-kit</a> <a href=\"https://arxiv.org/abs/2307.01946\" target=\"_blank\">https://arxiv.org/abs/2307.01946</a>\nDoes it provide anything new?</p></li>\n<li><p>What analysis did you perform to test the realism of the images? Did you use any metrics, and what were the results?</p></li>\n<li><p>Did you use this to help (pre?)train your model for the competition? If so, how much did it improve the performance of your model? (This is the best test of the utility of the synthetic ECG generator.)</p></li>\n</ol>",
      "votes": null,
      "replies": [
        {
          "id": 3388620,
          "author_name": "henrychibueze",
          "author_url": "",
          "post_date": "01/09/2026 08:58:24",
          "content": "<p>Sure.</p>\n<ol>\n<li><p>I did not make any direct comparisons to the ECG-Image-Kit codebase, although I took some inspirations from it, especially with regards to crease lines and wrinkles (with quilting) augmentations, however, I did include more image augmentation techniques that were not available in the ECG-Image-Kit codebase, especially with regards to the distortion. Asides from affine distortions, I also implemented foreshortening, sinusoidal distortion (to create more wavey lines), pin cushion and barrel distortions, and smooth random distortions to mimic folded / rumpled papers with slightly jagged lines and edges. And some other minor augmentations like contrast and brightness, noise (including Perlin, Speckle, Gaussian, Poisson, Salt and Pepper), lightening gradients, stains (with dark circles and aggressive smoothening) to mimic molds, etc.</p></li>\n<li><p>No particular analysis was performed to check realism, just some visual inspections. Actually I am even unaware of any kind of analysis used to determine realism asides just visual inspection and maybe model performance comparisons (same model across two or more datasets), so If you know any do let me know.</p></li>\n<li><p>I am currently working on my solutions (mostly with regards to signal tracing), The segmentation results look good, for samples that I have manually annotated (from competition data), using them as targets for evaluation, the model does achieve Tversky score of ~0.93 and a BCE cost of ~0.037. Of course My technique depends on cropping the largest contour area in a sample image and resizing to a shape (1720 x 2240) consistent with the synthetic samples being generated with this codebase, rectifying them and segmenting the signals on the rectified image, even images taken with mobile device cameras. As for improvements, well I have only one solution so far and it hinges on this so I wouldn't necessarily be able to provide info on improvements if there's nothing else I have done that I can use to compare to this. Time really isn't on my side to explore many things, However, I did feel like building this synthesizer, so I just did.\nI am able to achieve an SNR of 15.25 with this solution so far, although, some samples in the competition evaluation set did cause my program to crash, and with no means to see the error logs for errors that caused my submissions to fail, I resorted to explicitly catching errors  and setting the predictions to 0s, rather than adjusting my solution to accommodate those error samples. Of course I could just copy the public best solution, but I do want to see what I can achieve on my own…</p></li>\n</ol>\n<p>Thank you for your feedback</p>",
          "votes": null,
          "replies": []
        }
      ]
    }
  ],
  "raw_markdown_by_id": {
    "3388128": "So, I've spent quite some time crafting a synthetic ECG dataset generator capable of generating nigh-realistic images with convincing artifacts and distortions, alongside corresponding segmentation masks. The synthetic images are created from the csv files provided in this competition, with the correct layout and all. If you find this helpful do upvote and leave a comment if you have any questions.\n\nHere is the link to a notebook guide on all that it entails: [Synthesizer Notebook](https://www.kaggle.com/code/henrychibueze/synthesize-ecg-samples)\n\nHere is the link to the github repository: [ECG-Synthesizer](https://github.com/ches-001/ECG-Synthesizer)",
    "3388540": "Thanks for contributing this. We are always very grateful for any open source contributions that may be of help to the competitors. To help teams understand how useful this might be, can you answer the following questions, please? \n\n1. How does your code compare with ECG-Image-Kit, the code we provided for this challenge?\nSee: https://github.com/alphanumericslab/ecg-image-kit https://arxiv.org/abs/2307.01946\nDoes it provide anything new?\n\n2. What analysis did you perform to test the realism of the images? Did you use any metrics, and what were the results?\n\n3. Did you use this to help (pre?)train your model for the competition? If so, how much did it improve the performance of your model? (This is the best test of the utility of the synthetic ECG generator.)",
    "3388620": "Sure.\n\n1. I did not make any direct comparisons to the ECG-Image-Kit codebase, although I took some inspirations from it, especially with regards to crease lines and wrinkles (with quilting) augmentations, however, I did include more image augmentation techniques that were not available in the ECG-Image-Kit codebase, especially with regards to the distortion. Asides from affine distortions, I also implemented foreshortening, sinusoidal distortion (to create more wavey lines), pin cushion and barrel distortions, and smooth random distortions to mimic folded / rumpled papers with slightly jagged lines and edges. And some other minor augmentations like contrast and brightness, noise (including Perlin, Speckle, Gaussian, Poisson, Salt and Pepper), lightening gradients, stains (with dark circles and aggressive smoothening) to mimic molds, etc.\n\n2. No particular analysis was performed to check realism, just some visual inspections. Actually I am even unaware of any kind of analysis used to determine realism asides just visual inspection and maybe model performance comparisons (same model across two or more datasets), so If you know any do let me know.\n\n3. I am currently working on my solutions (mostly with regards to signal tracing), The segmentation results look good, for samples that I have manually annotated (from competition data), using them as targets for evaluation, the model does achieve Tversky score of ~0.93 and a BCE cost of ~0.037. Of course My technique depends on cropping the largest contour area in a sample image and resizing to a shape (1720 x 2240) consistent with the synthetic samples being generated with this codebase, rectifying them and segmenting the signals on the rectified image, even images taken with mobile device cameras. As for improvements, well I have only one solution so far and it hinges on this so I wouldn't necessarily be able to provide info on improvements if there's nothing else I have done that I can use to compare to this. Time really isn't on my side to explore many things, However, I did feel like building this synthesizer, so I just did.\nI am able to achieve an SNR of 15.25 with this solution so far, although, some samples in the competition evaluation set did cause my program to crash, and with no means to see the error logs for errors that caused my submissions to fail, I resorted to explicitly catching errors  and setting the predictions to 0s, rather than adjusting my solution to accommodate those error samples. Of course I could just copy the public best solution, but I do want to see what I can achieve on my own...\n\nThank you for your feedback"
  },
  "source": "meta"
}