{"id":18708071,"url":"https://github.com/banterle/nor-vdpnet","last_synced_at":"2025-10-07T18:32:09.393Z","repository":{"id":148319245,"uuid":"266061219","full_name":"banterle/NoR-VDPNet","owner":"banterle","description":"A no-reference version of HDR-VDP using deep-learning","archived":false,"fork":false,"pushed_at":"2025-09-23T13:39:21.000Z","size":1280,"stargazers_count":27,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-23T15:36:05.463Z","etag":null,"topics":["convolutional-neural-networks","deep-neural-networks","hdr","hdr-compression","hdr-generation","hdr-image","hdr-imaging","hdr-video","inverse-tone-mapping","machine-learning","perceptual-losses","perceptual-metrics","perceptual-similarity","tone-mapping"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause-clear","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/banterle.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-05-22T08:39:48.000Z","updated_at":"2025-09-23T13:39:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"a2b1639b-dbe6-4d40-a513-8205f88f6823","html_url":"https://github.com/banterle/NoR-VDPNet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/banterle/NoR-VDPNet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/banterle%2FNoR-VDPNet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/banterle%2FNoR-VDPNet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/banterle%2FNoR-VDPNet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/banterle%2FNoR-VDPNet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/banterle","download_url":"https://codeload.github.com/banterle/NoR-VDPNet/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/banterle%2FNoR-VDPNet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278823262,"owners_count":26052259,"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","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["convolutional-neural-networks","deep-neural-networks","hdr","hdr-compression","hdr-generation","hdr-image","hdr-imaging","hdr-video","inverse-tone-mapping","machine-learning","perceptual-losses","perceptual-metrics","perceptual-similarity","tone-mapping"],"created_at":"2024-11-07T12:21:24.141Z","updated_at":"2025-10-07T18:32:09.388Z","avatar_url":"https://github.com/banterle.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"NoR-VDPNet\n==========\nNoR-VDPNet is a deep-learning based no-reference metric trained on [HDR-VDP](http://hdrvdp.sourceforge.net/wiki/).\nTraditionally, HDR-VDP requires a reference image, which is not possible to have in some scenarios.\n\n![HDR-VDP](images/hdrvdp.png?raw=true \"HDR-VDP\")\n\nNoR-VDPNet is a no-reference metric, so it requires a single image in order to asses its quality. NoR-VDPNet can be trained on High Dynamic Range (HDR) images or Standard Dynamic Range (SDR) images (i.e., classic 8-bit images).\n\n![NoR-VDPNet](images/our.png?raw=true \"NoR-VDPNet\")\n\n\nDEPENDENCIES:\n==============\n\nRequires the PyTorch library along with Image, NumPy, SciPy, Matplotlib, glob2, pandas, and scikit-learn.\n\nAs the first step, you need to follow the [instructions for installing PyTorch](http://pytorch.org/).\n\nTo install dependencies, please use the following command: \n\n```bash\npip3 install numpy, scipy, matplotlib, glob2, pandas, image, scikit-learn, opencv-python. \n```\n\nHOW TO RUN IT:\n==============\nTo run our metric on a folder of images (i.e., JPEG, PNG, EXR, HDR, and MAT files),\nyou need to launch the file ```norvdpnet.py```. Some examples:\n\nTesting SDR images for the trained distortions (see the paper):\n\n```\npython3 norvdpnet.py SDR /home/user00/images_to_be_sdr/\n```\n\nTesting HDR images after JPEG-XT compression:\n\n```\npython3 norvdpnet.py HDR_COMP /home/user00/images_to_be_hdr/\n```\n\nTesting HDR images after tone mapping operators:\n\n```\npython3 norvdpnet.py SDR_TMO /home/user00/images_to_be_sdr/\n```\n\nTesting images after inverse tone mapping operators:\n\n```\npython3 norvdpnet.py HDR_ITMO /home/user00/images_to_be_hdr/\n```\n\nWEIGHTS DOWNLOAD:\n=================\nWEIGHTS DOWNLOAD:\n=================\nWeights can be downloaded here (or automatically using ```norvdpnegt.py``` having a connection):\n\u003ca href=\"http://www.banterle.com/francesco/projects/norvdpnet/norvdpnet_sdr.pth\"\u003eSDR\u003c/a\u003e, \n\u003ca href=\"http://www.banterle.com/francesco/projects/norvdpnet/norvdpnet_hdrc.pth\"\u003eHDRC\u003c/a\u003e,\n\u003ca href=\"http://www.banterle.com/francesco/projects/norvdpnet/norvdpnet_tmo.pth\"\u003eTMO\u003c/a\u003e, and\n\u003ca href=\"http://www.banterle.com/francesco/projects/norvdpnet/norvdpnet_itmo.pth\"\u003eITMO\u003c/a\u003e.\n\nNote that these weights are meant to model ONLY determined distortions; please see reference to have a complete overview.\n\nDO NOT:\n=======\nThere are many people use NoR-VDPNet in an appropriate way:\n\n1) Please do not use weights_nor_sdr for HDR images;\n\n2) Please do not use weights_nor_jpg_xt for SDR images;\n\n3) Please do not use weights_nor_tmo for HDR images; only gamma-encoded SDR images!!!\n\n4) Please do not use weights_nor_itmo for SDR images;\n\n5) Please do not use weights for different distortions.\n\nDATASET PREPARATION:\n====================\nIf you want to create your own dataset for a given distortion (note you can apply more distortions), \nthe first step is to apply such distortion to a set of input original images. Then, the second step is to run\n[HDR-VDP](http://hdrvdp.sourceforge.net/wiki/) on all pair of images \u003coriginal, distorted\u003e saving the Q value of HDR-VDP.\nAt this point, you can discard the original images keeping only the distorted ones and the Q values output by HDR-VDP.\n\nFiles need to be organized using the following folder hierarchy:\n\n```\n__dataset_folder/:\n  |_______stim/\n  |_______data.csv\n```\n\nJPG/PNG/EXR/HDR/MAT files for distorted images go in the ```stim/``` folder, and the Q values and links to their\nrespective image need to be stored in the ```data.csv``` file. Please have a look at this ```data.csv``` file example:\n\n```\nDistorted,Q\nstim/img000.png,95.33\nstim/img001.jpg,73.23\nstim/img002.jpg,87.57\nstim/img003.jpg,71.23\nstim/img005.png,82.30\n```\n\nWhen using the .mat file format for HDR images, such images need to be stored as a variable ```image```.\n\n\nTRAINING:\n=========\nIf you want to train our metric, you need to run ```train.py``` file. This line shows how to\ntrain the metric for a dataset in the folder ```/home/users00/data1``` for 75 epochs with batch size 16\nand learning rate 1e-4:\n\n```\npython3 train.py /home/users00/data1 -e 75 --lr=1e-4 -b 32\n```\n\nNote that the folder ```data1``` needs to contain the file ```data.csv``` and the subfolder ```stim```.\n\nIn our paper, we trained SDR and HDR datasets with these paramters:\n\n```\nLearning Rate: 1e-4\nBatch Size: 32\nEpochs: 75\n```\n\nREFERENCE:\n==========\n\nIf you use NoR-VDPNet in your work, please cite it using this reference:\n\n```\n@inproceedings{Banterle+2020,\nauthor       = \"Banterle, Francesco and Artusi, Alessandro and Moreo, Alejandro and Carrara, Fabio\",\ntitle        = \"Nor-Vdpnet: A No-Reference High Dynamic Range Quality Metric Trained On Hdr-Vdp 2\",\nbooktitle    = \"IEEE International Conference on Image Processing (ICIP)\",\nmonth        = \"October\",\nyear         = \"2020\",\npublisher    = \"IEEE\",\nkeywords     = \"HDR-VDP, HDRI, HDR, SDR, LDR\",\nurl          = \"http://vcg.isti.cnr.it/Publications/2020/BAMC20\"\n}\n```\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbanterle%2Fnor-vdpnet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbanterle%2Fnor-vdpnet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbanterle%2Fnor-vdpnet/lists"}