图像分类模型介绍
自建1300类常见物体标签体系,覆盖常见的日用品,动物,植物,家具,设备,食物等物体,标签从海量中文互联网社区语料进行提取,保留了出现频率较高的常见物体名称。模型结构采用Transformer经典的最新的ViT-Base结构。
ViT模型原理
1、ViT模型首先把图片分成多个patch块,然后组成一个patch块的序列,每个patch块都会经过一个线性投射层。
2、同处理NLP任务一样,patch embedding加上了一个position embedding,即加上位置编码信息。加上位置编码信息的原因是:自注意力是两两之间去做交互,本身不存在一个顺序问题,但对图片而言,图片是一个整体,它的patch序列有自己的顺序,如果顺序颠倒就不再是原来的图片,所以我们加上了位置信息。
3、加上了位置编码信息后整体的token就既包含了patch块原本有的图像信息,也包含了patch所在的位置信息,我们得到一个一个的token后,接下来的处理基本和处理NLP任务一样,直接输入给一个Transformer Encoder,Transformer同样会反馈给我们很多的输出。
4、ViT模型借鉴了BERT模型中的extra learnable embedding,这是一个叫做分类字符的CLS,在ViT模型中也加入了一个特殊字符如下图中线性投射层后面序列第一个0位置的*,这其实就是一个标记符,当然如上述所说,它也有自己的位置信息并且它的位置信息永远是0。那加入特殊字符的原因是什么呢?因为所有的token都在和其他的token做交互信息,所以原文相信class embeddig即那个标记符也能够从其他的embedding中学到有用的信息,然后它最后也有一个输出,并且只需要根据这个特殊字符的输出做出判断就可以。
5、MLP Head 是一个通用的分类头,最后用交叉熵函数去进行模型的训练。
期望模型使用方式以及适用范围
模型适用范围较广,覆盖大部分日常生活常见的物品类目,包括日用品,动物,植物,家具,设备,食物等。也可作为下游任务的预训练backbone
预处理
- Resize:先将原始图片的短边缩放至256
- Normalize:图像归一化,减均值除以标准差
- CenterCrop:裁切为224x224
在线体验
{
"Code": 200,
"Data": {
"computation_time": "0.06s",
"data": {
"labels": [
"打字机",
"机械臂",
"照相机",
"按钮",
"打印机"
],
"scores": [
0.9145427942276001,
0.00124357920140028,
0.000988196930848062,
0.0006824651500210166,
0.0005695905419997871
]
}
},
"Message": "success",
"RequestId": "63e818c9-4d54-452e-be63-e63fe06c00ed",
"Success": true
}
找了一张比较物品比较多的图片用来在线测试,对于测试结果还是很准确的,快速正确的识别了图片中的物品。该模型可以广泛的应用于人们的生活。可以帮助人们去解决生活和工作的中的很多问题,比如垃圾分类,安检,等方面,操作简单,方便快捷,可以帮助人们有效的提高工作效率,减少工作失误。