論文連結:https://arxiv.org/abs/2203.12602
程式碼和預訓練權重已經在Github開源:https://github.com/MCG-NJU/VideoMAE
目錄1. 背景介紹
2. 研究動機
3. 方法介紹
4. VideoMAE實現細節
5. 消融實驗
6. VideoMAE的重要特性
7. 主要結果
8. 對社區的影響
9. 總結
影片自監督學習(Video Self-supervised Learning) :不利用標籤訊息,透過設計自監督的代理任務,從視訊資料中學習時空表徵資訊。現有的視訊自監督預訓練演算法主要分為兩大類: (1) 基於對比學習的自監督方法,如 CoCLR,CVRL等。 (2 )基於時序相關代理任務的自監督方法,如 DPC,SpeedNet,Pace 等。
動作辨識 (Action Recognition) : 對給定剪裁過影片(Trimmed Video)進行分類,辨識這段影片中人物的動作。目前的主流方法有 2D-based (TSN,TSM,TDN等) ,3D-based(I3D,SlowFast等) 以及 Transformer-based(TimeSformer,ViViT,MViT,VideoSwin等)。動作辨識作為影片領域的基礎任務,常常作為影片領域各種下游任務 (例如時序行為偵測,時空動作偵測) 的主幹網路(Backbone),去擷取整個影片等級或影片片段層級的時空特徵。
動作偵測(Action Detection) : 任務不僅需要對影片進行動作分類,辨識這段影片中人物的動作,還要在空間範圍內用一個包圍框(bounding box)標示出人物的空間位置。動作偵測在電影影片分析,體育影片分析等場景下有廣泛的應用場景。
自從2020年底視覺自註意力模型(Vision Transformer)被提出後,Transformer被廣泛應用到了電腦視覺領域,並幫助改進了一系列電腦視覺任務的表現。
然而,Vision Transformer需要利用大規模的帶有標籤的資料集進行訓練。最初,最原始的 ViT(Vanilla Vision Transformer)透過使用數億張標籤的圖像進行有監督形式的預訓練才能獲得良好的表現。目前的Video Transformer通常基於影像資料訓練的Vision Transformer模型(如 TimeSformer,ViViT等)並且依賴大規模影像資料的預訓練模型(例如 ImageNet-1K,ImageNet-21K,JFT-300M等)。 TimeSformer,ViViT 均曾嘗試在視訊資料集中從頭開始訓練Video Transformer模型, 但是都不能取得令人滿意的結果。因此,如何在不使用任何其他預訓練模型或額外影像資料的情況下,直接在視訊資料集上有效地訓練Video Transformer,特別是最原始的ViT(Vanilla Vision Transformer),仍然是一個亟待解決的問題。需要注意的是,與影像資料集相比,現有的視訊資料集的規模相對較小。例如,被廣泛使用的Kinectics-400資料集只有20多萬的訓練樣本,樣本數大約是ImageNet-21K資料集的1/50,JFT-300M資料集的1/1500,存在好幾個數量級的差距。同時,相較於訓練影像模型,訓練影片模型的計算開銷也大了許多。這進一步增加了在視訊資料集上訓練Video Transformer的難度。
最近,「掩碼重建」(masking-and-reconstruction) 這種自監督訓練範式在自然語言處理(BERT)和圖像理解(BEiT,MAE) 中取得了成功。因此,我們嘗試利用這種自監督範式在視訊資料集上訓練Video Transformer,並且提出了一種基於遮罩和重建(masking-and-reconstruction)這種代理任務的視訊自監督預訓練演算法VideoMAE(Video Masked Autoencoder)。經過VideoMAE預訓練的ViT模型能夠在Kinetics-400和Something-Something V2這種較大的視訊資料集,以及UCF101和HMDB51這種規模相對小的視訊資料集上取得大幅優於其他方法的效果。
MAE採用非對稱編碼器-解碼器架構來進行遮罩和重建的自監督預訓練任務。一張 224x224解析度的輸入影像首先被分成大小為 16 ×16 的非重疊的視覺像素區塊(token)。每個像素區塊(token)會經過區塊嵌入(token embedding)的操作轉換為高維特徵。 MAE採用較高的遮罩比率 (75%) 隨機遮蓋掉一部分的像素區塊(token)。經過遮罩操作後,將剩餘的像素區塊送到編碼器(encoder)中進行特徵提取。緊接著,將編碼器提取出來的特徵塊與另一部分預設的可學習的像素塊(learnable token)進行拼接,構成和原始輸入圖像尺寸一樣大的特徵。最後,利用一個輕量級的解碼器(decoder),基於這部分特徵重建原始的圖像(實際實驗過程中,重建目標的是經過歸一化的像素塊(normalized token) 。
與影像資料相比,影片資料包含了更多的幀,也具有更豐富的運動資訊。本節會先分析一下視訊資料的特性。
#對視訊資料不同遮罩策略的範例
視訊資料中包含著密集的影像幀,這些影像幀包含的語義資訊隨時間變化得非常緩慢。由此可見,影片中密集連續的彩色影像幀是高度冗餘的,如圖所示。這種冗餘性可能在實現MAE的過程中造成兩個問題。首先,如果採用原始視訊的密集幀率(例如30 FPS)進行預訓練,則訓練效率會非常低。因為這種設定會使得網路更專注於資料中的靜態表象特徵或一些局部變化緩慢的運動特徵。其次,影片中的時序冗餘性會極大地稀釋了影片中的運動特徵。因此,這種情況會使得在正常遮罩率(例如,50% 到75%)下,重建被遮罩的像素區塊的任務變得相對簡單。這些問題會影響作為編碼器的Backbone在預先訓練的過程中提取運動特徵。
#影片可以看作是由靜態圖片隨著時間的演化生成的,因此視訊幀之間也存在語義的對應關係。如果不針對性地設計遮罩策略,這種時序相關性可能會增加重建過程中的「資訊外洩」的風險。具體來說,如圖所示,如果使用全域隨機遮罩或隨機遮罩影像幀,網路可以利用影片中的時序相關性,透過「複製貼上」相鄰幀中時序對應位置的未被遮蔽的像素區塊來進行像素區塊重建。這種情況下一定程度上也能完成代理任務,但是可能會導致VideoMAE僅僅能學習到較低語義的時間對應關係特徵,而不是高層抽象的語義信息,例如對視頻內容的時空推理能力。為了緩解這種情況,需要設計一種新的遮罩策略,使重建任務更具挑戰性,這樣才能讓網路更好地學習視訊中的時空特徵表示。
VideoMAE的整體框架
為了解決前文中影片預訓練過程中採用掩碼和重建(masking-and-reconstruction)這種任務時可能遇到的問題,我們在VideoMAE中引入一些新的設計。
根據前文中對影片中密集連續影格中存在的時序冗餘性的分析,因此在VideoMAE中選擇採用帶有時序間隔的採樣策略來進行更有效率的視訊自監督預訓練。具體來說,首先從原始影片中隨機取樣一個由 $t$ 個連續幀組成的影片片段。然後使用帶有時序間隔採樣將視訊片段壓縮為幀,每個幀包含個像素。在特定的實驗設定中,Kinetics-400 和 Something-Something V2 資料集上的採樣間隔 分別設定為4和2。
在輸入到編碼器中之前,對於取樣得到的視訊片段,採用時空聯合的形式進行像素區塊嵌入。具體來說,將大小為影片片段中大小為的視覺像素視為一個視覺像素區塊。因此,採樣得到的影片片段經過時空塊嵌入(cube embedding)層後可以得到個視覺像素塊。在這個過程中,同時會將視覺像素區塊的通道維度映射為。這種設計可以減少輸入資料的時空維度大小,一定程度上也有助於緩解視訊資料的時空冗餘性。
為了解決由視訊資料中的時序冗餘性和時序相關性導致的「資訊外洩」問題,本方法選擇在自監督預訓練的過程中採用管道式遮罩策略。管道式的遮罩策略可以將單幀彩色影像的遮罩方式自然地在整個影片的時序上進行拓展,即不同的幀中相同空間位置的視覺像素區塊將被遮蔽。具體來說,管道式遮罩策略可以表示為 。不同的時間t共享相同的值。使用這種遮罩策略,相同空間位置的token將總是會被遮罩。所以對於一些視覺像素塊(例如,不同掩碼策略的範例圖第 4 行的包含手指的像素塊),網路將無法在其他幀中找到其對應的部分。這種設計這有助於減輕重建過程中出現「資訊外洩」的風險,可以讓VideoMAE透過擷取原始影片片段中的高層語意訊息,來重建被遮罩的token。
相對於影像數據,視訊資料具有更強的冗餘性,視訊資料的資訊密度遠低於影像。這種特性使得VideoMAE使用極高的遮罩率(例如 90% 到 95%)進行預訓練。值得注意的是,MAE的預設遮罩率為75% 。實驗結果表明,使用極高的遮罩率不僅能夠加速預訓練(僅有5% 到10% 的視覺像素區塊被輸入到編碼器中),同時能夠提升模型的表徵能力和在下游任務中的效果。
#前文中提到了VideoMAE採用了極高的遮罩率,只保留了極少的token作為編碼器的輸入。為了更好地提取這部分未被遮蔽的token的時空特徵,VideoMAE選擇使用原始的ViT作為Backbone,同時在註意力層中採用時空聯合自註意力(即不改變原始ViT的模型結構)。因此所有未被遮蔽的token都可以在自註意層中相互互動。時空聯合自註意力機制的等級的計算複雜度是網路的計算瓶頸,而前文中針對VideoMAE使用了極高遮罩比率策略,僅將未被遮蔽的token(例如10%)輸入到編碼器中。這種設計一定程度上可以有效地緩等級的計算複雜度的問題。
#VideoMAE框架的特定設計細節
上圖展示了VideoMAE所採用的編碼器和解碼器的特定架構設計(以ViT-B為例)。我們在下游的四個視訊動作辨識資料集和一個動作偵測資料集上對VideoMAE進行評估。這些數據集關注影片中不同方面的運動資訊。 Kinetics-400 是一個大規模的 YouTube 影片資料集,包含了大約 30 萬個剪裁過的影片片段,涵蓋了 400 個不同的動作類別。 Kinetics-400 資料集主要包含日常生活中的活動,某些類別與互動物件或場景資訊高度相關。 Something-Something V2資料集中的影片主要包含了不同物件執行相同動作,因此該資料集中的動作識別更加關注運動屬性而不是物件或場景資訊。其中訓練集大約包含 17 萬個影片片段,驗證集大約包含 2.5 萬個影片片段。 UCF101 和 HMDB51 是兩個相對較小的視訊動作辨識資料集。 UCF101的訓練集大約包含 9500 個視頻,HMDB51的訓練集大約包含 3500 個視頻。在實驗過程中,我們首先在訓練集上使用VideoMAE對網路進行自我監督預訓練,緊接在訓練集上對編碼器(ViT)進行有監督形式的微調,最後在驗證集上對模型的性能進行評估。對於動作偵測資料集AVA,我們首先會載入Kinetics-400資料集上訓練好的模型,對編碼器(ViT)進行有監督形式的微調。
本節在Something-Something V2和Kinetics-400資料集上對VideoMAE進行消融實驗。消融實驗預設採用輸入為16幀的原始的ViT模型。同時在微調後進行評估時,在 Something-Something V2 上選擇2個影片片段和3次裁切進行測試,在Kinetics-400上選擇5個影片片段和3次裁切進行測試。
#輕量級解碼器是VideoMAE中的一個關鍵元件。表(a) 中展示了使用不同深度的解碼器的實驗結果。與MAE不同,VideoMAE中更深的解碼器可以取得更好的效能,而深度較淺的解碼器可以有效地降低 GPU 的顯存佔用。認情況下解碼器的層數設定為 4。遵循MAE的經驗性設計,VideoMAE中解碼器的通道寬度設定為編碼器的通道寬度的一半(例如,以ViT-B作為編碼器時,解碼器的通道寬度設定為384)。
在使用 75% 的遮罩比例下,將不同的遮罩策略與管道式遮罩策略進行比較。如表(b)所示,全域隨機遮罩和隨機遮罩影像幀的效能劣於管道式遮罩策略。這可能是由於管道式遮罩策略可以一定程度上緩解了視訊資料中的時序冗餘性和時序相關性。如果將遮罩比率增加到 90% ,VideoMAE的在Something-Something上的表現可以進一步從 68.0% 提升到 69.6%。 VideoMAE中遮罩策略和的遮罩比率的設計可以使遮蔽加重建成為更具有挑戰性的代理任務,強制模型學習到更高層的時空特徵。
這裡比較了VideoMAE中的重建目標,結果在表(c)。首先,如果只使用影片片段中的中心影格作為重建目標,VideoMAE在下游任務中的表現會大大降低。同時,VideoMAE對採樣間隔也很敏感。如果選擇重建更密集影格的影片片段,其結果會明顯低於預設的經過時序下取樣的影片片段。最後也嘗試從經過時序下採樣的影片片段中重建影片片段中更密集的幀,但這種設定會需要解碼更多的幀,使得訓練速度變慢,效果也沒有很好。
這裡比較了VideoMAE中的預訓練策略,結果展示在表(d)。與先前方法(TimeSformer,ViViT)的實驗結論類似,在Something-Something V2 這個對運動資訊更敏感的資料集上從頭開始訓練ViT並不能取得令人滿意的結果。如果利用大規模影像資料集(ImageNet-21K)上預先訓練的ViT模型作為初始化,能夠獲得更好的準確度,可以從 32.6% 提升到 61.8% 。而使用在 ImageNet-21K 和 Kinetics-400 上預先訓練的模型進一步將準確率提高到 65.2%。而利用VideoMAE從視訊資料集本身預先訓練得到的ViT,在不使用任何額外的資料的條件下,最終能達到 69.6% 的最佳效能。 Kinetics-400 上也有類似的結論。
這裡比較了VideoMAE中的預訓練資料集,結果展示在表(e)。首先依照MAE的設置,在 ImageNet-1K 上對ViT自監督預訓練 1600 epoch。接著利用I3D中的策略,將 2D 塊嵌入層膨脹為3D 時空塊嵌入層,並在視訊資料集上微調模型。這種訓練範式可以超過從頭有監督訓練的模型。緊接著,將MAE預先訓練的模型與在 Kinetics-400 上VideoMAE預訓練的ViT模型的表現進行了比較。可以發現VideoMAE可以實現比MAE更好的性能。然而這兩種預訓練模型均未能取得比僅在Something-Something V2 資料集上進行自監督預訓練的VideoMAE更好的效能。由此可以分析,預訓練資料集和目標資料集之間的領域差異可能是一個重要問題。
預先訓練的總輪次在VideoMAE中的影響
在消融實驗中,VideoMAE預訓練的總輪次預設為800。我們嘗試在Kinetics-400 和 Something-Something V2資料集上對預訓練輪次進行深入探究。根據圖中的結果,採用更長的預訓練輪次在兩個資料集上都可以帶來持續的增益。
##VideoMAE與MoCov3在下游不同影片動作辨識資料集上的效能比較
先前許多工作對視訊自監督預訓練進行了廣泛的研究,但這些方法主要使用卷積神經網路作為Backbone,很少有方法去研究中基於ViT的訓練機制。因此,為了驗證基於ViT的VideoMAE對視訊自監督預訓練的有效性,我們對兩種基於ViT的訓練方法進行了比較:(1) 從頭開始有監督訓練模型,(2) 使用對比學習方法(MoCo v3)進行自我監督預訓練。根據實驗結果,可以發現VideoMAE明顯優於其他兩種訓練方法。例如,在資料規模最大的 Kinetics-400 資料集上,VideoMAE比從頭開始訓練的準確率高出約 10%,比 MoCo v3 預訓練的結果高出約6%。 VideoMAE卓越的性能表明,遮罩和重建(masking-and-reconstruction)這種自監督範式為ViT提供了一種高效
##的預訓練機制。同時值得注意的是,隨著訓練集的變小,VideoMAE與其他兩種訓練方法之間的表現差距變得越來越大。值得注意的是,即使HMDB51資料集中只包含大約3500個影片片段,基於VideoMAE 的預訓練模型仍然可以獲得令人非常滿意的準確率。這一新的結果表明VideoMAE是一種數據高效的學習器。這與對比學習需要大量資料進行預訓練的情況不同。 VideoMAE的資料高效的特性在視訊資料有限的場景下顯得尤為重要。
VideoMAE與MoCov3在Something-SomethingV2資料集上的效率分析
我們也進一步比較了使用VideoMAE進行預訓練和使用MoCo v3預訓練的計算效率。由於使用遮罩加重建這種極具挑戰性的代理任務,每次迭代過程網路只能觀察到10%的輸入資料(90%的token被遮蔽),因此VideoMAE需要更多的訓練輪次數。極高比例的token被遮蔽這種設計大大節省了預訓練的計算消耗和時間。 VideoMAE預訓練800回合僅需19.5小時,而 MoCo v3 預訓練300回合就需要 61.7 小時。
#遮罩比率在VideoMAE中的影響
極高的遮罩率是VideoMAE中的核心設計之一。我們在 Kinetics-400 和 Something-Something V2 資料集上對此設計進行了深入探究。根據圖中的結果,當遮罩比率非常高時,即使是 95%時,網路在下游視訊動作辨識任務的這兩個重要資料集上仍然能表現出極佳的效能。這個現象與自然語言處理中的 BERT 和影像的MAE中的存在巨大的不同。視訊資料中存在時序冗餘性和時序相關性,使得VideoMAE相比於影像資料和自然語言,能夠進行極高的遮罩比率的操作。
我們也對經過預先訓練的VideoMAE的重構範例進行了視覺化。從圖中可以發現,即使在極高的遮罩率下,VideoMAE也可以產生令人滿意的重建結果。這意味著VideoMAE能夠學習並提取出影片中的時空特徵。
VideoMAE與MoCov3在較小資料集上的特徵遷移能力的效能比較
為了進一步研究VideoMAE學習到的特徵,本節對經過預訓練的VideoMAE的泛化和遷移能力進行了評估。上表中展示了在 Kinetics-400 資料集上進行預訓練的VideoMAE遷移到 Something-Something V2、UCF101 和 HMDB51資料集上的效果。同時,表中也展示了使用 MoCo v3 進行預先訓練的模型的遷移能力。根據表中的結果,利用VideoMAE進行預訓練的模型的遷移和泛化能力優於基於 MoCo v3 進行預訓練的模型。這表明VideoMAE能夠學習到更多可遷移的特徵表示。在 Kinetics-400 資料集上進行預訓練的VideoMAE比直接在 UCF101 和 HMDB51 資料集上直接進行預訓練的VideoMAE效果好。但在 Kinetics-400 資料集上進行預訓練的模型在 Something-Something V2 資料集上的遷移能力較差。
為了進一步探討造成這種不一致現象的原因,我們在Something-Something V2資料集上進行了減少預訓練影片數量的實驗。探究過程的包含了兩個實驗:(1)使用相同的訓練輪次數(epoch) 進行預訓練,(2)使用相同的迭代次數(iteration)進行預訓練。從圖中的結果可以發現,當減少預訓練樣本數時,採用更多的訓練迭代也能夠提升模型的表現。即使只使用了4萬2千的預訓練視頻,直接在Something-Something V2 數據集上訓練的VideoMAE仍然可以取得比利用24萬視頻數據的Kinetics-400 數據集進行預訓練更好的準確率(68.7 % 對比68.5%)。這個發現意味著領域差異是視訊自監督預訓練過程中需要注意的另一個重要因素,當預訓練資料集和目標資料集之間存在領域差異時,預訓練資料的品質比資料的數量更重要。同時,這個發現也間接驗證了VideoMAE是一種針對視訊自監預訓練的資料高效的學習器。
#Something-Something V2資料集實驗結果
Kinetics-400資料集實驗結果
UCF101和HMDB51資料集實驗結果
在無需使用任何額外資料的條件下,VideoMAE在Something-Something V2 和Kinetics-400 上的Top-1 準確率分別達到75.4%和87.4%。需要注意的是,Something-Something V2資料集上目前最佳的方法都強烈依賴在外部資料集上進行預訓練的模型進行初始化。相反,VideoMAE在沒有利用任何外部數據的條件下能夠顯著優於先前的最佳方法的準確率約 5%。 VideoMAE在Kinetics-400 資料集上也能取得非常卓越的效能。在視頻數據有限的情況下(例如,UCF101 數據集中僅包含不到1萬個訓練視頻, HMDB51 中僅包含約3500個訓練視頻),VideoMAE不需要利用任何額外的圖像和視頻數據,也能夠在這些小規模視訊資料集上遠遠超過之前的最佳方法。
AVA v2.2資料集實驗結果
除了傳統的動作分類任務,我們也進一步在影片動作偵測這種更精細的理解任務上驗證VideoMAE模型的表徵能力。我們選取了AVA v2.2資料集進行實驗。實驗中,首先會載入Kinetics-400資料集上預先訓練好的模型,再對ViT進行有監督形式的微調。由表格可以發現,經過VideoMAE預先訓練的ViT模型可以在AVA v2.2資料集上取得非常好的結果。如果將自監督預訓練後的ViT模型,在Kinetics-400上進行進一步的有監督的微調,可以在動作檢測任務上去得更好的表現(3 mAP-6mAP的提升)。這也說明了VideoMAE自監督預訓練後的模型,在上游資料集進行有監督的微調後再遷移到下游任務中,模型的效能可以進一步提升。
我們在今年4月對VideoMAE的模型和程式碼進行了開源,並收到了社群的持續關注和認可。
根據Paper with Code榜單,VideoMAE已經分別佔據Something-Something V2[1]和AVA 2.2[2]榜單首位長達半年時間(2022年3月底至今)。如果不利用任何外部數據,VideoMAE在Kinetics-400[3],UCF101[4],和HMDB51[5]數據集上的結果也是迄今為止最好的。
https://huggingface.co/docs/transformers/main/en/model_doc/videomae
#幾個月前,VideoMAE的模型被Hugging Face的Transformers官方倉庫收錄,是該倉庫收錄的第一個視訊理解模型!一定程度上也反應了社區對我們工作的認可!希望我們的工作能為基於Transformer的視訊預訓練提供一個簡單且有效率的基線方法,同時也能為後續基於Transformer的視訊理解方法帶來啟發。
https://github.com/open-mmlab/mmaction2/tree/dev-1.x/configs/recognition/videomae
#目前影片理解倉庫MMAction2也支持了VideoMAE模型的推理。
在剛結束的 ECCV 2022 2nd International Ego4D Workshop上,VideoMAE已經迅速成為了幫助大家打比賽的利器。上海人工智慧實驗室在本屆Ego4D Challenge中的多個子賽道取得了冠軍 。其中,VideoMAE作為重要的Backbone,為他們的解決方案提供了強大的視訊特徵。值得注意的一點是,從上面第一張圖中可以發現,僅在Kinetics-400上進行預訓練的VideoMAE(ViT-L)的效果已經可以超越在IG-65M視頻數據集(約為Kinetics-400樣本數據的300倍)上預訓練的ir-CSN-152。這也進一步驗證了VideoMAE預訓練模型的強大表徵能力。
我們這個工作的主要貢獻包含以下三個面向:
##• 我們第一個提出了基於ViT的遮罩和重建的視訊自監督預訓練框架VideoMAE。即使在較小規模的視訊資料集上進行自我監督預訓練,VideoMAE仍能取得非常優異的表現。為了解決由時序冗餘性(temporal redundancy) 和時序相關性(temporal correlation) 導致的「資訊外洩」問題,我們提出了極高遮罩率的管道式遮罩(tube masking with an extremely high ratio )。實驗表明,這種設計是VideoMAE 最終能夠取得SOTA效果的關鍵。同時,由於VideoMAE的非對稱編碼器-解碼器架構,大幅降低了預訓練過程的運算消耗,極大地節省了預訓練過程的時間。
• VideoMAE 將NLP和圖像領域中的經驗成功在視頻理解領域進行了自然但有價值的推廣,驗證了簡單的基於掩碼和重建的代理任務可以為視頻自監督預訓練提供一個簡單但又非常有效的解決方案。使用 VideoMAE 進行自監督預訓練後的 ViT 模型,在視訊理解領域的下游任務(如動作識別,動作偵測)上的表現明顯優於從頭訓練(train from scratch)或對比學習方法(contrastive learning) 。
• 實驗過程中還有兩處有意思的發現,可能被先前NLP和圖像理解中的研究工作忽視了: (1) VideoMAE是一種數據高效的學習器。即使在只有 3 千個左右的視訊資料集HMDB51上,VideoMAE也能夠完成自監督預訓練,並且在下游分類任務上可以取得遠超過其他方法的結果。 (2) 對於視訊自監督預訓練,當預訓練資料集與下游任務資料集之間存在明顯領域差異(domain gap)的時候,視訊資料的品質可能比數量更重要。
以上是VideoMAE:簡單高效的視訊自我監督預訓練新範式的詳細內容。更多資訊請關注PHP中文網其他相關文章!