特征向量是什么:图像搜索为什么不逐个像素比对
上一篇笔记从「拍张照片找同款」聊到图像搜索的入门概念,这篇往里走一步,讲清一个核心问题:计算机判断两张图片「像不像」,到底在比什么?
为什么不直接比像素
最直觉的办法是把两张图片逐个像素对齐比较。问题很明显:同一件衣服,换个角度、换个光线、离镜头远一点,像素层面几乎处处不同;反过来,两件完全不同的衣服,如果构图和色调接近,像素差异可能反而不大。
也就是说,像素记录的是「光怎么落进传感器」,不是「图里是什么」。找同款要比的是后者。
特征向量:把「像不像」变成算距离
深度学习模型会把一张图片压缩成一串数字,也就是特征向量。可以把它理解为图片的「语义指纹」:款式、版型、纹理、颜色分布这些决定一件商品「是什么」的信息被编码进向量里,而角度、光线这类干扰因素被尽量过滤掉。
于是判断相似度就变成了一个数学问题:两个向量在空间里离得越近,两张图片就越像。常用的度量是余弦相似度和欧氏距离。原本模糊的「像不像」,变成了可计算、可排序的「距离有多近」。
海量图库为什么还能毫秒级返回
电商图库动不动是亿级图片。如果每来一张查询图,都要和库里每一张算一遍距离,速度根本扛不住。
实际系统分两步走:
- 离线建库:商品图片提前逐张提取特征向量,建好向量索引存进库里,这一步在用户搜索之前就完成了;
- 在线查询:用户上传图片后,只需提取一次特征,再通过向量索引(近似最近邻搜索)快速圈出最接近的一批候选,按相似度排序返回。
索引的本质是拿一点点精度换速度:不保证把全库每一张都比过,但保证在毫秒级返回足够好的结果。再配合入库时打好的品类等标签先收窄范围,精度和速度可以兼得。
效果好不好,取决于什么
从学习和实践中总结,影响找同款效果的主要是四点:特征模型本身的好坏、图库图片的质量与规模、查询图的主体是否突出清晰、标签是否规范。这也解释了为什么同一项技术,在不同平台上的体验差距可以很大——模型之外,图库运营同样是功夫。
小结
图像搜索的核心链条可以归纳为一句话:用特征向量把图片变成可计算的语义指纹,用向量索引让海量检索快起来。理解了这一层,再去看各家云服务提供的图像搜索 API(比如创建实例、添加图片打标签、上传图片搜索这套流程),就能明白每一步在整条链路里处于什么位置。
下一篇打算结合一个具体的应用实践,聊聊商家侧从建库到上线一个「拍照找同款」功能的大致路径。
- 点赞
- 收藏
- 关注作者
评论(0)