VGG論文翻譯-Very Deep Convolutional Networks for Large-Scale Image Recognition

經典分類網絡系列文章鏈接:

1、LeNet結構解析

2、AlexNet論文翻譯AlexNet論文總結與實現

3、VGG論文翻譯VGGNet總結及啓發

 

Very Deep Convolutional Networks for Large-Scale Image Recognition

摘要

在這項工作中,我們研究了卷積網絡深度在大規模的圖像識別環境下對準確性的影響。我們的主要貢獻是使用非常小的(3×3)卷積濾波器架構對網絡深度的增加進行了全面評估,這表明通過將深度推到16-19加權層可以實現對現有技術配置的顯著改進。這些發現是我們的ImageNet Challenge 2014提交的基礎,我們的團隊在定位和分類過程中分別獲得了第一名和第二名。我們還表明,我們的表示對於其他數據集泛化的很好,在其它數據集上取得了最好的結果。我們使我們的兩個性能最好的ConvNet模型可公開獲得,以便進一步研究計算機視覺中深度視覺表示的使用。

使用3*3小卷積核(相比AlexNet的5*5,11*11卷積),將深度推到16-19加權層可以實現對現有技術配置的顯著改進。

1、引言

卷積網絡(ConvNets)近來在大規模圖像和視頻識別方面取得了巨大成功(Krizhevsky等,2012;Zeiler&Fergus,2013;Sermanet等,2014;Simonyan&Zisserman,2014)由於大的公開圖像存儲庫,例如ImageNet,以及高性能計算系統的出現,例如GPU或大規模分佈式集羣(Dean等,2012),使這成爲可能。特別是,在深度視覺識別架構的進步中,ImageNet大型視覺識別挑戰(ILSVRC)(Russakovsky等,2014)發揮了重要作用,它已經成爲幾代大規模圖像分類系統的測試臺,從高維度淺層特徵編碼(Perronnin等,2010)(ILSVRC-2011的獲勝者)到深層ConvNets(Krizhevsky等,2012)(ILSVRC-2012的獲獎者)。

隨着ConvNets在計算機視覺領域越來越商品化,爲了達到更好的準確性,已經進行了許多嘗試來改進Krizhevsky等人(2012)最初的架構。例如,ILSVRC-2013(Zeiler&Fergus,2013;Sermanet等,2014)表現最佳的提交使用了更小的感受窗口尺寸和更小的第一卷積層步長。另一條改進措施在整個圖像和多個尺度上對網絡進行密集地訓練和測試(Sermanet等,2014;Howard,2014)。在本文中,我們解決了ConvNet架構設計的另一個重要方面——其深度。爲此,我們修正了架構的其它參數,並通過添加更多的卷積層來穩定地增加網絡的深度,這是可行的,因爲在所有層中使用非常小的(3×3)卷積濾波器。

2015年,三個方向:

1)更小的感受窗口尺寸和更小的第一卷積層步長;

2)多尺度,在整個圖像和多個尺度上對網絡進行密集地訓練和測試;

3)本文,增加深度。

因此,我們提出了更爲精確的ConvNet架構,不僅可以在ILSVRC分類和定位任務上取得的最佳的準確性,而且還適用於其它的圖像識別數據集,它們可以獲得優異的性能,即使使用相對簡單流程的一部分(例如,通過線性SVM分類深度特徵而不進行微調)。我們發佈了兩款表現最好的模型1,以便進一步研究。

本文的其餘部分組織如下。在第2節,我們描述了我們的ConvNet配置。圖像分類訓練和評估的細節在第3節,並在第4節中在ILSVRC分類任務上對配置進行了比較。第5節總結了論文。爲了完整起見,我們還將在附錄A中描述和評估我們的ILSVRC-2014目標定位系統,並在附錄B中討論了非常深的特徵在其它數據集上的泛化。最後,附錄C包含了主要的論文修訂列表。

2、ConvNet配置

爲了衡量ConvNet深度在公平環境中所帶來的改進,我們所有的ConvNet層配置都使用相同的規則,靈感來自Ciresan等(2011);Krizhevsky等人(2012年)。在本節中,我們首先描述我們的ConvNet配置的通用設計(第2.1節),然後詳細說明評估中使用的具體配置(第2.2節)。最後,我們的設計選擇將在2.3節進行討論並與現有技術進行比較。

VGG設置對比試驗的規則:所有的ConvNet層配置都使用相同的規則,增加捲積層,進行結果對比,篩選模型。

2.1、網絡結構

在訓練期間,我們的ConvNet的輸入是固定大小的224×224 RGB圖像。我們唯一的預處理是從每個像素中減去在訓練集上計算的RGB均值。圖像通過一堆卷積(conv.)層,我們使用感受野很小的濾波器:3×3(這是捕獲左/右,上/下,中心概念的最小尺寸)。在其中一種配置中,我們還使用了1×1卷積濾波器,可以看作輸入通道的線性變換(後面是非線性)。卷積步長固定爲1個像素;卷積層輸入的空間填充要滿足卷積之後保留空間分辨率,即3×3卷積層的填充爲1個像素(same padding)。空間池化由五個最大池化層進行,這些層在一些卷積層之後(不是所有的卷積層之後都是最大池化)。在2×2像素窗口上進行最大池化,步長爲2。

一堆卷積層(在不同架構中具有不同深度)之後是三個全連接(FC)層:前兩個每個都有4096個通道,第三個執行1000維ILSVRC分類,因此包含1000個通道(一個通道對應一個類別)。最後一層是soft-max層。所有網絡中全連接層的配置是相同的。

所有隱藏層都配備了修正(ReLU(Krizhevsky等,2012))非線性。我們注意到,我們的網絡(除了一個)都不包含局部響應規範化(LRN)(Krizhevsky等,2012):將在第4節看到,這種規範化並不能提高在ILSVRC數據集上的性能,但增加了內存消耗和計算時間。在應用的地方,LRN層的參數是(Krizhevsky等,2012)的參數。

1)使用步長爲1的1*1卷積,以增加網絡的非線性;

2)3*3卷積使用same padiing,不降低輸出特徵圖大小;

3)所有的隱層都配置了Relu。

2.2、配置

本文中評估的ConvNet配置在表1中列出,每列一個。接下來我們將按網站名稱(A-E)來提及網絡。所有配置都遵循2.1節提出的通用設計(所有的ConvNet層配置都使用相同的規則),並且僅是深度不同:從網絡A中的11個加權層(8個卷積層和3個FC層)到網絡E中的19個加權層(16個卷積層和3個FC層)。卷積層的寬度(通道數)相當小,從第一層中的64開始,然後在每個最大池化層之後增加2倍,直到達到512。

表1:ConvNet配置(以列顯示)。隨着更多的層被添加,配置的深度從左(A)增加到右(E)(添加的層以粗體顯示)。卷積層參數表示爲“conv〈感受野大小〉-通道數〉”。爲了簡潔起見,不顯示ReLU激活功能。

在表2中,我們報告了每個配置的參數數量。儘管深度很大,我們的網絡中權重數量並不大於具有更大卷積層寬度和感受野的較淺網絡中的權重數量(144M的權重在(Sermanet等人,2014)中)。

表2:參數數量(百萬級別)

2.3、討論

我們的ConvNet配置與ILSVRC-2012(Krizhevsky等,2012)和ILSVRC-2013比賽(Zeiler&Fergus,2013;Sermanet等,2014)表現最佳的參賽提交中使用的ConvNet配置有很大不同。不是在第一卷積層中使用相對較大的感受野(例如,在(Krizhevsky等人,2012)中的11×11,步長爲4,或在(Zeiler&Fergus,2013;Sermanet等,2014)中的7×7,步長爲2),我們在整個網絡使用非常小的3×3感受野,與輸入的每個像素(步長爲1)進行卷積。很容易看到兩個3×3卷積層堆疊(沒有空間池化)有5×5的有效感受野;三個這樣的層具有7×7的有效感受野。那麼我們獲得了什麼?例如:

通過使用三個3×3卷積層的堆疊來替換單個7×7層,獲得了什麼?

1)結合了三個非線性修正層、增加了非線性,而不是單一的,這使得決策函數更具判別性;

2)減少參數的數量。假設三層3×3卷積堆疊的輸入和輸出有C個通道,堆疊卷積層的參數爲3*(3^2C^2)=27C^2個權重;

3)單個7×7卷積層將需要7^2C^2=49C^2個參數,即參數多81%。這可以看作是對7×7卷積濾波器進行正則化,迫使它們通過3×3濾波器(在它們之間注入非線性)進行分解。

1*1卷積核的使用:

結合1×1卷積層(配置C,表1)是增加決策函數非線性而不影響卷積層感受野的一種方式。即使在我們的案例下,1×1卷積基本上是在相同維度空間上的線性投影(輸入和輸出通道的數量相同),由修正函數引入附加的非線性。應該注意的是1×1卷積層最近在Lin等人(2014)的“Network in Network”架構中已經得到了使用。

Ciresan等人(2011)以前使用小尺寸的卷積濾波器,但是他們的網絡深度遠遠低於我們的網絡,他們並沒有在大規模的ILSVRC數據集上進行評估。Goodfellow等人(2014)在街道號識別任務中採用深層ConvNets(11個權重層),顯示出增加的深度導致了更好的性能。GooLeNet(Szegedy等,2014),ILSVRC-2014分類任務的表現最好的項目,是獨立於我們工作之外的開發的,但是類似的是它是基於非常深的ConvNets(22個權重層)和小卷積濾波器(除了3×3,它們也使用了1×1和5×5卷積)。然而,它們的網絡拓撲結構比我們的更復雜,並且在第一層中特徵圖的空間分辨率被更積極地減少,以減少計算量。正如將在第4.5節顯示的那樣,我們的模型在單網絡分類精度方面勝過Szegedy等人(2014)。

1)ILSVRC-2013比賽時,在第一卷積層中使用相對較大的感受野(ResNet也沿用了這種結構)。本文整個網絡都使用3*3Conv;

2)小卷積核替換大卷積帶來的特性討論:

兩個3×3卷積層堆疊有5×5的有效感受野;三個這樣的層具有7×7的有效感受野。獲得了什麼?1、增加了非線性;2、減少參數的數量;3、多出分非線性引起的卷積分解,實現對濾波器的正則化。

3、分類框架

在上一節中,我們介紹了我們的網絡配置的細節。在本節中,我們將介紹分類ConvNet訓練和評估的細節。

3.1、訓練

ConvNet訓練過程通常遵循Krizhevsky等人(2012)(除了從多尺度訓練圖像中對輸入,裁剪圖像進行採樣外,如下文所述)。也就是說,通過使用具有動量的小批量梯度下降(基於反向傳播(LeCun等人,1989))優化多項式邏輯迴歸目標函數來進行訓練。批量大小設爲256,動量爲0.9。訓練通過權重衰減(L2懲罰乘子設定爲5⋅10−4)進行正則化前兩個全連接層執行丟棄正則化(丟棄率設定爲0.5)學習率初始設定爲10−2,然後當驗證集準確率停止改善時,減少10倍。學習率總共降低3次,學習在37萬次迭代後停止(74個epochs)。

我們推測,儘管與(Krizhevsky等,2012)相比我們的網絡參數更多,網絡的深度更大,但網絡需要更小的epoch就可以收斂,這是由於(a)由更大的深度和更小的卷積濾波器尺寸引起的隱式正則化,(b)某些層的預初始化。

網絡權重的初始化是重要的,因爲由於深度網絡中梯度的不穩定,不好的初始化可能會阻礙學習。爲了規避這個問題,我們開始訓練配置A(表1),足夠淺以隨機初始化進行訓練。然後,當訓練更深的架構時,我們用網絡A的層初始化前四個卷積層和最後三個全連接層(中間層被隨機初始化)。我們沒有減少預初始化層的學習率,允許他們在學習過程中改變。對於隨機初始化(如果應用),我們從均值爲0和方差爲10−2的正態分佈中採樣權重。偏置初始化爲零。值得注意的是,在提交論文之後,我們發現可以通過使用Glorot&Bengio(2010)的隨機初始化程序來初始化權重而不進行預訓練。

爲了獲得固定大小的224×224 ConvNet輸入圖像,它們從歸一化的訓練圖像中被隨機裁剪(每個圖像每次SGD迭代進行一次裁剪)。爲了進一步增強訓練集,裁剪圖像經過了隨機水平翻轉和隨機RGB顏色偏移(Krizhevsky等,2012)。下面解釋訓練圖像歸一化。

1)訓練參數:

       批量大小設爲256,動量爲0.9,L2懲罰乘子設定爲5⋅10−4,前兩個全連接層執行丟棄正則化(丟棄率設定爲0.5)。

        學習率初始設定爲10−2,當驗證集準確率停止改善時,減少10倍。學習率總共降低3次。

2)參數比Alex多,但收斂更早,作者推測:

        a)由更大的深度和更小的卷積濾波器尺寸引起的隱式正則化;b)某些層的預初始化。

3)數據擴充,與AlexNet一致。水平翻轉、隨機剪裁和隨機RGB顏色偏移。

 

訓練圖像大小。令S是等軸歸一化的訓練圖像的最小邊,ConvNet輸入從S中裁剪(我們也將S稱爲訓練尺度)。雖然裁剪尺寸固定爲224×224,但原則上S可以是不小於224的任何值:對於S=224,裁剪圖像將捕獲整個圖像的統計數據,完全擴展訓練圖像的最小邊;對於S»224,裁剪圖像將對應於圖像的一小部分,包含小對象或對象的一部分。

我們考慮兩種方法來設置訓練尺度S。

第一種是修正對應單尺度訓練的S(注意,採樣裁剪圖像中的圖像內容仍然可以表示多尺度圖像統計)。在我們的實驗中,我們評估了以兩個固定尺度訓練的模型:S=256(已經在現有技術中廣泛使用(Krizhevsky等人,2012;Zeiler&Fergus,2013;Sermanet等,2014))和S=384。給定ConvNet配置,我們首先使用S=256來訓練網絡。爲了加速S=384網絡的訓練,用S=256預訓練的權重來進行初始化,我們使用較小的初始學習率10−3。

設置S的第二種方法是多尺度訓練,其中每個訓練圖像通過從一定範圍[Smin,Smax](我們使用Smin=256和Smax=512)隨機採樣S來單獨進行歸一化。由於圖像中的目標可能具有不同的大小,因此在訓練期間考慮到這一點是有益的。這也可以看作是通過尺度抖動進行訓練集增強,其中單個模型被訓練在一定尺度範圍內識別對象。爲了速度的原因,我們通過對具有相同配置的單尺度模型的所有層進行微調,訓練了多尺度模型,並用固定的S=384進行預訓練

這樣的兩種訓練方式,在19年,mmdetection發表的論文中,也進行了實驗對比。

3.2、測試

在測試時,給出訓練的ConvNet和輸入圖像,它按以下方式分類。首先,將其等軸地歸一化到預定義的最小圖像邊,表示爲Q(我們也將其稱爲測試尺度)。我們注意到,Q不一定等於訓練尺度S(正如我們在第4節中所示,每個S使用Q的幾個值會導致性能改進)。然後,網絡以類似於(Sermanet等人,2014)的方式密集地應用於歸一化的測試圖像上。即,全連接層首先被轉換成卷積層(第一FC層轉換到7×7卷積層,最後兩個FC層轉換到1×1卷積層)。然後將所得到的全卷積網絡應用於整個(未裁剪)圖像上。結果是類得分圖的通道數等於類別的數量,以及取決於輸入圖像大小的可變空間分辨率。最後,爲了獲得圖像的類別分數的固定大小的向量,類得分圖在空間上平均(和池化)。我們還通過水平翻轉圖像來增強測試集;將原始圖像和翻轉圖像的soft-max類後驗進行平均,以獲得圖像的最終分數。

由於全卷積網絡被應用在整個圖像上,所以不需要在測試時對採樣多個裁剪圖像(Krizhevsky等,2012),因爲它需要網絡重新計算每個裁剪圖像,這樣效率較低。同時,如Szegedy等人(2014)所做的那樣,使用大量的裁剪圖像可以提高準確度,因爲與全卷積網絡相比,它使輸入圖像的採樣更精細。此外,由於不同的卷積邊界條件,多裁剪圖像評估是密集評估的補充:當將ConvNet應用於裁剪圖像時,卷積特徵圖用零填充,而在密集評估的情況下,相同裁剪圖像的填充自然會來自於圖像的相鄰部分(由於卷積和空間池化),這大大增加了整個網絡的感受野,因此捕獲了更多的上下文。雖然我們認爲在實踐中,多裁剪圖像的計算時間增加並不足以證明準確性的潛在收益,但作爲參考,我們還在每個尺度使用50個裁剪圖像(5×5規則網格,2次翻轉)評估了我們的網絡,在3個尺度上總共150個裁剪圖像,與Szegedy等人(2014)在4個尺度上使用的144個裁剪圖像。

3.3、實現細節

我們的實現來源於公開的C++ Caffe工具箱(Jia,2013)(2013年12月推出),但包含了一些重大的修改,使我們能夠對安裝在單個系統中的多個GPU進行訓練和評估,也能訓練和評估在多個尺度上(如上所述)的全尺寸(未裁剪)圖像。多GPU訓練利用數據並行性,通過將每批訓練圖像分成幾個GPU批次,每個GPU並行處理。在計算GPU批次梯度之後,將其平均以獲得完整批次的梯度。梯度計算在GPU之間是同步的,所以結果與在單個GPU上訓練完全一樣。

最近提出了更加複雜的加速ConvNet訓練的方法(Krizhevsky,2014),它們對網絡的不同層之間採用模型和數據並行,我們發現我們概念上更簡單的方案與使用單個GPU相比,在現有的4-GPU系統上已經提供了3.75倍的加速。在配備四個NVIDIA Titan Black GPU的系統上,根據架構訓練單個網絡需要2-3周時間。

4、分類實驗

數據集。在本節中,我們介紹了描述的ConvNet架構(用於ILSVRC 2012-2014挑戰)在ILSVRC-2012數據集上實現的圖像分類結果。數據集包括1000個類別的圖像,並分爲三組:訓練(130萬張圖像),驗證(5萬張圖像)和測試(留有類標籤的10萬張圖像)。使用兩個措施評估分類性能:top-1和top-5錯誤率。前者是多類分類誤差,即不正確分類圖像的比例;後者是ILSVRC中使用的主要評估標準,並且計算爲圖像真實類別在前5個預測類別之外的圖像比例。

對於大多數實驗,我們使用驗證集作爲測試集。在測試集上也進行了一些實驗,並將其作爲ILSVRC-2014競賽(Russakovsky等,2014)“VGG”小組的輸入提交到了官方的ILSVRC服務器。

4.1、單尺度評估

我們首先評估單個ConvNet模型在單尺度上的性能,其層結構配置如2.2節中描述。測試圖像大小設置如下:對於固定S的Q=S,對於抖動S∈[Smin,Smax],Q=0.5(Smin+Smax)。結果如表3所示。

表3:在單測試尺度的ConvNet性能

首先,我們注意到,使用局部響應歸一化(A-LRN網絡)在沒有任何歸一化層的情況下,對模型A沒有改善。因此,我們在較深的架構(B-E)中不採用歸一化。

第二,我們觀察到分類誤差隨着ConvNet深度的增加而減小:從A中的11層到E中的19層。值得注意的是,儘管深度相同,配置C(包含三個1×1卷積層)比在整個網絡層中使用3×3卷積的配置D更差。這表明,雖然額外的非線性確實有幫助(C優於B),但也可以通過使用具有非平凡感受野(D比C好)的卷積濾波器來捕獲空間上下文。當深度達到19層時,我們架構的錯誤率飽和,但更深的模型可能有益於較大的數據集。我們還將網絡B與具有5×5卷積層的淺層網絡進行了比較,淺層網絡可以通過用單個5×5卷積層替換B中每對3×3卷積層得到(其具有相同的感受野如第2.3節所述)。測量的淺層網絡top-1錯誤率比網絡B的top-1錯誤率(在中心裁剪圖像上)高7%,這證實了具有小濾波器的深層網絡優於具有較大濾波器的淺層網絡

最後,訓練時的尺度抖動(S∈[256;512])得到了與固定最小邊(S=256或S=384)的圖像訓練相比更好的結果,即使在測試時使用單尺度。這證實了通過尺度抖動進行的訓練集增強確實有助於捕獲多尺度圖像統計

4.2、多尺度評估

在單尺度上評估ConvNet模型後,我們現在評估測試時尺度抖動的影響。它包括在一張測試圖像的幾個歸一化版本上運行模型(對應於不同的Q值),然後對所得到的類別後驗進行平均。考慮到訓練和測試尺度之間的巨大差異會導致性能下降,用固定S訓練的模型在三個測試圖像尺度上進行了評估,接近於訓練一次:Q=S−32,S,S+32。同時,訓練時的尺度抖動允許網絡在測試時應用於更廣的尺度範圍,所以用變量S∈[Smin;Smax]訓練的模型在更大的尺寸範圍Q = {S_{min}, 0.5(S_{min} + S_{max}), S_{max}上進行評估。

表4中給出的結果表明,測試時的尺度抖動導致了更好的性能(與在單一尺度上相同模型的評估相比,如表3所示)。如前所述,最深的配置(D和E)執行最佳,並且尺度抖動優於使用固定最小邊S的訓練。我們在驗證集上的最佳單網絡性能爲24.8%/7.5% top-1/top-5的錯誤率(在表4中用粗體突出顯示)。在測試集上,配置E實現了7.3% top-5的錯誤率。

表4:在多個測試尺度上的ConvNet性能

4.3、多裁剪圖像評估

在表5中,我們將稠密ConvNet評估與多裁剪圖像評估進行比較(細節參見第3.2節)。我們還通過平均其soft-max輸出來評估兩種評估技術的互補性。可以看出,使用多裁剪圖像表現比密集評估略好,而且這兩種方法確實是互補的,因爲它們的組合優於其中的每一種。如上所述,我們假設這是由於卷積邊界條件的不同處理。

表5:ConvNet評估技術比較。在所有的實驗中訓練尺度S從[256;512]採樣,三個測試適度Q考慮:{256, 384, 512}。

4.4、卷積網絡融合

到目前爲止,我們評估了ConvNet模型的性能。在這部分實驗中,我們通過對soft-max類別後驗進行平均,結合了幾種模型的輸出。由於模型的互補性,這提高了性能,並且在了2012年(Krizhevsky等,2012)和2013年(Zeiler&Fergus,2013;Sermanet等,2014)ILSVRC的頂級提交中使用。

結果如表6所示。在ILSVRC提交的時候,我們只訓練了單規模網絡,以及一個多尺度模型D(僅在全連接層進行微調而不是所有層)。由此產生的7個網絡組合具有7.3%的ILSVRC測試誤差。在提交之後,我們考慮了只有兩個表現最好的多尺度模型(配置D和E)的組合,它使用密集評估將測試誤差降低到7.0%,使用密集評估和多裁剪圖像評估將測試誤差降低到6.8%。作爲參考,我們表現最佳的單模型達到7.1%的誤差(模型E,表5)。

表6:多個卷積網絡融合結果:

4.5、與最新技術比較

最後,我們在表7中與最新技術比較我們的結果。在ILSVRC-2014挑戰的分類任務(Russakovsky等,2014)中,我們的“VGG”團隊獲得了第二名,使用7個模型的組合取得了7.3%測試誤差。提交後,我們使用2個模型的組合將錯誤率降低到6.8%。

表7:在ILSVRC分類中與最新技術比較。我們的方法表示爲“VGG”。報告的結果沒有使用外部數據。

從表7可以看出,我們非常深的ConvNets顯著優於前一代模型,在ILSVRC-2012和ILSVRC-2013競賽中取得了最好的結果。我們的結果對於分類任務獲勝者(GoogLeNet具有6.7%的錯誤率)也具有競爭力,並且大大優於ILSVRC-2013獲勝者Clarifai的提交,其使用外部訓練數據取得了11.2%的錯誤率,沒有外部數據則爲11.7%。這是非常顯著的,考慮到我們最好的結果是僅通過組合兩個模型實現的——明顯少於大多數ILSVRC提交。在單網絡性能方面,我們的架構取得了最好節果(7.0%測試誤差),超過單個GoogLeNet 0.9%。值得注意的是,我們並沒有偏離LeCun(1989)等人經典的ConvNet架構,但通過大幅增加深度改善了它。

5、結論

在這項工作中,我們評估了非常深的卷積網絡(最多19個權重層)用於大規模圖像分類。已經證明,表示深度有利於分類精度,並且深度大大增加的傳統ConvNet架構(LeCun等,1989;Krizhevsky等,2012)可以實現ImageNet挑戰數據集上的最佳性能。在附錄中,我們還顯示了我們的模型很好地泛化到各種各樣的任務和數據集上,可以匹敵或超越更復雜的識別流程,其構建圍繞不深的圖像表示。我們的結果再次證實了深度在視覺表示中的重要性。

 

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