日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ECCV 2020 DETR:《End-to-End Object Detection with Transformers》论文笔记

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ECCV 2020 DETR:《End-to-End Object Detection with Transformers》论文笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 簡介
  • 動機
  • 貢獻
  • 方法
  • 實驗

簡介

本文出自FaceBook AI,方法很新穎,不同于已有的R-CNN一系列,也不同于Yolo一系列,也不同于FCOS、CenterNet等最新的Anchor Free模型。作者將目標檢測視為direct set prediction problem(直接集預測)。
下載鏈接
本篇博客的部分內容參考自這里

動機

simplify pipelines.

貢獻

本文將Transformer融入目標檢測的pipeline,實現了真正的No Anchor。實驗結果上,能夠超過精調的Faster R-CNN。

方法

方法的整體架構如下圖所示。

更為具體的結構圖如下圖所示。其實就三個部分:backbone、transformer (encoder + decoder)、prediction heads。其中,backbone就是傳統的CNN結構,用于提取圖像的2D信息。encoder和decoder一會再說。prediction heads用于對decoder的輸出進行分類。

下面說encoder和decoder。下圖是更加清晰的encoder和decoder結構,來自原文的附錄。這里比較有意思的是Object queries,我一直也沒太理解它的直觀意思,下面說一下我的大致理解。從作者的代碼中,能夠看出,所謂的Object queries其實是一個大小為100×2×256100 \times 2 \times 256100×2×256的變量,而且是通過訓練確定的!這里的100是個超參數,表示對于每張圖片,預測100個bboxes。設為100的原因是,數據集中有90個類別,100剛好合適。

有兩點值得注意的 1. 和NLP中的transformer不太一樣,DETR中在decoder部分將Object queries一起作為輸入,而非序列化地一個一個輸入。2. 只用image features進行編碼是不夠的,需要融入位置信息,也就是上圖中的Spatial positional encoding部分。這部分我沒具體看,代碼里是這樣的,有興趣的可以分析一下。

# spatial positional encoding def forward(self, tensor_list: NestedTensor):x = tensor_list.tensorsmask = tensor_list.maskassert mask is not Nonenot_mask = ~masky_embed = not_mask.cumsum(1, dtype=torch.float32)x_embed = not_mask.cumsum(2, dtype=torch.float32)if self.normalize:eps = 1e-6y_embed = y_embed / (y_embed[:, -1:, :] + eps) * self.scalex_embed = x_embed / (x_embed[:, :, -1:] + eps) * self.scaledim_t = torch.arange(self.num_pos_feats, dtype=torch.float32, device=x.device)dim_t = self.temperature ** (2 * (dim_t // 2) / self.num_pos_feats)pos_x = x_embed[:, :, :, None] / dim_tpos_y = y_embed[:, :, :, None] / dim_tpos_x = torch.stack((pos_x[:, :, :, 0::2].sin(), pos_x[:, :, :, 1::2].cos()), dim=4).flatten(3)pos_y = torch.stack((pos_y[:, :, :, 0::2].sin(), pos_y[:, :, :, 1::2].cos()), dim=4).flatten(3)pos = torch.cat((pos_y, pos_x), dim=3).permute(0, 3, 1, 2)return pos

實驗

下圖是在COCO上的實驗結果,主要和Faster R-CNN進行了對比。

總結

以上是生活随笔為你收集整理的ECCV 2020 DETR:《End-to-End Object Detection with Transformers》论文笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。