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 左右

你可能感兴趣的:(AI,云计算)