This package provides a service for automatic image assessment. It uses the MUSIQ algorithm (https://arxiv.org/abs/2108.05997, https://github.com/google-research/google-research/tree/master/musiq). Images are assessed based on aesthetic and technical aspects. This is achieved by running two flavors of the MUSIQ model: One for aesthetic assessment and one for technical assessment, with weights from Tensorflow Hub.
The package can be built by running the following command in the root folder of the repository:
make buildThis will create Python modules from the Protobuf files, build the package and create build and dist folders containing the built package.
The dependencies of imageassessmentservice are listed in requirements.txt. They can be installed by running the
following command in the root folder of the repository:
make depsThis step is only required if the package is not installed via pip or for development.
The package can be installed by running the following command in the root folder of the repository:
make install-allbut pip install . also works if the package was built separably.
The build and dist folders can be removed together with the modules that are generated from Protobuf files by running the following command in the root folder of the repository:
make cleanAfter setting up a Python environment containing the dependencies, the assessment server can be run by executing
python -m imageassessmentservice.serverThe server will listen on port 50051 by default. The client can be run by executing
python -m imageassessmentservice.client images_source_folder ratings_target_file_path [server_address]Here, images_source_folder is the folder containing the images to assess, ratings_target_file_path will contain the
ratings for all images and server_address is the IP address of the server where imageassessment.server is running. server_address is optional and defaults to localhost.
This package provides two options for making use of the image ratings: Sorting the images in folders according to their rating or storing the ratings in a Digikam database.
If images should be sorted in folders according to their rating, run
python -m imageassessmentservice.process sort ratings_target_file_path source_folder target_folderThis creates sub-folders in target_folder and then copies the images into them according to
their relative path with respect to source_folder.
The command line tool process can also be used to store the ratings in a database for the photo management program
Digikam (https://www.digikam.org/). The program already contains an Image Quality Sorter
(https://docs.digikam.org/en/maintenance_tools/maintenance_quality.html)
which is based on YoloV3 and yields pretty good results. In case a more powerful GPU is available, this
package allows to further improve the results by rating images based on aesthetic and technical aspects with a
state-of-the-art algorithm. Writing the ratings to Digikam's SQLite database has been tested with version 8.0.0.
In order to store the ratings from imageassessmentservice.client in the Digikam database, run
python -m imageassessmentservice.process digikam path_to_digikam4.db ratings_target_file_pathwhere path_to_digikam4.db is the path to the Digikam database file and ratings_target_file_path is the path to the
file containing the ratings as described above. The ratings are stored in the database in the ImageProperties table.
Please keep the following aspects in mind when using this code:
- Images are assessed relative to each other -- the assessment results may be more representative when assessing larger amounts of images
- Data is (currently) transferred between service and client without encryption