设图像为3000×4000像素,神经元网络为(2,6,6,3),它有2个输入,为(x,y),3个输出,为(R,G,B)。输入(x,y)坐标,得到一个像素的值。
参数定义:
n:神经元网络中的参数个数
N:运行神经元网络一次的运算量
m:训练样本个数,在这里就是像素的个数
p:训练几轮
L1:训练时的运算量
L2:播放时的运算量
具体计算:
n=18+42+21=81参数
N≈100次
81参数×4字节/参数=324字节
设压缩率约1/100,则压缩前32400字节
32400字节÷3字节/像素=10800像素
约100×100像素
每幅图有3000/100×4000/100=1200包
一个包里有一个神经元网络
每包中:
p=100,m=10000,N=100
L1=pmN2=10G
L2=mN=1M
总的运算量:
L1=10G×1200=12T
L2=1M×1200=1.2G
压缩率=324字节÷30000字节=1/92
设计算机的运算能力为10G次/秒
T1=12T÷10G=1200秒=20分钟(压缩一张照片)
T2=1.2G÷10G=0.12秒(显示一张照片)
每个包里有10000像素,对偏差最大的10个像素进行纠正。纠正一个像素需要5字节:
x:100个值,7比特
y:100个值,7比特
R:±128,8比特
G:±128,8比特
B:±128,8比特
共38比特,占用5字节。
数据结构:
len:2字节
ANN:324字节
纠正:5×10字节
压缩率=(2+324+5×10)×1200/(3000×4000×3)=1/80
如何计算像素的偏差?
Δcolor2=ΔR2+ΔG2+ΔB2
取偏差较大的像素进行纠正。
如果包中的图像很简单,就没有必要使用复杂的神经元网络。分多种情况,从简单到复杂,编码时依次尝试,直到编码结果“合格”。
①纯色,(R,G,B),3字节
②(2 3),n=9,36字节
③(2 4 3),n=12+15=27,108字节
④(2 6 6 3),n=18+42+21=81,324字节
所谓的合格,就是求两幅图像的“距离”,包括平方距离和指数距离。
Σ(ΔR2+ΔG2+ΔB2)
Σ(eΔR+eΔG+eΔB)