自学内容网 自学内容网

LAR-IQA

LAR-IQA是一种开源、轻量级、准确且鲁棒的无参考图像质量评价(NR-IQA)模型。以下是对LAR-IQA的详细介绍:

一、模型背景与意义

随着深度学习技术的发展,无参考图像质量评估(NR-IQA)领域取得了显著的进展。NR-IQA模型不依赖于参考图像,仅通过分析单张输入图像来预测其质量,这在实际应用中非常有用,特别是在移动设备、监控系统和其他资源受限的环境中。然而,现有的高性能NR-IQA模型往往体积庞大,计算复杂度高,不适合在这些受限环境中部署。LAR-IQA模型的提出正是为了解决这一问题。

二、模型特点

  1. 轻量级:LAR-IQA模型在保持高精度的同时,显著降低了计算复杂度,模型大小仅为664KB,非常适合在实际应用中部署。
  2. 双分支架构:LAR-IQA模型采用了一种双分支架构,每个分支分别处理不同类型的图像失真。一个分支处理合成失真图像,另一个分支处理真实失真图像。这种设计使得模型能够更好地适应不同类型的失真,提高其在不同场景下的通用性。
  3. 多色彩空间训练:与传统的NR-IQA模型仅在RGB色彩空间进行训练不同,LAR-IQA在多个色彩空间(如YCbCr、Lab等)上进行训练。这种策略能够增强模型对不同视觉条件的鲁棒性,从而提高其在复杂环境中的表现。
  4. Kolmogorov-Arnold网络:在图像质量的最终回归部分,LAR-IQA采用了Kolmogorov-Arnold网络(KANs),这是一种新兴的回归模型。与传统的多层感知器(MLP)相比,KANs能够更准确地拟合图像质量评分,提高模型的预测精度。

三、实验结果与性能

LAR-IQA模型在多个公开数据集上进行了测试,并与当前最先进的NR-IQA模型进行了对比。实验结果显示,LAR-IQA不仅在准确性上达到了当前最先进模型的水平,而且在计算效率上有显著提升。在ECCV AIM UHD-IQA挑战赛的验证集和测试集上,LAR-IQA模型表现出色,达到了最先进的性能。此外,LAR-IQA的推理速度比最快的现有模型快了近5.7倍,这意味着该模型能够在资源受限的环境中快速运行,非常适合实际应用。

四、应用前景

LAR-IQA模型在图像质量评估领域做出了重要贡献。其轻量级、高效、准确且鲁棒的特点,使得它在图像压缩、传输、增强和生成等场景中有着广泛的应用前景。对于那些需要在实际工程中进行图像质量评估的研究者和工程师而言,LAR-IQA提供了一种高效、准确且鲁棒的解决方案。

五、开源与资源

为了促进进一步研究和应用,LAR-IQA的源代码以及训练和测试所使用的数据集链接已经公开。研究者和工程师可以通过这些资源快速复现实验结果,并在自己的项目中应用LAR-IQA模型。具体的论文地址、代码仓库和数据集链接可以在相关网站找到。
综上所述,LAR-IQA模型是一种具有创新性和实用性的无参考图像质量评价模型,它的出现为计算机视觉和图像处理领域的研究和应用带来了新的机遇和挑战。

README

LAR-IQA:一种轻量、准确且鲁棒的无参考图像质量评估模型
描述
本项目涉及使用MobileNet架构(可选包含KAN层)来评估和训练图像质量评估模型。
安装

  1. 克隆仓库:

git clone https://github.com/nasimjamshidi/LAR-IQA

2. 安装所需的依赖项:
    ```bash
pip install -r requirements.txt

使用
训练
运行训练脚本:

python scripts/main.py --csv_files path/to/your/train_csv1.csv path/to/your/train_csv2.csv --root_dirs /path/to/train_dataset1 /path/to/train_dataset2 --val_csv_file path/to/your/val_csv.csv --val_root_dir /path/to/val_dataset --output_path /path/to/output.csv --batch_size 32 [--use_kan] [--loss_type l2|plcc] [--color_space RGB|HSV|LAB|YUV]
  • –csv_files:必需。训练用输入CSV文件的路径。
  • –root_dirs:必需。训练数据集的根目录。
  • –val_csv_file:必需。验证CSV文件的路径。
  • –val_root_dir:必需。验证数据集的根目录。
  • –output_path:必需。保存输出CSV文件的路径。
  • –batch_size:可选。训练的批次大小。
  • –use_kan:可选。使用MobileNetMergedWithKAN模型。
  • –loss_type:可选。选择L2损失(l2)或皮尔逊相关损失(plcc)。
  • –color_space:可选。选择训练时使用的颜色空间。
    推理
    在单个图像上运行推理脚本:
python scripts/inference.py --image_path path/to/your/image.jpg --model_path path/to/trained_model.pt [--use_kan] [--color_space RGB|HSV|LAB|YUV]

选项

  • –use_kan:可选。使用MobileNetMergedWithKAN模型。
  • –loss_type:可选。选择L2损失(l2)或皮尔逊相关损失(plcc)。
  • –color_space:可选。选择训练时使用的颜色空间(例如,RGB、HSV、LAB、YUV)。
    目录结构
  • models/:包含模型定义。
  • data/:包含数据集类。
  • utils/:包含图像处理、训练和损失定义的实用函数。
  • scripts/:包含运行训练和评估的主脚本。
  • logs/:结果输出目录。
    许可证
    本项目使用MIT许可证。

测试

修改参数 ,测试文件夹、 kan 下载不了 就不用
运行 inference.py

写入结果excel

把文本放在1.txt里

# 导入正则表达式模块  
import re  
# 从collections模块导入defaultdict,用于存储不同场景下的图片及其质量分数  
from collections import defaultdict  
# 导入pandas库,用于数据处理和导出Excel文件  
import pandas as pd  
  
# 定义一个函数,用于从指定文件路径读取文本内容  
def read_text_from_file(file_path):  
    with open(file_path, 'r', encoding='utf-8') as file:  
        return file.read()  
  
# 设置文件路径(这里需要替换为实际的文件路径)  
file_path = '1.txt'  
  
# 调用函数读取文件内容  
input_text = read_text_from_file(file_path)  
  
# 创建一个defaultdict,用于存储不同场景下的图片及其质量分数列表  
scene_dict = defaultdict(list)  
# 初始化当前场景变量  
current_scene = None  
  
# 编译正则表达式,用于匹配场景名称  
scene_pattern = re.compile(r"-{16}(.*?)-{16}")  
# 编译正则表达式,用于匹配图片名称及其质量分数  
quality_pattern = re.compile(r"(.*?)\.jpg quality score: ([\d\.]+)")  
  
# 将读取的文本按行分割  
lines = input_text.splitlines()  
  
# 遍历每一行  
for line in lines:  
    # 去除行首尾的空白字符  
    line = line.strip()  
  
    # 尝试匹配场景名称  
    scene_match = scene_pattern.match(line)  
    if scene_match:  
        # 提取场景名称,并更新当前场景变量  
        current_scene = scene_match.group(1).strip()  
        continue  
  
    # 尝试匹配图片名称及其质量分数  
    quality_match = quality_pattern.match(line)  
    if quality_match and current_scene:  
        # 提取图片名称  
        image_name = quality_match.group(1).strip()  
        # 提取质量分数,并转换为浮点数  
        quality_score = float(quality_match.group(2))  
        # 将图片名称和质量分数添加到当前场景对应的列表中  
        scene_dict[current_scene].append((image_name, quality_score))  
  
# 将defaultdict转换为普通的dict  
scene_dict = dict(scene_dict)  
  
# 使用pandas的DataFrame构造数据,其中每个场景对应一列,列中的元素是图片名称和质量分数的字典  
df = pd.DataFrame({key: pd.Series(dict(value)) for key, value in scene_dict.items()})  
# 转置DataFrame,使得每个图片名称对应一行,场景名称作为列  
df = df.T  
# 将DataFrame导出到Excel文件  
df.to_excel('image_quality_scores.xlsx', index=True)

原文地址:https://blog.csdn.net/qq_43620967/article/details/142854827

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!