Vision Transformer (ViT) 用于图片分类

Поделиться
HTML-код
  • Опубликовано: 15 сен 2024
  • Vision Transformer (ViT) 是很新的模型,2020年10月挂在 arXiv 上,2021年正式发表。在所有的公开数据集上,ViT 的表现都超越了最好的 ResNet。前提是要在足够大的数据集上预训练 ViT。在越大的数据集上做预训练,ViT 的优势越明显。
    课件: github.com/wan...
    参考文献:
    - Dosovitskiy et al. An image is worth 16×16 words: transformers for image recognition at scale. In ICLR, 2021.

Комментарии • 42

  • @user-ud7nv6fp6q
    @user-ud7nv6fp6q 8 дней назад

    感謝分享!

  • @UntitledBoxer
    @UntitledBoxer 2 месяца назад

    講得很清晰,感謝分享!

  • @jianwang8020
    @jianwang8020 2 года назад +1

    讲的非常好, 重点明确,深入浅出

  • @rikola2914
    @rikola2914 3 года назад +2

    非常清晰,赞

  • @user-il9vo4dj4e
    @user-il9vo4dj4e 3 года назад +3

    讲的太好了!学习了很多,谢谢🙏

  • @SJMao
    @SJMao 2 года назад +1

    讲得非常清晰,非常感谢!

  • @minghaoliu1832
    @minghaoliu1832 3 года назад +2

    哇居然更新了! 抢前排

  • @tedq4303
    @tedq4303 3 года назад +2

    讲的太好了

  • @bobby2636
    @bobby2636 Год назад

    课件做的太棒了,谢谢分享

    • @ShusenWang
      @ShusenWang  Год назад +1

      你的头像牛逼,哈哈哈

  • @Flyforward226
    @Flyforward226 2 года назад +5

    感谢老师。有个问题,如果我们并不需要C1~C9的话(只需要C0),那么我们为什么要去计算他们呢?或句话说C1~C9用来做什么呢

  • @fxls_
    @fxls_ 7 месяцев назад

    看完了 感谢老师

  • @tianyili7148
    @tianyili7148 Год назад

    讲得真清楚!赞

  • @jellyfish4096
    @jellyfish4096 3 года назад +1

    讲得好清楚🥰

  • @zhangkin7896
    @zhangkin7896 3 года назад +1

    讲的好棒啊!!!

  • @LycheeDesign
    @LycheeDesign Год назад

    讲的很细。不错

  • @mohammadsalah2307
    @mohammadsalah2307 3 года назад +1

    很好!支持!

  • @aroonsubway2079
    @aroonsubway2079 2 года назад +3

    感谢老师,想确认一下CLS的作用和用法。您之前BERT的视频也看过了。我对CNN比较熟悉,输入一个image,输出就是预测向量,很直观,而ViT中,最后得到的c0其实是已经包含了image的全部信息了吧, 为什么在image之外还必须有一个CLS作为额外输入呢?是为了整齐吗?或者换个说法,比如CIFA10分类,CLS的值具体是0,1, 2,... 9 吗 还是说不需要任何有意义的值? 假如没有CLS的话,直接z0...zn通过全相联产生c0应该也能达到目的吧?感觉自己的理解好初级,还请老师指点。

    • @ShusenWang
      @ShusenWang  2 года назад +2

      CLS是个符号,它的Embedding是自动学出的。目的是这样的。如果9个patch作为输入,Attention的输出就是9个向量,可最终只需要一个向量,这就是问题所在。用CLS位置上刚好一个向量,用作计算输出。

    • @aroonsubway2079
      @aroonsubway2079 2 года назад +2

      @@ShusenWang 谢谢老师回复。我主要纠结的地方是CLS和输入图像的GT是什么关系?您说 “CLS是个符号,它的Embedding是自动学出的”,那可不可以理解为视频7:55中CLS携带着image class的信息(比如输入图片是猫 CLS=1,如果是狗,CLS=2,重要的是CLS是不是random或是常数)被Embed转化为z0 , 然后Embed的参数在back propagation时被更新?
      但如果只让z1~z9通过Encoder生成c1~c9的话,image信息一点都没有丢失,所以用某种方法吧c1~c9合并为一个c0再与GT计算loss应该也行吧(当然那就又变回类似CNN的结构了)?但如果是为了“整齐且充分利用自注意力层的结构”而定义CLS->z0->c0,就能说得通了。不好意思又问这么多,我思维总绕不出CNN : )
      我在想CLS->z0->c0这条路的好处是,虽然它不引入任何image信息(?)但是自注意力的作用下c0就能包括x1~x9的信息,所以直接用c0就好,而不必像我说的想方设法融合 c1~c9 (比如再加一层FC layer),这是最大的好处。那么为什么不可以直接用c1来做classification呢?难道是c1虽然也包含x1~x9的全部信息,但是不如c0中立?

    • @jizhang02
      @jizhang02 2 года назад

      @@aroonsubway2079 我觉得 c1 到c9是每个patch,特征不全面,所以没有用来分类。c0是定义为可以学习的CLS,而且因为c0到c9的可训练参数都是一样的,共享的,所以就用c0了。我是这么认为的。不知道您怎么看?

    • @user-ro7oe5fo6b
      @user-ro7oe5fo6b 2 года назад +1

      @@aroonsubway2079感觉CLS应该不会和图像GT有关系,否则这就是在cheating吧。你网络推理的时候,也不会提前知道样本的GT是什么,感觉CLS是一个固定的输入,但是最后会因为输入样本收到影响,从而产生不同的c0向量

    • @denaxu8824
      @denaxu8824 2 года назад +2

      @@ShusenWang 感谢老师,我也有同样的困惑,那CLS具体是什么呀? c1-c9是图像patch , c0具体是什么呢?

  • @waltercartwright5114
    @waltercartwright5114 2 года назад

    good video!!!

  • @tr77229591
    @tr77229591 2 года назад

    very good

  • @gmaiI.com.
    @gmaiI.com. 2 года назад

    谢谢

  • @麦敬睿
    @麦敬睿 3 месяца назад

    老师有课件的ppt文件嘛,想做课程展示。

  • @王小虎-s5x
    @王小虎-s5x 3 года назад +2

    好想和老师一起学习啊

  • @sharren9374
    @sharren9374 9 месяцев назад

    有华文的突然好感动哈哈

  • @macknightxu2199
    @macknightxu2199 Год назад

    skip connection, batch normalization? 是否这样拼写呢?

  • @wanghuaxin435
    @wanghuaxin435 3 года назад +1

    有transform的训练代码吗?

  • @work4ai
    @work4ai 3 года назад

    尊敬的王老师您好,为什么说没有位置编码ViT的输出说相同的呢?如果我们把图片划分成patches,按照从左到右,从上到下的顺序输入不就行了?这样Z1, Z2, ..., Zn的相对位置本身就有位置信息呀?

    • @hypl4706
      @hypl4706 2 года назад

      建议复习一下self-attention方法,这一方法并不会学到序列的位置信息

  • @user-qy2le2fo7r
    @user-qy2le2fo7r 3 года назад

    哇,这个视频居然还有一个中文版的!

  • @liubo19831214
    @liubo19831214 2 года назад

    0:8:36 王老师,为什么保留c_0 抛弃其他的?比如保留c_k(k=0,1,2,3中的任意一个)抛弃其他的可以吗?

    • @ShusenWang
      @ShusenWang  2 года назад +1

      因为c0是classification符号位置上的输出。不能用其他位置上的。

  • @user-pr8gf8tn1s
    @user-pr8gf8tn1s 3 года назад +1

    老师在B站有账号嘛,讲得很好,但是每次看需要特殊手段有点不方便

  • @drunknoodle3188
    @drunknoodle3188 2 года назад

    positional encoding 编码的向量应该是embedding吧, 请问可以是one hot吗?

    • @ShusenWang
      @ShusenWang  2 года назад

      通常用cosine之类的编码,在attention is all you need那篇文章里有讲。

  • @shiauthiewu5367
    @shiauthiewu5367 2 года назад

    transformer 在图像上的应用是没有 Decoder 的么?

    • @ShusenWang
      @ShusenWang  2 года назад

      如果做caption生成,就有decoder了