• 用人工智能压缩图像的尝试和计算


    设图像为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)

  • 相关阅读:
    OpenGL编程(一):三角形大作
    geopandas 通过sjoin进行空间关系连接
    esxi下实现ikuai相同的两个网卡,单独路由配置
    太赞了!美团T9大牛硬肝仨月总结出Linux高性能服务器编程
    MySQL-无锁读
    (华师2021年秋季课程作业以及答案3)论述东西方文化差异对建筑风格的影响。
    Repetition Improves Language Model Embeddings论文阅读笔记
    【树】在二叉树中增加一行 层序遍历
    安装RabbitMQ
    Go语言并发控制
  • 原文地址:https://blog.csdn.net/proorck2019/article/details/128152771