Reliability Does Matter: An End-to-End Weakly Supervised Semantic Segmentation Approach(AAAI 2020)

本文翻譯了一篇關於弱監督語義分割論文,原文地址

摘要

弱監督語義分割是一項具有挑戰性的任務,因爲它僅將圖像級信息作爲訓練的監督,但會生成像素級的預測以進行測試。爲了解決這一艱鉅的任務,最新的最新方法建議採用兩步式解決方案,即1)學習生成僞像素級遮罩,以及2)利用FCN(全卷積網絡)訓練僞像素級別的遮罩的語義分割網絡。但是,兩步解決方案通常在生產高質量的僞蒙版時要花很多力氣,這使這種方法變得複雜而笨拙。在這項工作中,我們利用圖像級標籤來生成可靠的像素級註釋,並設計一個完整的端到端網絡以學習預測分割圖。具體而言,我們首先利用圖像分類分支爲帶註釋的類別生成類別激活圖,然後將其進一步修剪成自信而微小的對象/背景區域。然後,將此類可靠區域直接用作並行分段分支的真實標籤,其中採用了新設計的密集能量損失函數進行優化。儘管看似簡單,但我們的一站式解決方案在Pascal VOC上的競爭性mIoU得分(驗證集:62.6,測試集:62.9)與兩步先進技術相比。通過將我們的一步法擴展到兩步法,我們在Pascal VOC上獲得了最新的性能(驗證集:66.3,測試集:66.5)。

介紹

近來,弱監督語義分割引起了極大的興趣,並且正在被廣泛研究。 僅需要低度(更便宜或更簡單)的註釋(包括塗鴉,邊界框,點和圖像級別的標籤)來進行訓練,弱監督的語義分段提供了比採用像素級別的掩碼的完全監督的對象更容易的方法。 在這些弱監督標籤中,圖像級註釋是最簡單的收集方法,也是最具挑戰性的情況,因爲語義標籤和像素之間沒有直接映射。

爲了學習使用圖像級標籤作爲監督的語義分割模型,可以將許多現有方法分爲一步法和兩步法。一站式方法通常會建立一個端到端框架,該框架會通過其他約束性優化策略來增強多實例學習。這一系列方法優雅且易於實現。然而,這些方法的一個顯着缺點是分割精度遠遠落後於其完全監督的對應方法。爲了獲得更好的分割效果,許多研究人員建議採用兩步法。該系列方法通常旨在採用自下而上或自上而下的策略,首先生成具有圖像級標籤作爲監督的高質量僞像素級掩模。這些僞掩碼然後充當地面真相,並被饋送到現成的全卷積網絡(例如FCN和Deeplab)中,以訓練語義分割模型。當前的最新技術主要是兩步法,其分類效果接近其完全監督的同類指標。但是,爲了產生高質量的僞蒙版,這些方法經常採用許多方法,例如以脫機方式從對象建議或顯着圖中引入其他對象/背景提示。因此,兩步法通常非常複雜且難以重新實現,從而限制了它們在諸如對象定位和視頻對象跟蹤之類的研究領域中的應用。

在本文中,我們提出了一種簡單而有效的單步方法,可以輕鬆地以端到端的方式對其進行訓練。與兩步法相比,它可實現具有競爭性的分類效果。我們稱爲可靠區域挖掘(RRM),該方法包括兩個分支:一個分支使用圖像級別的註釋生成僞像素級別的掩碼,另一個分支生成語義分割結果。與之前傾向於挖掘密集和整體物體區域的兩步技術相反,我們的RRM只選擇那些通常很小但在類激活時具有較高響應分數的自信物體/背景區域地圖。我們發現可以通過增加額外的CRF操作將這些區域進一步修剪爲更可靠的區域,然後將其用作並行語義分割分支的監督。在有限的像素監督下,我們設計了一種規則的損耗,稱爲密集能量損耗,該損耗與像素方向的交叉熵損耗配合以優化訓練過程。

儘管表面上看起來很簡單,但我們的一步式RRM在Pascal VOC 驗證集和測試集上分別達到了62.6和62.9的mIoU分數。 這些結果實現了最先進的性能,與那些通常採用複雜的鈴鐺和口哨聲來製作僞蒙版的兩步先進技術相比,它甚至具有競爭力。 我們認爲,我們提出的RRM爲弱監督語義分段的一步式解決方案提供了新的見解。 此外,爲了展示我們方法的有效性,我們還將我們的方法擴展到一個兩步框架,並在Pascal VOC 驗證集和測試集上獲得了66.3和66.5的最新性能。代碼將公開提供。

相關工作

語義分割是計算機視覺中的一項重要任務,需要預測像素級分類。Long等人提出了第一個用於語義分割的全卷積網絡。Chen等人提出了一種新的深度神經網絡結構“Deeplab”,利用原子卷積進行逐像素測,然後開發了一系列新的網絡結構。但是,完全監督的語義分段需要密集的像素級註釋,這會花費大量的人工費用。由於需要較少的人工干預,所以監督不足的語義分割已引起了廣泛的關注。根據監督的類型,弱監督語義分割分爲不同類別:塗鴉,邊界框,點和圖像級類標籤。在本文中,我們專注於圖像級監督語義分割。

圖像級弱監督語義分割僅提供圖像級註釋。最新方法基於類激活圖(CAM),該類可從圖像級註釋生成初始對象種子或區域。這樣的初始對象種子或區域被轉換爲生成僞標籤以訓練語義分割模型。 Wei等人提出以迭代方式擦除由分類網絡計算的判別區域,以便可以挖掘更多的種子區域,然後將其與顯着性圖組合以生成僞像素級標籤。Wei等人還證明了擴張卷積可以增加接收場並改善弱分割網絡性能。此外,Wang等人訓練了區域網絡和像素網絡,以逐步進行從圖像級別到區域級別以及從區域級別到像素級別的預測。同樣,此方法將顯着性圖作爲額外的監督。Ahn和Suha設計了一個親和力網絡來計算不同圖像像素之間的關係,並利用該網絡獲得用於分割模型訓練的僞對象標籤。Huang等人部署了一種稱爲種子生長的傳統算法來迭代擴展種子區域。

但是,以上所有方法均使用多種技術產生了高質量的僞遮罩,這意味着在訓練用於語義分割預測的FCN之前,我們至少需要一個或兩個額外的網絡。 在這項工作中,我們嘗試爲整個任務設計一個單一的網絡,以簡化流程。 我們認爲這項工作爲圖像級弱監督語義分割任務提供了新的視角。

提出的方法

概述

我們提出的RRM可以分爲兩個並行分支,包括分類分支和語義分割分支。 兩個分支共享同一個骨幹網絡,並且在訓練階段,它們兩個都同時更新整個網絡。 圖1說明了我們方法的總體框架。算法1說明了算法流程。
在這裏插入圖片描述
在這裏插入圖片描述

  • 分類分支用於生成可靠的像素級註釋。 將對原始CAM進行處理以生成可靠的微小區域。 最終保留的可靠區域被視爲標記區域,而其他區域則被視爲未標記區域。 這些標籤用作用於語義分割分支的監督信息。
  • 語義分割分支用於預測像素級標籤。 該分支部署了新的聯合損失函數,該函數將交叉熵損失與新設計的密集能量損失結合在一起。 交叉熵損失主要考慮標記的像素,而密集能量損失通過充分利用RGB顏色和像素位置來考慮所有像素。

我們的RRM的總體損失函數爲:L=Lclass+Ljoint seg\mathcal{L}=\mathcal{L}_{class}+\mathcal{L}_\text{joint seg},其中Lclass\mathcal{L}_{class}代表常規分類softmax損失,而Ljoint seg\mathcal{L}_\text{joint seg}段是分段分支中新引入的聯合損失。

分類分支:生成可靠區域的標籤

高質量的像素級註釋直接影響我們最終的語義分割性能,因爲它是訓練過程中唯一的事實。原始CAM可以突出顯示對象的最有區別的區域,但它們仍包含一些非對象區域,即標記錯誤的像素。因此,在獲取原始CAM區域後,需要進行後處理,例如密集的CRF。我們遵循了這一基本思想,並做了進一步的過程來生成可靠的標籤。

我們隨後計算訓練數據集的初始CAM。在我們的網絡中,全局平均池(GAP)應用於最後一個卷積層。GAP的輸出按完全連接層分類。最後,在最後一個卷積層上使用完全連接的層權重來獲取每個類的熱圖。此外,空洞卷積可以增加相應場的事實啓發,我們將空洞卷積添加到最後三層中。我們的實驗部分報告了我們網絡設置的詳細信息。

數學上,對於給定的圖像II,類別cc對應的CAM爲:
Mocamc=RS(ch=0DωchcFch),(cCfg),(1) M_{ocam}^c = RS(\sum^D_{ch=0}\omega^c_{ch}\cdot F_{ch}),(c\in C_{fg}),\tag{1}
其中Cfg={c1,c2,,cN}C_{fg}=\{c_1, c_2, \dotso ,c_N\}包括全部前景類別,MocamcM_{ocam}^c爲圖像II中類別爲cc的CAM,ωc\omega^c表示全連接層中類別cc的權重,FF爲主幹網絡最後一層卷積層輸出的特徵圖,RS()RS(\cdot)是將輸入尺寸調整爲圖像II尺寸的操作。

使用多尺度的原始圖像有利於生成穩定的CAM。給定圖像II並被一個因子sis_i進行縮放,si{s0,s1,,sn}s_i\in\{s_0,s_1,\dotsc,s_n\},對於圖像II多尺度的CAM被定義爲:
Mcamc=i=0n(Mocamc(si)/(n+1)),(2) M^c_{cam}=\sum^n_{i=0}(M_{ocam}^c(s_i)/(n+1)),\tag{2}
其中Mocamc(si)M_{ocam}^c(s_i)是類別爲cc且被因子sis_i進行縮放的圖像II的CAM。 圖2展示了,與原始CAM(比例=1)相比,多尺度CAM提供了更精確的對象定位。
在這裏插入圖片描述

因爲CAM的值是正則化過的,所以我們可以得到圖像II上每一個像素點對應的分類概率,
Pfgc=Mcamc/max(Mcamc),(cCfg)(3) P_{fg}^c=M^c_{cam}/\max(M^c_{cam}),(c\in C_{fg})\tag{3}
其中max(Mcamc)\max(M^c_{cam})是類別爲cjc_j的CAM的最大值。

背景的分數使用了類似的方式進行計算:
Pbg(i)=1maxcCfg(pfgc(i))γ,γ>1,(4) P_{bg}(i)=1-\max_{c\in C_{fg}}(p^c_{fg}(i))^\gamma,\gamma >1,\tag{4}
其中ii爲像素點位置的索引,γ\gamma 是有助於抑制背景標籤的衰減率。通過將前景和背景概率PfgP_{fg}PbgP_{bg}連接起來,得到總體概率圖,即PfgbgP_{fg-bg}

之後,我們使用密集CRF作爲後處理,去除一些錯標的像素,CRF像素標籤圖爲:
Icrf=CRF(I,[Pfg,Pbg]),(5) I_{crf}=CRF(I,[P_{fg},P_{bg}]),\tag{5}
選擇的可靠CAM標籤爲:
Icam(i)={arg maxcC(Pfgbg](i)c),ifmaxcC(Pfgbg](i)c)>α255,else,(6) I_{cam}(i)= \begin{cases} \argmax_{c\in C}(P^c_{fg-bg](i)}),& \text{if}\,\max_{c\in C}(P^c_{fg-bg](i)})> \alpha \\ \qquad255\qquad\qquad\qquad,& else \end{cases},\tag{6}
其中C={c0,c1,,cN}C=\{c_0,c_1,\dotsc,c_N\}包含全部類別以及後景(c0)(c_0)。255表示尚未確定類別標籤。

輸入到語義分割分支的最終像素標籤是:
Ifinal(i)={Icam,ifIcam(i)=Icrf(i)255,else,(7) I_{final}(i)= \begin{cases} I_{cam}, &\text{if}\,I_{cam}(i)=I_{crf}(i)\\ 255,&else \end{cases},\tag{7}
在公式(6)中,maxcC(Pfgbg](i)c)>α\max_{c\in C}(P^c_{fg-bg](i)})> \alpha選擇了高度自信度的區域。在公式(7)中,Icam(i)=Icrf(i)I_{cam}(i)=I_{crf}(i)考慮到了CRF約束。採用這種策略,可以得到高可靠性的區域及其標籤。(7)中那些被定義爲255的區域,被視爲不可靠區域。

圖3顯示了我們方法的一個例子。可以看出,原始CAM標籤(圖3(c))包含了大部分前景標籤,但引入了一些背景像素作爲前景,而CRF標籤(圖3(d))可以得到準確的邊界,但同時有很多前景像素被視爲背景。而CRF標籤(圖3(d))可以得到準確的邊界,但同時又將許多前景像素視爲背景。換句話說,CAM標籤可以提供可靠的背景像素,CRF標籤可以提供可靠的前景像素。用我們的方法梳理CAM標籤和CRF標籤圖,一些錯誤的像素級標籤被去除,而可靠的區域仍然存在,這在物體邊界處尤其明顯(見圖3(e)和(f)的區別)。
在這裏插入圖片描述

語義分割分支:進行預測

獲得可靠的像素級註釋後,它們將用作我們的語義分段分支的標籤。 與其他使用獨立的僞標籤訓練語義分割網絡的方法不同,我們的分割分支與分類分支共享相同的骨幹網絡,只需要可修飾但很小的像素級標籤。 我們的損失函數包括交叉熵損失和能量損失。 交叉熵損失側重於利用標記數據,而能量損失則同時考慮標記數據和未標記數據。 共同損失是:
Ljoint-seg=Lce+Lenergy,(8) \mathcal{L}_\text{joint-seg}=\mathcal{L}_{ce}+\mathcal{L}_{energy},\tag{8}
在公式(8)中,Lce\mathcal{L}_{ce}Lenergy\mathcal{L}_{energy}分別表示交叉熵損失函數和密集能量損失函數。交叉熵損失函數爲:
Lce=cC,iΦBc(i)log(Pnetc(i)),(9) \mathcal{L}_{ce}=-\sum_{c\in C,i\in \Phi}B_c(i)\log(P^c_{net}(i)),\tag{9}
其中Bc(i)B_c(i)是一個二進制指示器,像素點ii的標籤爲cc時指示器輸出1,否則輸出0;Φ\Phi表示被標記的區域,Φ={iIfinal(i)255}\Phi = \{i|I_{final}(i)\neq255\};Pnetc(i)P^c_{net}(i)爲訓練後網絡輸出的概率。

到目前爲止,所有標記的像素都被用於交叉熵損失的訓練,但有大量的未標記像素。爲了對這些未標記的區域進行預測,我們設計了一種新的淺層損失,命名爲密能損失,同時考慮RGB顏色和空間位置。

我們首先在像素i和j之間定義能量公式:
E(i,j)=ca,cbC,cacbG(i,j)Pnetca(i)Pnetcb(i),(10) E(i,j)=\sum_{c_a,c_b\in C,\,c_a \neq c_b}G(i,j)P^{c_a}_{net}(i)P^{c_b}_{net}(i),\tag{10}
在公式(10)中,cac_acbc_b都爲類別標籤,Pnetca(i)P^{c_a}_{net}(i)Pnetcb(i)P^{c_b}_{net}(i)分別是我們在像素iijj處的分割分支的softmaxsoftmax輸出。G(i,j)G(i,j)是一個高斯內核帶寬濾波器:
G(i,j)=1Wexp(DiDj22σd2IiIj22σr2),(11) G(i,j)=\frac{1}{W}\exp(-\frac{\left \|D_i-D_j \right \|^2}{2\sigma^2_d}-\frac{\left \|I_i-I_j \right \|^2}{2\sigma^2_r}),\tag{11}
其中1W\frac{1}{W}是正則化權重,DD是像素空間位置,而II是RGB顏色,σd\sigma_dσr\sigma_r是控制高斯內核縮放的超參數。公式(10)可以使用Potts模型簡化:
E(i,j)=ca,cbC,cacbG(i,j)Pnetca(i)Pnetcb(i)=G(i,j)cCPnetc(i)(1Pnetc(j)),(12) \begin{aligned} E(i,j)&=\sum_{c_a,c_b\in C,\,c_a \neq c_b}G(i,j)P^{c_a}_{net}(i)P^{c_b}_{net}(i)\\ &=G(i,j)\sum_{c\in C}P^c_{net}(i)(1-P^c_{net}(j)) \end{aligned},\tag{12}
最終,我們的密集能量損失函數可以寫爲:
Lenergy=i=0Nj=0,jiNS(i)E(i,j),(13) \mathcal{L}_{energy}=\sum^N_{i=0}\sum^N_{j=0,\, j\neq i}S(i)E(i,j),\tag{13}
在公式(13)中,考慮到交叉熵損失是爲監督學習而設計的,標籤信息的準確度爲100%,但是在此任務中,所有像素標籤都不是100%可靠的,這意味着使用交叉熵損失可能會引入一些錯誤。 因此,我們密集的能量損失被用來減輕這個問題。 基於這個想法,我們爲像素ii設計了一個軟濾波器S(i)S(i):
S(i)={1maxcC(Pnetc(i)),iΦ1,else(14) S(i)= \begin{cases} 1-\max_{c\in C}(P^c_{net}(i)),&\qquad i\in\Phi\\ \qquad \qquad \quad1,&\qquad else \end{cases}\tag{14}

實驗

數據集和實現細節

數據集:我們的RRM在PASCAL VOC 2012及其增強數據上經過訓練和驗證,包括10582張用於訓練的圖像,1449張用於驗證的圖像和1456張用於測試的圖像。 平均交併比(mIoU)被視爲評估標準。

實現細節:骨幹網絡是具有38個卷積層的ResNet模型。 我們刪除原始網絡的所有完全連接層,併爲最後三個resnet塊(resnet塊是一組具有相同輸出大小的殘差單元)進行空洞卷積,最後第三層的擴張率爲2,最後2層爲4。 對於語義分割分支,我們在主幹後添加兩個具有相同配置的空洞卷積層,內核大小爲3,擴展速爲12,填充大小爲12。交叉熵損失分別針對背景和前景計算。 密集能量損失中的σd\sigma_dσr\sigma_r分別設置爲15和100。

訓練學習率爲0.001,權值下降爲5e-4。 使用從(0.7,1.3)中隨機採樣的比例調整訓練圖像的大小,然後將它們隨機翻轉。 最後,將它們標準化並隨機裁剪爲321 * 321大小。

爲了生成可靠的區域,對於PfgbgP_{fg-bg},將公式(2)中的縮放比例設置爲{0.5、1、1.5、2},將公式(4)中的γ\gamma設置爲4。公式(5)中的CRF參數遵循(Ahn和Kwak 2018)中的設置。在公式(6)中,選擇α\alpha值,並選擇40%像素作爲每個類別的標記像素。 在驗證和測試期間,將密集CRF作爲後處理方法,並將參數設置爲(Huang等人2018)中給出的默認值。 在訓練期間,兩個分支都更新了骨幹網。 在測試期間,僅使用分類分支來生成預測。

復現:使用PyTorch。 所有實驗均在NVIDIA RTX 2080 Ti上進行。 現在可以在以下網址獲得代碼:https://github.com/zbf1991/RRM。

分析我們的方法

我們的RRM具有兩個重要方面:使用可靠但微小的僞遮罩進行監督,並使用新的聯合損失函數進行端到端訓練。 進行消融研究以說明其個體和聯合的有效性,結果報告於表1和表2。
在這裏插入圖片描述

我們首先驗證不同僞遮罩大小的影響。 我們通過更改α\alpha做到這一點。 表1報告了結果。 較小的僞掩模大小意味着爲分割分支選擇了更多可靠的區域,而較大的大小意味着較少的可靠像素被標記。 表1證明了20%-60%的標記像素可帶來最佳性能。 一方面,由於分割網絡無法獲得足夠的標記用於學習,因此標記的像素太少而無法獲得滿意的性能。 另一方面,太多的標記像素意味着使用了更多不正確的標記,這對於訓練處理來說是噪聲。
在這裏插入圖片描述

表2顯示了我們介紹的兩個主要部分的有效性:可靠的區域劃分和聯合損失。 比較了使用原始CAM區域和使用RRM劃分的可靠區域獲得的結果。 可以看出,由RRM生成的僞標籤的性能優於CAM標籤。 如果我們從分割分支中去除聯合損失,這也表明RRM生成的可靠僞標記可提高分割性能。

此外,表2中帶有交叉熵損失的Ours-RRM與帶有聯合損失的Ours-RRM的比較說明了引入的聯合損失的有效性。在沒有聯合損失的情況下,RRM只有交叉熵損失的情況下的mIoU會降低。 這是因爲僅考慮交叉熵損失時,具有RRM的可靠區域無法爲分割模型訓練提供足夠的標籤。 採用聯合損失後,分段性能從48.5大幅提高到62.6,提高了14.1。 具有交叉熵損失的CAM和具有聯合損失的CAM之間獲得了相似的比較結果。

與先前方法的比較

在表3和表4中,我們與僅圖像級監督語義分割的其他端到端網絡進行了詳細比較。 儘管有各種各樣的網絡來執行此任務,但是隻有EM-Adapt才採用端到端的結構,並且可以看出,Ours-RRM(一步法)的性能要大得多。 首先,與使用最大期望(EM)算法估計網絡參數的EM-Adapt相比,我們的方法採用設計的聯合損失函數,採用更直接和明確的學習過程來更新整個網絡。 其次,由於僅考慮圖像級別信息,因此EM-Adapt只能給出粗略的分割結果,而我們的RRM(一步法)設計了一種提供可靠像素級別標籤的試驗機制,這將導致更準確的分割預測。
在這裏插入圖片描述

爲了顯示我們想法的有效性和可擴展性,我們還將方法擴展到兩步法框架。區別在於,對於我們的單步方法(Ours-RRM(單步法)),我們直接通過分類分支生成預測。而對於我們的兩步法,我們首先使用Ours-RRM(一步法)網絡爲訓練數據集生產僞掩碼。然後,我們使用生成的像素標籤訓練和評估Deeplab,這些像素標籤稱爲Our-RRM-VGG(兩步法)。使用相同的設置,我們還評估了使用帶有ResNet-101主幹網的Deeplab-v2(稱爲Our-RRM-ResNet)(兩步法)的性能。最終結果可在表5中找到。可以觀察到,在僅使用圖像級標籤而沒有額外數據的現有方法中,AffinityNet是性能最高的方法。但是,當使用相同的主幹時,Ours-RRM-VGG(兩步)和Ours-RRM-ResNet(兩步法)的性能要好得多。還應該注意的一點是,AffinityNet使用ResNet-38作爲基線,它比ResNet-101更爲強大,即使在這種情況下,我們的RRM-ResNet(兩步法)仍然以較大的幅度跑贏它。請注意,AffinityNet應用了三個帶有許多花哨的DNN,而我們僅使用一個端到端網絡(Ours-RRM(一步法))就得到了等效的結果。
在這裏插入圖片描述

據我們所知,先前的最新技術FickleNet在PASCAL VOC 驗證和測試集上的mIoU得分分別爲64.9和65.3,但是它使用類不可知的顯着性圖作爲額外的補充信息,並且分別使用兩個獨立的網絡。Ours-RRM-ResNet(兩步操作)在PASCAL VOC 驗證和測試集上的mIoU得分分別爲66.3和66.5,提供了更好的性能,分別1.4和1.2倍的提升。請注意,在這種情況下,我們不會使用額外的數據或信息。因此,Ours-RRM-ResNet(兩步)是兩步圖像級標籤弱監督語義分割的最新技術。

在圖4中,我們展示了我們的方法的一些主觀語義分割結果,並將這些結果與最新的端到端網絡EM-Adapt進行了比較。Ours-RRM(一步法)可在大型和小型物體上以精確的邊界獲得更好的分割結果。我們還展示了兩步方法的一些結果,可以看出,在這三種方法中,我們的-RRM-ResNet(兩步法)在強大的網絡體系結構中獲得了最佳性能。
在這裏插入圖片描述

結論

在本文中,我們提出了RRM,一種用於圖像級弱監督語義分割的端到端網絡。我們重新審視了採用兩步法的最新技術缺陷。我們提出了一種通過挖掘可靠但很小的區域的單步方法,並將其直接用作分割標籤訓練的真實標籤。在有限的像素作爲監督的情況下,我們設計了一種新的損失,命名爲密能損失,它採取淺層特徵(RGB顏色和空間信息),配合像素側的交叉熵損失來優化訓練過程。基於我們的一步式RRM,我們擴展了兩步法。我們的一站式和兩步式方法都可以達到最新的性能。更重要的是,我們的RRM與傳統的兩步式解決方案提供了不同的視角。我們認爲,提出的一步方法可以進一步推動這一方向的研究。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章