NIMA 算法测试图片清晰度

NIMA 算法测试图片清晰度

简介

该算法从两个不同的维度进行判断。首先是判断照片的质量等。
美观等主观方面,该算法也可以用来判断拍照水平。摄影爱好者可以用来提高自己的摄影水平。

如何检测图片

NIMA基于最新的深度物体识别(object detection)神经网络,能够从直接观感(技术角度)和吸引程度(美学角度)预测人类对图像的评估意见的分布。
文中提出的神经网络的打分具有与人类主观打分很相近的优点,因此可以用于图像质量评估工作。

NIMA算法是用来单纯检测图片质量,采用AVA数据集合训练。可以用于检查监控画面是否清晰、摄影拍照水平是如何。

NIMA是分数范围1~10分数越高图片质量越好 一般5以上代表图片质量正常,4.5~5代表质量普通,4.5以下代表质量模糊

from nima.inference.inference_model import InferenceModel
import os
import time
# add other package
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

from PIL import Image
加载模型
path_model = './model/pretrain-model.pth'

model = InferenceModel(path_to_model=path_model)
加载图片
idir = './image'
filelist = []
filenames = os.listdir(idir)
images={}
print(filenames)
for fn in filenames:
    if fn == '.DS_Store':
        continue   
    fullfilename = os.path.join(idir, fn)
    filelist.append(fullfilename)
    images[fn]=plt.imread(fullfilename)
    pass
print(filelist)
['clear.png', 'clear3.png', 'clear2.png', 'vague5.png', 'vague4.png', 'vague3.png', 'vague.png']
['./image/clear.png', './image/clear3.png', './image/clear2.png', './image/vague5.png', './image/vague4.png', './image/vague3.png', './image/vague.png']
进行运算
timeall = 0
results={}
for i in range(0, len(filelist)):
    path_image = filelist[i]
    try:
        time0 = time.time()
        result = model.predict_from_file(path_image)#1-10分
        time1 = time.time()
        timed = time1 - time0
        timeall = timeall + timed
        print(filenames[i],result["mean_score"],timeall)
        results[filenames[i]] = filenames[i]+':'+str(result["mean_score"])
    except Exception as e:
        print('error',e)
        continue
clear.png 5.0833471827209 0.15367412567138672
clear3.png 4.556422473862767 0.29868006706237793
clear2.png 5.269062386825681 0.44592714309692383
vague5.png 3.793891074601561 0.5606961250305176
vague4.png 4.713200172409415 0.6726200580596924
vague3.png 4.217929469421506 0.8103981018066406
vague.png 4.431853944435716 0.9465303421020508
显示结果
plt.figure(figsize=(50,50))

i =1;

dic={}
for im in images:
    plt.subplot(4,2,i)
    plt.imshow(images[im])
    title = im+':'+str(results[im])
    plt.title(results[im], fontsize=28)
    i+=1
plt.show()

结果展示

结果
  1. 图片 vague5 最模糊,分数为 3.79
  2. 图片 clear2 最为清晰 分数为 5.2

模糊的图片分数都在4.5以下,4.5以上的图片基本为清晰和正常
每次检测时间消耗在 0.15s 左右

图像质量评价经典算法是指一些用于评估图像质量的计算机视觉算法。其中,比较常用的算法包括BRISQUE(Blind/Referenceless Image Spatial Quality Evaluator)、RankIQA(Ranking-based Image Quality Assessment)和NIMA(Neural Image Assessment)。 BRISQUE算法是一种无参考图像质量评价算法,它基于图像统计特征来估计图像的失真程度。BRISQUE算法首先提取图像的局部特征,如高斯滤波器响应、梯度直方图等。然后,通过学习训练样本的统计模型,计算得到图像的质量得分。 RankIQA算法是一种基于排序的图像质量评价算法,它利用图像之间的相对比较关系来估计图像的质量。RankIQA算法首先将图像库中的图像两两配对,并利用人工标注的图像质量分级来训练机器学习模型。然后,通过该模型,对待评估图像对进行排序,得到图像的质量得分。 NIMA算法是一种基于神经网络的图像质量评价算法,它利用深度学习模型学习图像质量的特征表示。NIMA算法首先使用一个卷积神经网络提取图像的特征表示,然后通过全连接层将提取的特征映射到一个维度为10的质量空间。最后,通过对训练集中的图像进行打分,使用最大似然估计方法优化网络参数,得到图像的质量得分。 这些经典的图像质量评价算法代码可以在开源的机器学习框架中找到,如TensorFlow、PyTorch等。也可以在相关论文的项目网站或GitHub上下载到对应的实现代码。使用这些算法代码,我们可以方便地在大量图像数据集上评估图像的质量,为图像处理和图像相关任务提供有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值