借助 AI 从 0 到 1 搭建图像对比服务(三):CLIP 特征提取——AI 帮我落地一个我压根没碰过的模型
一、场景:怎么让机器"看懂"一张图
上一篇方案定下来了,四只眼睛的骨架有了。这一篇开始,我们进入第一只眼睛——让机器像人一样"看懂"图,判断两张图内容像不像。
这步要用到的东西叫 CLIP。说实话,这词我之前只在网上扫过几眼,从没碰过,更别提落地了。
但这次我心里有底,因为我打算用前面说过的AI话术:先让 AI 把它讲成人话,再让它给代码,我自己验收。这一整篇,就是这个过程的实录。
二、先让 AI 把 CLIP 讲成人话
我没急着让它写代码,第一句话是问"这是啥、为啥能比图"。
我要做图像相似度对比,你建议用 CLIP。 但你先别写代码。先用人话给我讲清楚: 1. CLIP 到底是个啥,它怎么做到"看懂"图的 2. 为什么它能判断两张图像不像 3. 我这个场景(中文、工业图)该用哪个版本 我要先听懂,再动手。AI 给我的解释,我翻译一下大意:
CLIP 干的事,就是把图变成一串数字。同一张图,不管你怎么旋转、缩放,只要内容没变,变出来的数字就接近。两张图内容像不像,比这两串数字离得近不近就行——离得近就是像,离得远就是不像。
它还补了一句关键的话:这串数字代表的是"内容的意思",不是"像素长什么样"。所以一只猫的图和一张猫的简笔画,数字也会比较近——因为意思都是"猫"。这正是我想要的:我要比的是"内容像不像",不是"像素一模一样"。
我把这段话复述给自己听——“把图变成一串代表意思的数字,比数字远近”,通了。这就是第一关:先把原理验收过,再往下走。
关于版本,它建议用 ChineseCLIP(中文版的 CLIP),因为我的场景是中文工业图,中文版对中文场景理解更准。我采纳了。
三、给 AI 的指令:让它一步步落地
原理过了,我开始让它落地。但我不让它一次吐一坨,而是逼它一步步来,每步先说在干啥:
现在落地 CLIP 特征提取。约束: - 用 ChineseCLIP(ModelScope 的) - 每一步先讲你要干啥、为啥这么干,再给代码 - 图片输入是网址,不是本地文件 分这几步给我: 1. 加载模型 2. 把图预处理成模型能吃的样子 3. 提取特征(那串数字) 4. 算两张图的相似度你看,我又是先把规矩砸给它:讲清楚每步在干啥、用哪个版本、输入是网址。这就是"约束前置"。
四、AI 的产出 + 我的验收:四个步骤
AI 按四步给了东西,我一步一步验收。其中有两个地方我卡过,正好拿出来讲。
第 1 步:加载模型
这步没太多花样,就是把 ChineseCLIP 的"模型本体"和"处理器"加载进来。处理器是干啥的?AI 说:模型只认它自己习惯的输入格式,处理器就是负责把图"翻译"成模型能吃的样子。
第 2 步:图片预处理
这步它干了三件事:先检查图能不能用(质量校验,烂图直接报错),再把图缩放到模型要的尺寸(Resize),最后交给处理器转成模型要的格式。
第 3 步:提取特征
这步就是真正"把图变成一串数字"那一下,调用模型的一个方法(get_image_features)拿到那串数字。
第 4 步:算相似度(这里我卡过)
这一步 AI 给我抛了个我不懂的东西:归一化。它说算相似度之前,要先把那串数字"归一化"一下。
我第一次见这词,没敢直接用。我让它讲:
等等,"归一化"是啥?为什么要这一步?不归一化会怎样?先讲人话。AI 给的解释,大意是:每张图变出来的那串数字,长短可能不一样。如果不归一化,你比的不是"方向像不像",而是"谁的数字长",这不公平。归一化就是把每串数字都拉成一样长,这样比的就是方向,方向近才是真的像。
我拿个比喻复述给自己听:两根箭头,比它们指的方向像不像,得先把它们都拉成一样长再比,不然长的那根永远占便宜。通了。
这就是第二个关键点:遇到不懂的词,立刻停下来让它讲人话,复述通了再继续。我没跳过"归一化"直接用,要是跳了,后面相似度算出来不对,我都不知道哪儿出的问题。
五、踩的坑:相似度到底用哪个算法算
这里还有一个坑。算"两串数字离得多近",AI 一开始给了三种算法让我选:余弦相似度(cosine)、欧氏距离(L2)、点积(dot)。
我又不懂这三个该选哪个。我让它给我讲区别:
这三种相似度算法,在我的场景里该选哪个?为什么? 分别讲一下它们在比什么、有啥区别。别只给结论。AI 给的解释大意是:cosine 比的是方向,L2 比的是绝对距离,dot 既受方向影响也受长度影响。我的场景已经归一化了(长度都一样了),那 dot 和 cosine 就等价了;L2 也能用,但归一化后 cosine 更直观、范围固定在 -1 到 1。
最后我让它默认用 cosine,同时把三种都留着,万一以后要换。这个决策不是我拍脑袋,是听完解释后做的判断。
六、小结:AI 在"陌生技术落地"上的能力
到这一篇结束,CLIP 这块跑通了。我对 AI 在"落地陌生技术"这个环节的能力,心里有数了:
- 它特别会"把黑话讲成人话":归一化、相似度算法这些词,它都能用比喻讲明白。这是我用它最值钱的一招——遇到不懂的词,立刻停下来让它讲,不要跳。
- 它不会替你判断"该选哪个":三种相似度算法它会列给你,但选哪个,它只能给建议,决定得你来。你得听完解释,自己做主。
- 你得愿意"反向审"它:每一步它讲完,我都复述给自己听,通了才往下走。这一步偷懒,后面全是雷。
说白了,CLIP 这块从头到尾,我没写过任何代码,但我"全程都懂在干嘛"。这就是上一章说的那句话落地了:AI 把门槛从"我得先学会写",降到了"我得能判断对不对"。
七、下篇预告
CLIP 这只眼睛能看"内容像不像"了。下一篇我们进第二只眼睛——照片的"出生证":EXIF。