多模态底层学习
📑 目录
前言
最近一直被ai中如何实现多模态所烦扰,于是决定学习下图片等是如何处理的,不过学习下框架也可以解决(具体就是字段如何填写),但感觉只学习框架肯定是理解不透彻的
存储
写代码中,经常看到base64格式,实际上就是将图片的二进制转变为字符,将字节流按每3个字节(24个比特位)为一组,将一组又拆分为4个6位组,即6个单元,则每个单元位6个比特位–>(A-Z, a-z, 0-9, +, /)
举个微型例子:
假设图片头部有 3 个字节的二进制数据 [010010] [100101] [000100](十六进制:0x4A 0x50 0x47)。 它会被重新拆分为 4 个 6 位值:010010、100101、000100、000111。 查表后,18 对应 S,37 对应 l,4 对应 E,7 对应 H。所以这 3 个字节就变成了文本字符串 SlEH
不过图片的二进制并非直接就是RGB颜色的值,它有文件头,元数据和图像数据
文件头
用于标识是什么文件
JPEG / JPG:开头固定是 FF D8 FF E0(十六进制)。如果看到 FF D8,系统就知道“这是一个 JPEG 文件”。
PNG:开头固定是 89 50 4E 47 0D 0A 1A 0A。其中 50 4E 47 是 ASCII 码的 PNG 字母。如果这些 0101 对不上,电脑就认为文件损坏了。
元数据
记录相关属性,记录了这张图片的各种属性,而不是图像本身。 它包含:
图像尺寸:宽是多少像素、高是多少像素(如 1920 x 1080)。
色彩空间:是 RGB(红绿蓝)还是 CMYK(印刷色)。
拍摄参数(EXIF):如果是手机/相机拍的,这里还藏着拍摄时间、光圈、ISO、GPS 经纬度坐标等。
量化表 / 霍夫曼表(针对 JPEG):这是解码时要用到的“密码本”,告诉解码器后续的数据该如何还原。
图像数据
这里就涉及到算法相关了,大概就是通过算法压缩数据和解数据,相关算法:
离散余弦变换系数(DCT):将原本的像素块(8x8 格子)通过数学公式,转换成了代表“亮度变化频率”的数据。比如,0101 可能代表“这块区域颜色变化剧烈”或“这块区域整体偏暗”,而不是代表“第 100 行第 50 列的像素是红色”。
霍夫曼编码(Huffman Coding):为了进一步压缩体积,JPEG 会把刚才那些系数中大量的 0 给省略掉,用更短的 0101 组合来表示高频出现的数值。
量化后的残差:通过丢弃人眼不敏感的高频细节(有损压缩的核心),剩下的 0101 其实只是“近似值”。
评论
加载评论中...