|
你可能每天都在用图像识别:手机相册自动归类、何让刷脸支付、图像甚至智能相机的识别算硬宠物模式。但你有没有想过,模型这些“一眼认出”的光计本领,是飞快怎么教出来的? 今天我们就来聊聊一个经典的图像识别模型——ResNet50,以及如何让它在光计算硬件上飞快运行。运行 01ResNet50:50层深度的何让“视觉专家” ResNet50的大名,来自一个超级图库——ImageNet。图像 2007年,识别算硬斯坦福教授李飞飞为了让机器学会认东西,模型牵头建了这座“看图识字界的光计维基百科”:120万张训练图、1000个类别,飞快从猫狗汽车到吉他鹦鹉,运行应有尽有。何让2010年起每年一届的ILSVRC比赛,让AlexNet、VGG、GoogLeNet、ResNet等一众高手从这里走向世界。ResNet50正是2015年的冠军,直到今天,“ImageNet预训练模型”依然是图像识别任务的黄金起点。 ResNet50名字里的“50”不是瞎起的,它真的有50层神经网络。 你可以把它想象成一个多层筛选漏斗: 第0层:先粗粗看一遍,提取边缘、颜色等基本特征(输入224×224的彩色图,经过卷积、标准化、激活、池化,变成64×56×56的特征图); 1~4 stage(每个stage对应多层):层层递进,从纹理、局部形状,一直组合到完整的猫脸、车轮等高级语义; 最后一层:输出一个1000维的向量,告诉你是猫(第283类)的概率是0.85,是狗的概率是0.02…… 整个过程就像把一张照片不断放大、再提炼,最终浓缩成一句话:“我觉得这是XXX”。 02怎么教它认东西?像教小孩一样 训练ResNet50,和教小朋友认动物卡片差不多: 第一步:准备练习题 把图片统一裁成224×224,再随机剪掉一小块、左右翻一翻——这能增加难度,让它学会“缺了块耳朵也认得出来”。 第二步:做题、对答案、纠错 把图片扔进网络,得到预测结果,和真实标签比对(交叉熵损失函数算算差多远),然后用优化器(SGD) 把参数往正确方向微调一点点。 第三步:重复、重复、再重复 学的时候还得“降温”:一开始学习率设0.01,慢慢在10、20、30轮后降低到原来的1/10,这样参数才震荡得小,收敛得稳。 03给模型“瘦身”:量化,让它在光引擎上飞驰 今天,光计算加速卡已经可以完美运行这个经典图像分类模型。 我们知道,ResNet50全精度模型(32位浮点数)虽然跑得准,但它个头大、耗电。如果想让它在光计算芯片上实时跑图像分类,就必须进行“瘦身”。 怎么“瘦身”?量化——把32位小数缩成2位、3位、4位整数。 好比一张高清照片(32位色)压缩成GIF(256色),肉眼几乎看不出差别,文件却小了几十倍。 这里有两种“瘦身”方法: MOCA工具——PTQ算法 专门为光计算硬件定制的量化工具,可以把模型量化为8/4/3/2bit,并转换成光计算芯片能识别的ONNX格式。训练时先加载预训练好的全精度模型,再用少量数据“微调”一下,恢复因压缩损失的精度。 APOT算法 神经网络里的权重往往呈钟形分布,集中在0附近。传统方法把数值硬切成几段,很浪费。APOT的做法是:用几个2的幂相加来表示一个数值。 比如4bit量化,可以表示出0.0625、0.125、0.25、0.5、0.75……这些数值分布更符合真实权重,3bit量化ResNet-34,Top-1准确率只掉0.3%,几乎无损! 此外,APOT还做了权重归一化:先让权重变成均值为0、方差为1的标准分布,再裁剪和投影,量化效果更稳定。 通过量化“瘦身”将ResNet50部署到光计算硬件上,意味着我们给这位“视觉专家”装上了一个“光引擎”。这是经典算法与新硬件的“握手”,更是光计算与人工智能深度融合的一次重要探索。 我们离“光速AI”的愿景又近了一步。 |
