{"id":25237145,"url":"https://github.com/royerlab/aydin","last_synced_at":"2025-07-03T09:10:15.634Z","repository":{"id":37499322,"uuid":"188953977","full_name":"royerlab/aydin","owner":"royerlab","description":"Aydin — User-friendly, Fast, Self-Supervised Image Denoising for All.","archived":false,"fork":false,"pushed_at":"2023-04-14T23:45:38.000Z","size":158480,"stargazers_count":159,"open_issues_count":30,"forks_count":14,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-26T12:15:43.056Z","etag":null,"topics":["deep-learning","denoising","image","image-processing","machine-learning","neural-network","python"],"latest_commit_sha":null,"homepage":"https://royerlab.github.io/aydin/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/royerlab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-28T04:30:19.000Z","updated_at":"2025-06-07T17:08:56.000Z","dependencies_parsed_at":"2025-02-11T15:45:21.926Z","dependency_job_id":null,"html_url":"https://github.com/royerlab/aydin","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/royerlab/aydin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royerlab%2Faydin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royerlab%2Faydin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royerlab%2Faydin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royerlab%2Faydin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/royerlab","download_url":"https://codeload.github.com/royerlab/aydin/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/royerlab%2Faydin/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263296638,"owners_count":23444499,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["deep-learning","denoising","image","image-processing","machine-learning","neural-network","python"],"created_at":"2025-02-11T15:33:30.586Z","updated_at":"2025-07-03T09:10:15.614Z","avatar_url":"https://github.com/royerlab.png","language":"Python","funding_links":[],"categories":["Python","🪄 Image denoising"],"sub_categories":[],"readme":"![image](https://user-images.githubusercontent.com/1870994/140651325-711b6c30-133d-45ba-a794-8a10a4cafbc2.png?width=200)\n\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/aydin)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/python/black)\n[![codecov](https://codecov.io/gl/aydinorg/aydin/branch/master/graph/badge.svg?token=gV3UqFAg5U)](https://codecov.io/gl/aydinorg/aydin)\n[![DOI](https://zenodo.org/badge/188953977.svg)](https://zenodo.org/badge/latestdoi/188953977)\n[![Downloads](https://pepy.tech/badge/aydin)](https://pepy.tech/project/aydin)\n\n\n[graphical user interface]: https://royerlab.github.io/aydin/v0.1.15/tutorials/gui_tutorials.html\n[command line interface]: https://royerlab.github.io/aydin/v0.1.15/tutorials/cli_tutorials.html\n[API]: https://royerlab.github.io/aydin/v0.1.15/tutorials/api_tutorials.html\n[use cases]: https://royerlab.github.io/aydin/v0.1.15/use_cases/introduction.html\n[install]: https://royerlab.github.io/aydin/v0.1.15/getting_started/install.html\n\n*Aydin* is a user-friendly, feature-rich, and fast **image denoising tool** that provides\na number of **self-supervised, auto-tuned, and unsupervised** image denoising algorithms.\n*Aydin* handles from the get-go n-dimensional array-structured images with an arbitrary number\nof batch dimensions, channel dimensions, and typically up to 4 spatio-temporal dimensions.\n\nIt comes with *Aydin Studio* a [graphical user interface][graphical user interface]\nto easily experiment with all the different algorithms and parameters available,\na [command line interface] to run large jobs on the terminal possibly on powerfull remote machines, \nand an [API] for custom coding and integration into your scripts and applications.\nMore details and exhaustive explanations can be found in Aydin's [documentation](https://royerlab.github.io/aydin/).\n\nAnd, of course, a simplified [napari](https://napari.org) plugin is in the works! \nNotebooks for running on Collab are also planned. \nThe project is commercial-use-friendly if you specify pyside as your GUI backend.\n\n## Supported algorithms:\n\nCurrently *Aydin* supports two main families of denoisers: the first family consists \nof 'classical' denoising algorithms that leverage among other: frequency domain filtering, \nsmoothness priors, low-rank representations, self-similarity, and more. \nThe second family consists of algorithms that leverage machine learning approaches \nsuch as convolutional neural networks (CNN) or gradient boosting (GB). \nIn the [Noise2Self paper](https://deepai.org/publication/noise2self-blind-denoising-by-self-supervision) \nwe show that it is possible to calibrate any parameterised denoising algorithm, \nfrom the few parameters of a classical algorithm to the millions of weights of a deep neural \nnetwork. We leverage and extend these ideas in *Aydin* to provide a variety of auto-tuned \nand trained high-quality image denoisers. What this means is that for example, we can discover automatically \nthe optimal parameters for non-local-means (NLM) denoising, or the best cut-off frequencies for a low-pass denoiser. \nThese parameters are difficult to determine 'by-hand' but when auto-tuned we show (see [use-cases][use cases])\nthat you can get remarkable results even with simple 'classic' denoisers, and even be competitive against more complex and slower\napproaches such as deep-learning based denoisers that can also be prone to hallucination and 'copy-paste' effects. \nImportantly, our experience denoising many different kinds of images has shown that tehre is not a single 'silver-bullet' \ndenoiser, different kinds of datasets require different approaches.  \nHere is the list of currently available methods: \n\n- **Low-pass filtering based algorithms:**\n  - Butterworth denoiser (*butterworth*).\n  - Gaussian blur denoiser (*gaussian*).\n  - Gaussian-Median mixed denoiser (*gm*).\n \n- **Optimisation-based with smoothness priors:**\n  - Total-Variation denoising (*tv*)\n  - Harmonic prior (*harmonic*)\n\n- **Low-rank representations:**\n  - Denoising via sparse decomposition (e.g. OMP) over a fixed dictionary (DCT, DST, ...)\n  - Denoising via sparse decomposition (e.g. OMP) over a learned dictionary (Kmeans, PCA, ICA, SDL, ...)\n\n- **Patch similarity:**\n  - Non-Local Means denoising (*nlm*)\n  - BMnD (not available just yet but partly implemented!) \n\n- **Machine learning based:**\n  - Noise2Self-FGR: Noise2Self denoising via Feature Generation and Regression (FGR). We use specially crafted integral features. We have several variants that leverage different regressors: CatBoost(cb), lightGBM, linear, perceptron, random-forrest, support vector regression) \n  - Noise2Self-CNN: Noise2Self denoising via Convolutional Neural Networks (CNN). This is the original approach of Noise2Self. In our experience this is typically slower to train, and more prone to hallucination and residual noise than FGR.  \n \n- **Other:**\n  - Lipschitz continuity denoising.     \n\nSome methods actually do combine multiple ideas and so the classification above is not strict.\nWe recommend trying first a good baseline denoiser such as the *Butterworth denoiser*. \nIf unsatisfied with the result, and you have a powerful computer with a recent NVIDIA\ngraphics card, then we recommend you try the Noise2Self-FGR-cb denoiser. \nFor detailed use-cases check [here][use cases].  \n\nWe regularly come up with new approaches and ideas, there is just not enough time to write papers about all these ideas.\nThis means that the best 'publication' for some of these novel algorithms is this repo itself, and so please be so kind as to\n[cite this repo](https://github.com/royerlab/aydin#cite-this-repo) for any ideas that you would use or reuse.\nWe have a long todo list of existing, modified, as well as original algorithms that we plan to add to *Aydin* in the next weeks and months. We will do so progressively as time allows. Stay tuned!\n\n## Documentation\n\n*Aydin*'s documentation can be found [here](https://royerlab.github.io/aydin/).\n\n## Installation of *Aydin Studio*\n\nWe recommend that users that are not familiar with python start with our user-friendly UI. \nDownload it for your operating system here:\n\n[\u003cimg src=\"https://user-images.githubusercontent.com/1870994/140653991-fb570f5a-bc6f-4afd-95b6-e36d05d1382d.png\" width=\"200\" \u003e\n](https://github.com/royerlab/aydin/releases/download/v0.1.13/aydin_0.1.13_linux.zip) \n[\u003cimg src=\"https://user-images.githubusercontent.com/1870994/140653995-5055e607-5226-4b76-8cc4-04de17d2811f.png\" width=\"200\" \u003e\n](https://github.com/royerlab/aydin/releases/download/v0.1.13/aydin_0.1.13_win.zip) \n[\u003cimg src=\"https://user-images.githubusercontent.com/1870994/140653999-5f6368d9-3e82-4d10-9283-2359aa1464fa.png\" width=\"200\" \u003e\n](https://github.com/royerlab/aydin/releases/download/v0.1.13/aydin_0.1.13_osx.pkg)\n\nThe latest releases and standalone executables can be found [here](https://github.com/royerlab/aydin/releases) \nand detailed installation instructions of *Aydin Studio* for all three operating systems can be found \n[here][install].\n\n\n## Installation of *Aydin* in Conda:\n\nFirst download and install [miniconda](https://docs.conda.io/en/latest/miniconda.html) or [anaconda](https://www.anaconda.com/products/individual). \n\nThen create a conda environment to host aydin:\n```bash\nconda create -n aydin_env python=3.9\n```\n\nActivate the environment:\n```bash\nconda activate aydin_env\n```\n\nInstall *Aydin* in the environment: \n```bash\npip install aydin\n```\n\n### CUDA dependencies:\n\nIf you have a NVIDIA CUDA Graphics card, you should install the CUDA toolkit:\n```bash\nconda install cudatoolkit\n```\n\n### Mac specific dependencies:\n\nFor Macs (OSX) you first need to do:\n```bash\nbrew install libomp\n```\n\nYou can install *Brew* by following the instructions [here](https://brew.sh/).\n\n### Ubuntu/Linux specific dependencies:\n\nIf you encounter problems running Aydin in Ubuntu/linux,\nplease install the following package:\n\n```bash\nsudo apt install libqt5x11extras5\n```\n\n## How to run ?\n\nAssuming that you have installed *Aydin* in an environment, you can:\n\nStart *Aydin Studio* from the command line with:\n```bash\naydin\n```\n\nRun the Command Line Interface (CLI) for denoising:\n```bash\naydin denoise path/to/noisyimage\n```\n\nGet help on command line usage:\n```bash\naydin -h\n```\n\n## Recommended Operating System Versions\n\n#### Linux: Ubuntu 18.04+\n#### Windows: Windows 10\n#### OSX: Mojave 10.14.6+\n\n## Recommended Hardware:\n\nRecommended specifications are: at least 16 Gb of RAM, ideally 32 Gb, and more for very large\nimages, a CPU with at least 4 cores, preferably 16 or more, and a recent NVIDIA graphics card such as a RTX series card.\nOlder graphics cards could work but may cause trouble or be too slow. *Aydin* Studio's summary page\ngives an overview of the strengths and weaknesses of your machine, highlighting in red and orange\nitems that might be problematic.\n\n## Known Issues:\nHere are some issues that are being actively addressed and will be addressed asap:\n\n  - Stop button for all algorithms. For technical reasons having to do with the diversity of libraries we use, we currently cannot stop training. We are planning to solve this using subprocess spawning. For now, to stop *Aydin* from running, you need to close the window and/or terminate the process. We know this is very unfortunate and are determined to fix this quickly.\n\n  - On Ubuntu and perhaps other Linux systems, high-dpi modes tend to mess with font and ui element rendering.\n\n  - M1 Macs are not yet supported, we depend on libraries that have not yet made the move, yet! Hopefully we will soon be able to run Aydin on M1 Macs!\n\n## Road Map:\n\nPlanned features:\n  - ~~Toggling between 'Advanced' and 'Basic' modes to show and hide advanced algorithms.~~ :white_check_mark:\n  - Loading of denoising model and configurations (JSON) on *Aydin Studio*\n  - Pytorch backend\n\n## Contributing\n\nFeel free to check our [contributing guideline](CONTRIBUTING.md) first and start \ndiscussing your new ideas and feedback with us through issues.\n\n## Cite this repo\n\nYou can cite our work with: [https://doi.org/10.5281/zenodo.5654826](https://doi.org/10.5281/zenodo.5654826)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froyerlab%2Faydin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Froyerlab%2Faydin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Froyerlab%2Faydin/lists"}