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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Visual Commonsense R-CNN (CVPR2020)

發布時間:2024/1/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Visual Commonsense R-CNN (CVPR2020) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇文章比較早,但是對于因果介紹的比較詳細,很值得學習。
代碼:https://github.com/Wangt-CN/VC-R-CNN
代碼花了挺長時間總算跑通了,在 3080 上調真是錯誤不斷,后來換到 2080 又是一頓調才好。這里跑通的主要環境為 ubuntu,2080,cuda 11.3, torch ‘1.10.1+cu113’ 。一些配置如下

  • 安裝 conda 后,conda create --name vc_rcnn python=3.7
  • conda activate vc_rcnn pip install ninja yacs cython matplotlib tqdm opencv-python h5py lmdb -i https://pypi.mirrors.ustc.edu.cn/simple/
  • pip install torch==1.10.1+cu113 torchvision==0.11.2+cu113 torchaudio==0.10.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113 -i https://pypi.mirrors.ustc.edu.cn/simple/ (高于 1.10版本的話安裝 vc-r-cnn 會有問題)
  • 參考代碼里的 install.md 安裝 coco 和 apex 以及 vc-rcnn 即可。

作者大大有個博客對于因果學習和這篇文章介紹的都很詳細,見 https://zhuanlan.zhihu.com/p/111306353
因此這里具體的介紹就不多寫了,可參考原始文章和博客。只說實現部分。

  • 首先根據數據集構建 confounder Z Z Z 和先驗數據分布 P ( z ) P(z) P(z)。 具體而言,confunder 指的是特定類別的固定表征,利用的是 gt 獲得的,將特定類別的所有目標加一起取平均,對于coco而言獲得 80 × 1024 80 \times 1024 80×1024 的 confounder,每個行都對應一個類別。而先驗分布 P ( z ) P(z) P(z) 維度為 1 × 80 1 \times 80 1×80 ,表示特定類別出現的頻率(所有值加一起和為1),應該是特定類別出現的頻數除以總的目標個數得到。文章定義如下,是預先獲得直接加載的。

    self.dic = torch.tensor(np.load(cfg.DIC_FILE)[1:], dtype=torch.float) # [80,1024]
    self.prior = torch.tensor(np.load(cfg.PRIOR_PROB), dtype=torch.float) # [80]

  • 模型使用的是 ResNet+FPN, 也會生成不止一個 proposals。之后就是設計兩個分類器。Self Predictor 和一般使用的基本沒什么區別,重點關注 Context Predict。公式如下,代碼看后邊。 80 × 1024 80 \times 1024 80×1024 的 confounder 首先和 ROI 特征 y y y 計算attention,具體先經過全連接,然后點乘,再通過 softmax,獲得 4 × 80 4 \times 80 4×80 的attention (4 表示該樣本有 4 個 proposals)。按照我們一般的思路,這個 attention 可以直接聚合對應的 80 個特征向量。然而這里再和 confounder 的先驗分布 P ( z ) P(z) P(z) 相乘,很有意思,在 attention 中強行加入 confunder(即各個類別)的出現頻率(ps,感覺那么像解決長尾分布的問題)。最后對這些特征聚合得到 4 × 1024 4 \times 1024 4×1024 的特征。這些特征和模型獲得的 ROI 特征 x x x (公式是 x x x,但是代碼中表示的應該就是前面所說的 y y y,是一樣的 ROI 特征,不知道是不是表示錯誤還是我理解錯誤)進行拼接(公式里是相加,可能也表示拼接)。這樣就能獲得一個包含真實特征和 confounter 的特征。最后用 Context Predict (它的輸入是Self Predictor 輸入維度的兩倍)進行預測。
    q = W 3 y , K = W 4 Z T E z [ g y ( z ) ] = ∑ z [ Softmax ? ( q T K / σ ) ⊙ Z ] P ( z ) E z [ f y ( x , z ) ] = W 1 x + W 2 ? E z [ g y ( z ) ] \boldsymbol{q}=\boldsymbol{W}_3 \boldsymbol{y}, \boldsymbol{K}=\boldsymbol{W}_4 \boldsymbol{Z}^T \\ \mathbb{E}_{\boldsymbol{z}}\left[g_y(\boldsymbol{z})\right]=\sum_z\left[\operatorname{Softmax}\left(\boldsymbol{q}^T \boldsymbol{K} / \sqrt{\sigma}\right) \odot \boldsymbol{Z}\right] P(\boldsymbol{z}) \\ \mathbb{E}_{\boldsymbol{z}}\left[f_y(\boldsymbol{x}, \boldsymbol{z})\right]=\boldsymbol{W}_1 \boldsymbol{x}+\boldsymbol{W}_2 \cdot \mathbb{E}_{\boldsymbol{z}}\left[g_y(\boldsymbol{z})\right] \\ q=W3?y,K=W4?ZTEz?[gy?(z)]=z?[Softmax(qTK/σ ?)Z]P(z)Ez?[fy?(x,z)]=W1?x+W2??Ez?[gy?(z)]

  • 最后能讓訓練整個的特征提取器減少模型受這種這種 bias (共現的bias,位置的bias等)的干擾。

def z_dic(self, y, dic_z, prior):"""Please note that we computer the intervention in the whole batch rather than for one object in the main paper."""length = y.size(0) # proposals 的數量 torch.Size([4, 1024])if length == 1:print('debug')# torch.mm(self.Wy(y), self.Wz(dic_z).t()) --> torch.Size([4, 80])attention = torch.mm(self.Wy(y), self.Wz(dic_z).t()) / (self.embedding_size ** 0.5)attention = F.softmax(attention, 1)z_hat = attention.unsqueeze(2) * dic_z.unsqueeze(0) # torch.Size([4, 80, 1024])z = torch.matmul(prior.unsqueeze(0), z_hat).squeeze(1) # [1, 80], torch.Size([4, 80, 1024]) --> torch.Size([4, 1, 1024]) --> torch.Size([4, 1024]) xz = torch.cat((y.unsqueeze(1).repeat(1, length, 1), z.unsqueeze(0).repeat(length, 1, 1)), 2).view(-1, 2*y.size(1)) # y [4,1024]->[4,4,1024], z [4,1024]->[4,4,1024] => cat [4,4, 2048] ==> [16, 2048]# detect if encounter nanif torch.isnan(xz).sum():print(xz)return xz

總的來說,實現上很有意思的,不知道是先有了因果的思考才有的實現思路,還是先有實現的方法再有的因果的角度hh。張老師組這幾年在因果學習上發表了相當多的文章,很多領域都有涉及,很有啟發性,值得學習。

總結

以上是生活随笔為你收集整理的Visual Commonsense R-CNN (CVPR2020)的全部內容,希望文章能夠幫你解決所遇到的問題。

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