{"id":14483181,"url":"https://github.com/idealo/imageatm","last_synced_at":"2025-08-24T07:30:50.966Z","repository":{"id":72806289,"uuid":"176259314","full_name":"idealo/imageatm","owner":"idealo","description":"Image classification for everyone.","archived":false,"fork":false,"pushed_at":"2023-12-19T09:36:57.000Z","size":13813,"stargazers_count":214,"open_issues_count":9,"forks_count":49,"subscribers_count":22,"default_branch":"master","last_synced_at":"2024-07-15T15:37:37.606Z","etag":null,"topics":["computer-vision","deep-learning","image-classification","keras","machine-learning","neural-network","tensorflow","transfer-learning"],"latest_commit_sha":null,"homepage":"https://idealo.github.io/imageatm/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/idealo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"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-03-18T10:32:00.000Z","updated_at":"2024-03-25T05:14:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"ca78b3e5-0552-4224-909b-b317ca49b63a","html_url":"https://github.com/idealo/imageatm","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idealo%2Fimageatm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idealo%2Fimageatm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idealo%2Fimageatm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/idealo%2Fimageatm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/idealo","download_url":"https://codeload.github.com/idealo/imageatm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230783015,"owners_count":18279561,"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":["computer-vision","deep-learning","image-classification","keras","machine-learning","neural-network","tensorflow","transfer-learning"],"created_at":"2024-09-03T00:01:34.765Z","updated_at":"2024-12-22T01:09:25.834Z","avatar_url":"https://github.com/idealo.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"# Image ATM (Automated Tagging Machine)\n\n[![Build Status](https://travis-ci.org/idealo/imageatm.svg?branch=master)](https://travis-ci.org/idealo/imageatm)\n[![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg)](https://github.com/idealo/imageatm/blob/master/LICENSE)\n\nImage ATM is a one-click tool that automates the workflow of a typical image classification pipeline in an opinionated way, this includes:\n\n- Preprocessing and validating input images and labels\n- Starting/terminating cloud instance with GPU support\n- Training\n- Model evaluation\n\nRead the documentation at: [https://idealo.github.io/imageatm/](https://idealo.github.io/imageatm/)\n\nImage ATM is compatible with Python 3.6 and is distributed under the Apache 2.0 license.\n\n## Installation\nThere are two ways to install Image ATM:\n\n* Install Image ATM from PyPI (recommended):\n```\npip install imageatm\n```\n\n* Install Image ATM from the GitHub source:\n```\ngit clone https://github.com/idealo/imageatm.git\ncd imageatm\npython setup.py install\n```\n\n## Usage\n\n#### Train with CLI\nRun this in your terminal\n```\nimageatm pipeline config/config_file.yml\n```\n\n#### Train without CLI\nRun the data preparation:\n``` python\nfrom imageatm.components import DataPrep\n\ndp = DataPrep(\n    samples_file = 'sample_configfile.json',\n    image_dir = 'sample_dataset/',\n    job_dir='sample_jobdir/'\n)\ndp.run(resize=True)\n```\n\nRun the training:\n``` python\nfrom imageatm.components import Training\n\ntrainer = Training(image_dir=dp.image_dir, job_dir=dp.job_dir)\ntrainer.run()\n```\n\nRun the evaluation:\n``` python\nfrom imageatm.components import Evaluation\n\nevaluator = Evaluation(image_dir=dp.image_dir, job_dir=dp.job_dir)\nevaluator.run()\n```\n\n## Test\nTest execution is triggered by these commands:\n```\npip install -e \".[tests, docs]\"\npytest -vs --cov=imageatm --show-capture=no --disable-pytest-warnings tests/\n```\n\n## Transfer learning\nThe following pretrained CNNs from Keras can be used for transfer learning in Image-ATM:\n\n- Xception\n- VGG16\n- VGG19\n- ResNet50, ResNet101, ResNet152\n- ResNet50V2, ResNet101V2, ResNet152V2\n- ResNeXt50, ResNeXt101\n- InceptionV3\n- InceptionResNetV2\n- MobileNet\n- MobileNetV2\n- DenseNet121, DenseNet169, DenseNet201\n- NASNetLarge, NASNetMobile\n\nTraining is split into two phases, at first only the last dense layer gets\ntrained, and then all layers are trained.\n\nFor each phase the **learning rate is reduced** after a patience period if no\nimprovement in validation accuracy has been observed. The patience period\ndepends on the average number of samples per class (*n_per_class*):\n\n- if *n_per_class* \u003c 200: patience = 5 epochs\n- if *n_per_class* \u003e= 200 and \u003c 500: patience = 4 epochs\n- if *n_per_class* \u003e= 500: patience = 2 epochs\n\n**Training is stopped early** after a patience period that is three times\nthe learning rate patience to allow for two learning rate adjustments\nbefore stopping training.\n\n## Contribute\nWe welcome all kinds of contributions. See the [Contribution](CONTRIBUTING.md) guide for more details.\n\n#### Bump version\nTo bump up the version, use\n```\nbumpversion {part} setup.py\n```\n\n## Cite this work\nPlease cite Image ATM in your publications if this is useful for your research. Here is an example BibTeX entry:\n```\n@misc{idealods2019imageatm,\n  title={Image ATM},\n  author={Christopher Lennan and Malgorzata Adamczyk and Gunar Maiwald and Dat Tran},\n  year={2019},\n  howpublished={\\url{https://github.com/idealo/imageatm}},\n}\n```\n\n## Maintainers\n* Christopher Lennan, github: [clennan](https://github.com/clennan)\n* Malgorzata Adamczyk, github: [gosia-malgosia](https://github.com/gosia-malgosia)\n* Gunar Maiwald: github: [gunarmaiwald](https://github.com/gunarmaiwald)\n* Dat Tran, github: [datitran](https://github.com/datitran)\n\n## Copyright\n\nSee [LICENSE](LICENSE) for details.\n\n## TO-DOs:\n\n- We are currently using Keras 2.2. The plan is to use tf.keras once TF 2.0 is out. Currently tf.keras is buggy,\n  especially with model saving/loading (https://github.com/tensorflow/tensorflow/issues/22697)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidealo%2Fimageatm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fidealo%2Fimageatm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fidealo%2Fimageatm/lists"}