Models icon indicating copy to clipboard operation
Models copied to clipboard

开源之夏:MegEngine 补充跨模态模型的实现——CLIP

Open Asthestarsfalll opened this issue 3 years ago • 8 comments

目前完成了CLIP各个模型的前向对齐,绝对误差控制在1e-6内,精度在ImageNetV2 matched-frequency上与官方实现的精度对比,其中官方实现使用PIL前处理,本实现使用opencv,有小幅涨点

模型 text误差 image误差 top-1 acc top-5 acc
RN50 3.25e-07 4.88e-08 53.50%(52.9) 81.65%(81.41)
RN101 2.82e-07 7.70e-08
RN50x4 3.34e-07 1.21e-07
RN50x16 4.94e-07 1.47e-07
RN50x64 6.12e-07 9.17e-07
ViT-B/32 3.09e-07 3.56e-07 56.62% (55.96 ) 83.62% (83.41)
ViT-B/16 3.11e-07 3.06e-07
ViT-L/14 5.04e-07 7.15e-07
ViT-L/14@336px 4.32e-07 6.98e-07

float16下精度对比:

模型 top-1 acc top-5 acc
RN50 53.54(52.91) 81.65(81.42)
ViT-B/32 56.61 (55.89) 83.63 (83.46)

转换后的模型已全部上传谷歌云盘,有劳上传到megengine的网站上。


进展:

  • [x] MultiheadAttention编写
  • [x] MultiheadAttention对齐
  • [x] CLIP编写
  • [x] CLIP float32对齐
  • [x] CLIP float16对齐
  • [x] CLIP预训练权重转换
  • [x] 推理结果
  • [x] 文档

测试发现float16下conv与linear与torch有较大的误差,测试代码

Asthestarsfalll avatar Jul 04 '22 11:07 Asthestarsfalll

Amazing Work.

ArtShiba avatar Jul 04 '22 11:07 ArtShiba

精度在ImageNetV2上与官方实现约有4%的掉点(主要误差可能集中在图像处理部分,本实现采用opencv中的双三次插值,官方实现使用PIL,经过测试输入约有1e-2级别的误差)

这个掉点有点多,感觉只是差值方式应该没这么大差异,想确认一下图像 RGB channel 顺序是否有问题?(PIL 是 RGB,opencv 是 BGR)

xxr3376 avatar Jul 05 '22 02:07 xxr3376

这个掉点有点多,感觉只是差值方式应该没这么大差异,想确认一下图像 RGB channel 顺序是否有问题?(PIL 是 RGB,opencv 是 BGR)

检查了一下,是转换了的 image 这里的4%计算方式是差值除以原始值,并不是下降了4%,RN50,top-1 acc下降了2.43,top 5 acc 下降了1.71

晚点我测试下使用PIL的精度

Asthestarsfalll avatar Jul 05 '22 03:07 Asthestarsfalll

这个掉点有点多,感觉只是差值方式应该没这么大差异,想确认一下图像 RGB channel 顺序是否有问题?(PIL 是 RGB,opencv 是 BGR)

检查了一下,是转换了的 image 这里的4%计算方式是差值除以原始值,并不是下降了4%,RN50,top-1 acc下降了2.43,top 5 acc 下降了1.71

晚点我测试下使用PIL的精度

尝试使用 np.testing.assert_allclose(y_torch, y_mge) 看看统计值吧

ArtShiba avatar Jul 05 '22 06:07 ArtShiba

Multimodel 是不是应该叫 Multimodality 更合适?

xxr3376 avatar Jul 05 '22 10:07 xxr3376

@xxr3376 @MegChai Hi, 是否可以先进行review呢?

Asthestarsfalll avatar Sep 08 '22 08:09 Asthestarsfalll

之前沟通过fp16的精度问题,求补充下目前的精度呗

Zhiy-Zhang avatar Sep 13 '22 14:09 Zhiy-Zhang

之前沟通过fp16的精度问题,求补充下目前的精度呗

精度已经补充在描述里了,和float32差别不大

Asthestarsfalll avatar Sep 13 '22 14:09 Asthestarsfalll

LGTM

Zhiy-Zhang avatar Oct 25 '22 08:10 Zhiy-Zhang