CV业务落地用Transformer吗?
共 2085字,需浏览 5分钟
·
2021-07-04 01:39
点击上方“视学算法”,选择加"星标"或“置顶”
重磅干货,第一时间送达
导读
众所周知,Transformer 已经日常在CV学术领域“杀疯了”,那么在工业领域情况如何呢?
来源链接:https://www.zhihu.com/question/463585564/answer/1927466979
# 回答一
作者:花花
阿里巴巴高级技术专家
来源链接:https://www.zhihu.com/question/463585564/answer/1927466979
分类任务:transformer在分类任务上超过cnn让大家欣喜若狂,用pretrain进行finetune是一件合理的事情,但可能大家也有意识到,imagenet-1k, imagenet-21k等pretrain的跨domain问题。
其次,实际项目中,包括模型转化,量化,SDK集成直到模型上线仍然有很大量的工作,链条不完善的情况下,不太容易落地,同时在inference速度上当前没有足够好的优化,也是一个劣势。
检测任务:说完分类再来考虑检测,目前两套思路,一种是换掉backbone,以pretrain的方式进行下游任务,部署难度和分类任务一样;另一种是类似DETR这种训练方式,想要取得较好的精度需要更大量的数据,对于实际项目并不容易获取,且训练相较于普通检测方法多了5到10倍的时间,在没有取得很明显的提升的情况下,也不太适合盲目进行落地。
值得一提的几点:
1. 在public dataset 上杀疯了并不代表在实际业务数据上就能很好的work,这点就不展开了,做过落地的都明白。
2. 当前另外一个方向是自监督+transformer(SSL+Transformer),个人认为非常有潜力,包括微软的swin-ssl,Facebook的dino等,都是这方面的尝试
3. 落地场景不同,情况就不同,人脸上亿量级的数据如果要train from scratch,要直接硬上transformer,计算资源是非常非常可观的。
个人一点不成熟的观点,轻喷:
我认为现在transformer还处于不成熟的阶段,大部分的工作都在分类任务上进行尝试,因为训练成本较高,部分paper的实验结果并不solid,提点也有限,虽然百花齐放但还没有一个较为统一的认知和共识,下游任务(detection,segmentation)的验证也不是很solid。同时底层硬件,CUDA,训练框架对transformer的优化也不够完善。
类比CNN的发展历程,我认为目前transformer在CV领域应该还处于AlexNet阶段,距ResNet阶段还有一定的距离,一方面是research这条线继续推陈出新,另一方面是工程部署这条线的持续跟进(可以看到很多社区的框架也在多分布式训练,transformer训练进行优化和加速)。
需要另一个里程碑来统一大家的认知
落地是肯定要落地的,大家一起加油。
# 回答二
作者:OLDPAN
来源链接:
https://www.zhihu.com/question/463585564/answer/1940309173这个问题问得好呀,说不定楼主都已经踩过坑了 。
在我们组的CV中,识别组大部分的结构都包含transformer,也有一些LSTM和attention,其中有部分模型可以转化为tensorrt然后使用triton部署。相比原生的TensorFlow server要快些。不过仍有提升空间。
而检测组则没有使用transformer,一方面是因为原先的结构比较好部署(ssd,centernet,fcos等结构)比较熟悉,二是cv检测上的transformer结构还不是很成熟,没有比较通用性的backbone可以替换之前使用的resnet这类的通用backbone。
如果之后会使用transformer,我会考虑:
精度提升有多大,对于检测任务来说。如果不是质的提升(十分之一),尽量不考虑 速度能有多快,相比resnet50,同等精度或者高于这个精度能有多快 还是那句话,好不好部署,能否转化为tensorrt,转化后支不支持动态尺寸 这都是问题
其实也简单尝试了一下swin transformer,目前可以转化为tensorrt但只支持固定尺寸,在分类任务上,swin最小结构的精度比res50要高些,但速度嘛,慢了一倍多 ,唉性价比瞬间降低了。
对于我们来说,用不用transformer,关键还是取决于精度和速度能否超过之前的backbone,性价比高不高。不高的话,大概率不会用……
如果觉得有用,就请分享到朋友圈吧!
点个在看 paper不断!