# SegNet論文筆記 # ### 摘要 ### - 論文: SegNet: A Deep Convolutional Encoder-Decoder Architecture for Image Segmentation (一種圖像分割的深度卷積編碼器/解碼器架構) - 出處 : IEEE, arXiv:1511.00561v3 [cs.CV] 10 Oct 2016 - 論文最早版本arXiv上的發表時間是2015.11 ### 作者 ### - Roberto Cipolla ![](https://i.imgur.com/PpRK2JW.png) - 劍橋大學機械智能實驗室工程系,劍橋,英國 - 1984年獲得劍橋大學工程學士學位 - 1985年獲賓夕法尼亞大學電子工程碩士學位 - 1991年獲牛津大學計算機視覺學士學位 - 1991年-92他是日本川崎東芝公司研發中心的東芝研究員和工程師 - 1992年加入劍橋大學工程系,擔任講師和耶穌學院的研究員 - 1997年成為信息工程的讀者,並於2000年成為教授 - 2010年成為皇家工程院(FREng)的研究員 - 研究興趣包括計算機視覺和機器人技術 - 撰寫過3本書,編輯了9卷,並合著了300多篇論文 - IEEE的高級成員。 - Vijay Badrinarayanan ![](https://i.imgur.com/XDLa0so.png) - 劍橋大學機械智能實驗室工程系,劍橋,英國 - 2009年獲得法國INRIA Rennes的博士學位。 - 英國劍橋大學工程系機械智能實驗室的高級博士後研究員 - 目前是加州山景城Magic Leap公司的首席工程師 - 研究興趣 : 包括概率圖形模型,應用於圖像的深度學習和基於視頻的感知問題。 - Alex Kendall ![](https://i.imgur.com/7zzNpZs.png) - 劍橋大學機械智能實驗室工程系,劍橋,英國 - 2013年獲得新西蘭奧克蘭大學的工程學士學位(一等榮譽學位) - 2014年,獲得了Woolf Fisher獎學金,攻讀英國劍橋大學的博士學位。 - 機器智能實驗室的成員,對移動機器人深度學習的應用感興趣。 ## Abstract ## * 把本文提出的架構和[FCN](https://blog.csdn.net/qq_36269513/article/details/80420363)、[DeepLab-LargeFOV](https://blog.csdn.net/cicibabe/article/details/71173965)、[DeconvNet](https://kknews.cc/zh-tw/news/zbv2pzl.html)做了比較,這種比較揭示了在實現良好分割性能的前提下內存使用情況與分割準確性的權衡。 * SegNet的主要動機是場景理解的應用。因此它在設計的時候考慮了要在預測期間保證內存和計算時間上的效率。 * 定量的評估表明,SegNet在和其他架構的比較上,時間和內存的使用都比較高效。 - 額外補充筆記 : - [定量評價方法](https://wiki.mbalib.com/zh-tw/%E5%AE%9A%E9%87%8F%E8%AF%84%E4%BB%B7%E6%96%B9%E6%B3%95) : 是通過數學計算得出評價結論的方法,是指按照數量分析方法,從客觀量化角度對科學數據資源進行的優選與評價。 定量方法為人們提供了一個系統、客觀的數量分析方法,結果更加直觀、具體,是評價科學數據資源的發展方向。 1. 多目標決策方法 : 當項目有多個目標和屬性時,常用這種方法。 其核心是多目標的簡化,其簡化的原則是刪除不重要的目標、合併同類目標。 2. 層次分析法 : 用於求解層次結構或網路結構的複雜評估的複雜評估系統的評估問題。它採用指標成對比較的方法構造比較判斷矩陣,利用求解與最大特征根相應的特征向量的分量作為相應權重繫數的辦法確定指標權重 3. 模糊綜合判定法 : 對一個與各種模糊因素有關的對象系統加以綜合考慮,並對此對象系統做出總的評估的方法稱為模糊綜合評判法 - [深度學習——FCN, SegNet, DeconvNet, DeepLab, ENet, GCN](https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/577573/#outline__3) - [知乎 - DeconvNet論文筆記](https://zhuanlan.zhihu.com/p/35549957) - [精讀深度學習論文(19) DeconvNet](https://zhuanlan.zhihu.com/p/35549957) ## 1. INTRODUCTION ## * **1. 網絡結構** * 編碼網絡和VGG-16的捲積層相同 * 移除了全連接層 * 解碼器使用從相應的編碼器接受的max-pooling indices來進行輸入特徵圖的非線性upsampling - 額外補充筆記 - VGG 是英國牛津大學 Visual Geometry Group 的縮寫,主要貢獻是使用更多的隱藏層,大量的圖片訓練,提高準確率至90%。VGG16/VGG19分別為16層(13個卷積層及3個全連接層)與19層(16個卷積層及3個全連接層),結構圖如下 - [圖像的上採樣(upsampling)與下採樣(subsampled)](https://blog.csdn.net/majinlei121/article/details/46742339) - upsampling : 放大圖像(或稱為上採樣(upsampling)或圖像插值(interpolating))的主要目的是放大原圖像,從而可以顯示在更高分辨率的顯示設備上。 對圖像的縮放操作並不能帶來更多關於該圖像的信息,因此圖像的質量將不可避免地受到影響。然而,確實有一些縮放方法能夠增加圖像的信息,從而使得縮放後的圖像質量超過原圖質量的。 - [計算機視覺中upsampling(上採樣)的三種方式](https://blog.csdn.net/u014451076/article/details/79156967) -------------------------------------------------- * **2. 解碼網絡中復用max-pooling indics的好處:** * 改善了邊界劃分 * 減少了端到端(end-to-end)訓練的參數量 * 僅需要少量的修改即可合併到任何編碼/解碼形式的架構 * 本文分析了FCN、DeconvNet中的解碼過程,並揭示了他們的優點和缺陷。 ---------------------------------------------------- * **3. Pascal VOC 12的偏向性** - SegNet在兩個場景分割任務中的性能評估 : 1. CamVid道路場景分割 2. SUN RGB-D室內場景分割 - Pascal VOC12 多年來一直是細分的基準挑戰。但是,此任務的大部分都有一個或兩個前景類,它們由高度變化的背景所包圍。這隱含地傾向於用於檢測的技術,如最近關於解耦分類 - 分割網絡(classification-segmentation network)的工作所示,其中分類網絡可以用大量弱標記數據訓練並且獨立分割網絡性能得到改善。該方法還使用分類網絡的特徵圖和獨立的CRF後處理技術來執行分割。通過使用其他推理輔助工具(如區域提案)也可以提高性能。因此,它與場景理解不同,其中想法是利用對象和其他空間上下文的共現來執行魯棒分割。 - 使用Google的隨機採樣道路場景圖像和SUN RGB-D數據集的室內測試場景產生的一些示例測試結果顯示在下圖。 ![](https://i.imgur.com/wCvdCd7.png) * 數據集中大部分圖都有一兩個由高度多樣的背景包圍的前景。 * 隱含地導致其**偏向於**含有檢測技術的算法 -------------------------------------------------- * **4. 不同分割論文解碼方法總結** * Decoupled : 用大量弱標籤數據進行分類網絡的訓練,使得分割網絡性能得到改善。 * DeepLab : 使用分類網絡的特徵圖和獨立的CRF後處理技術來執行分割。 * DeconvNet : Edge Boxes,使用區域proposals,通過額外的推理輔助來增強分割網絡的性能。 - *利用了圖像中的紋理、邊緣、顏色等信息,人為定義可能含有目標的RoI(Regions of Interest)區域* * 因此 : 上面這些算法,它們與場景理解的不同之處在於,他們的目的是利用對象的共同出現( co-occurrences of objects—CRF)以及其他空間上下文(other spatial-context—proposal)來執行可靠的分割。 ## 2. Literature Review ## * **前FCN時代的深度學習分割方法** * ---- ↓第 1 段↓ ---- * 在深度網絡到來之前,表現最佳的方法主要依靠手工設計的功能來獨立分類像素 * ---- ↓第 3 段↓ ---- * 人們嘗試將用於對象分類的網絡應用於分割,通過對圖像塊分類來實現全圖的分割,然而這樣的方式得到的分類是塊狀的。 * 另一種方法是使用循環神經網絡(RNN)合併幾個低分辨率的預測圖,來實現輸入圖像分辨率的預測。 * 這些技術已經是手工設計特徵的改進,但是它們劃定邊界的能力差。 -------------------------------------------------- * **Fully Convolutional Network (FCN):** * FCN架構中的每個解碼器都對其輸入的特徵圖進行上採樣,並將其與相應的編碼器特徵圖組合,以產生下一個解碼器的輸入。 * FCN編碼器網絡中有大量參數(134M),但解碼器網絡非常的小(0.5M)。 * 該網絡的整體大小使其難以在相關任務上端到端地進行訓練(即原始的FCN32s效果很差)。因此,作者使用了階段性的訓練過程。解碼器網絡中的每個解碼器逐步添加到預訓練好的網絡中。 * 網絡生長直到沒有進一步的性能提高,這種增長在三個解碼器之後停止(FCN8s)。 * **FCN弊端:** * 但是**忽略高分辨率的特徵圖肯定會導致邊緣信息的丟失。** * 除了訓練的相關問題之外,**解碼器中重複使用編碼器特徵圖的方式使其在測試時顯存消耗也很大。** -------------------------------------------------- 通過**將循環神經網絡([RNN](https://ithelp.ithome.com.tw/articles/10193469))附加到FCN([CRF](https://zhuanlan.zhihu.com/p/29989121) as RNN)**,並對其在大的數據集上([VOC、COCO](https://blog.csdn.net/daydayup_668819/article/details/70226787))進行微調,FCN的預測性能進一步得到改善。在使用FCN的特徵表徵能力的同時,RNN層模仿了類似CRF的尖銳邊界劃分能力。比FCN8s顯示出顯著的改進,但也表明當使用更多訓練數據訓練FCN8s時,這種差異減小。值得注意的是,反捲積網絡(DeconvNet)的性能明顯優於FCN,但是以更複雜的訓練和推理為代價。這提出了一個問題,即**隨著核心的前饋分割引擎的改進,CRF-RNN的感知優勢是否會減少** *(DeepLab v3已經去掉了CRF,他們應該是問對了)*。無論如何,CRF-RNN網絡可以附加到任何深度分段架構,包括SegNet。 多尺度的深層架構也被廣泛採用。它們有兩種風格 1. 使用幾個尺度的輸入圖像和相應的深度特徵提取網絡 2. 組合來自單個深層結構的不同層的特徵圖(ParseNet)。 通常的想法是**提取多尺度特徵來提供局部和全局的空間信息(zoom-out),再利用淺層編碼層的特徵圖以保留更高頻率的細節,從而獲得更細緻的類別邊界。** 其中一些架構由於參數太多而難以訓練。因此,多階段訓練往往也需要數據增強。由於特徵是從多個卷積路徑提取的,導致推理過程也是複雜度比較高的。還有的團隊在多尺度網絡後附加CRF,並共同訓練。然而,這個步驟在測試時不是前饋的,需要優化才能確定MAP標籤。 **最近提出的幾種最新的分割結構(DeconvNet、Deeplab、Decoupled)在推理時不是前饋的 *(推理單獨進行,與網絡訓練是分開的兩個步驟)* 。** 它們需要CRF的MAP推理或區域proposals等輔助工具。我們認為使用CRF可以獲得性能提升主要是由於這些網絡在其核心的前饋分割引擎中缺乏良好的解碼技術。 DeconvNet及其半監督變體Decoupled利用編碼器特徵圖的最大位置(pooling index),在解碼器網絡中執行非線性上採樣。這些架構的作者獨立於SegNet,提出了解碼網絡中的解碼思想。然而,它們編碼器網絡中包括了佔據整個VGG-16網絡約90%參數的全連接層。這使得他們的網絡訓練起來非常困難,因此需要更多的輔助工具,例如使用區域proposals。此外,這也顯著增加了推理時間。從benchmark的角度來看,由於使用了其他的輔助推理方式,我們也難以評估其架構中編碼器-解碼器網絡的性能。 在不犧牲性能的情況下,在參數數量、內存消耗、推理時間之間取得了一個較好的平衡。 受到Ranzato等人提出的無監督特徵學習架構的啟發, -------------------------------------------------- ## 3. Architecture ## ![](https://i.imgur.com/8voR8ID.png) 上圖為SegNet的網絡結構圖,Encoder交替採用conv+pooling,Decoder交替採用deconv+upsampling,用Softmax做像素分類。在Encoder-Decoder過程中,採用Pooling Indices(pooling時的位置信息)轉移Decoder,改善了圖像分割率(參考DeconvNet)。 最大池化可以實現在輸入圖像上進行小的空間位移時保持平移不變性。**連續的下採樣導致了在輸出的特徵圖上,每一個像素都重疊著著大量的輸入圖像中的空間信息。** 對於圖像分類任務,多層最大池化和下採樣由於平移不變性可以獲得較好的強健性,但導致了特徵圖大小和空間信息的損失。**圖像分割任務中邊界劃分至關重要,而這麼多有損邊界細節的圖像表示方法顯然不利於分割。** 因此,在進行下採樣之前,**在編碼器特徵映射中獲取和存儲邊界信息是十分重要的。** 如果推理過程中的內存不受約束,則所有編碼器特徵映射(在下採樣後)都可以存儲。在實際應用中,情況通常不是這樣,因此我們提出了一種更有效的方法來存儲這些信息。它只存儲最大池化索引,即存儲每個池化窗口中最大特徵值的位置,用於每個編碼器特徵映射。 Deconvnet具有更多的參數,需要更多的計算資源,並且很難進行端到端訓練,主要是因為使用了全連接層。 [U-Net](https://zhuanlan.zhihu.com/p/37496466)沒有利用池化位置索引信息,而是將編碼階段的整個特徵圖傳輸到相應的解碼器(以犧牲更多內存為代價),並將其連接,再進行上採樣(通過反捲積),從而得到解碼器特徵圖。 ### 3.1 Decoder Variants ### ![](https://i.imgur.com/miKqxkD.png) 對比SegNet和FCN實現Decoder的過程。SegNet保留pooling時的位置信息,upsampling時直接將數據放在原先的位置,而FCN採用transposed convolutions+雙線性插值,每一個像素都是運算後的結果。 **不同decoder實驗分析** 為驗證不同decoder結構的表現,作者針對SegNet以及FCN網絡設計了不同的decoder結構,並進行了詳細的實驗分析,實驗結果如圖3所示。 ![](https://i.imgur.com/qOdMseY.png) 其中,解碼網絡結構如下: * Bilinear-Interpolation : 雙線性插值上採樣。 * SegNet-Basic: 4*(encodes[conv+bn+relu+maxpooling] + decoders[conv+bn]) ,kenel size: 7*7。 * SegNet-Basic-SingleChannelDecoder: decoder採用單通道濾波器,可以有效減少參數數量。 * SegNet-Basic-EncoderAddition: 將decoder與encoder對應的特徵圖相加。 * FCN-Basic:與SegNet-Basic具有相同的encoders,但是decoders採用FCN的反捲積方式。 * FCN-Basic-NoAddition:去掉特徵圖相加的步驟,只學習上採樣的捲積核。 * FCN-Basic-NoDimReduction: 不進行降維。 通過上表分析,可以得到如下分析結果: * bilinear interpolation 表現最差,說明了在進行分割時,decoder學習的重要性。 * SegNet-Basic與FCN-Basic對比,均具有較好的精度,不同點在於SegNet存儲空間消耗小,FCN-Basic由於feature map進行了降維,所以時間更短。 * SegNet-Basic與FCN-Basic-NoAddition對比,兩者的decoder有很大相似之處,SegNet-Basic的精度更高,一方面是由於SegNet-Basic具有較大的decoder,同時說明了encoder過程中低層次feature map的重要性。 * FCN-Basic-NoAddition與SegNet-Basic-SingleChannelDecoder:證明了當面臨存儲消耗,精度和inference時間的妥協的時候,我們可以選擇SegNet,當內存和inference時間不受限的時候,模型越大,表現越好。 作者總結到: * encoder特徵圖全部存儲時,性能最好。這最明顯地反映在語義輪廓描繪度量(BF)中。 * 當限制存儲時,可以使用適當的decoder(例如SegNet類型)來存儲和使用encoder特徵圖(維數降低,max-pooling indices)的壓縮形式來提高性能。 * 更大的decoder提高了網絡的性能。 ### 3.2 Training ### - 使用固定學習率0.1和動量0.9的隨機梯度下降 ([SGD](https://www.cnblogs.com/maybe2030/p/5089753.html#_label1)),使用Caffe實現SegNet-Basic。 - 在每個epoch之前都shuffle一次,然後按順序構成minibatch(batchsize=12),從而確保每個圖像在一個epoch中只被使用一次。 - 使用[交叉熵損失函數](https://medium.com/@chih.sheng.huang821/%E6%A9%9F%E5%99%A8-%E6%B7%B1%E5%BA%A6%E5%AD%B8%E7%BF%92-%E5%9F%BA%E7%A4%8E%E4%BB%8B%E7%B4%B9-%E6%90%8D%E5%A4%B1%E5%87%BD%E6%95%B8-loss-function-2dcac5ebb6cb)。 - 補充內容 : 深度學習中經常看到epoch、iteration和batchsize,下面按照自己的理解說說這三個區別: (1)batchsize:批大小。在深度學習中,一般採用SGD訓練,即每次訓練在訓練集中取batchsize個樣本訓練; (2)iteration:1個iteration等於使用batchsize個樣本訓練一次; (3)epoch:1個epoch等於使用訓練集中的全部樣本訓練一次; ### 3.3 Analysis ### - global accuracy(G): 數據集中所有像素正確分類的百分比 - class average accuracy(C): 所有類的預測準確度的平均值 - mIoU 語意分割評估指標 : **Pascal VOC12**挑戰中使用的所有類的mIoU。**mIoU度量是比class average accuracy更嚴格的度量**,因為它**懲罰了假陽性預測**。然而,mIoU度量不是通過class balanced cross-entropy loss直接優化的。 公式 ? 怎麼算 ? mIoU指標也被稱為“雅克指數”,**常用於基準測試**。然而,Csurka等人注意到,這個度量並不總是符合人類對質量好的分割的定性判斷(等級)。他們表明**mIoU有利於區域平滑度,但不利於評估邊界準確性**,FCN作者最近也提到了這一點。因此,他們提出用基於伯克利輪廓匹配分數的邊界度量方法來補充mIoU度量,該邊界度量通常用於評估無監督的圖像分割質量。Csurka等人簡單將其擴展到語義分割,並且**表明與mIoU度量結合使用的語義輪廓度量與人類對分割水準的評估表現排序一致。** - BF : **計算語義的輪廓分數的關鍵思想是評估F1度量,該度量涉及在給定像素公差距離的情況下計算預測值與ground truth之間的精度**。我們用圖像對角線的0.75%作為公差距離。對測試圖像中ground truth每個類的F1度量值進行平均,以產生圖像F1度量值。然後計算整個測試集的平均,用圖像F1測度的平均值表示邊界F1度量(BF)。 公式 ? 計算方式? - ground truth : 抽象點可以把它理解為真值、真實的有效值或者是標準的答案。 在全監督學習中,數據是有標籤(label)的,以(x, t)的形式出現,其中x是輸入數據,t是label。正確的t標籤是ground truth, 錯誤的標籤則不是。 -------------------------------------------------- ## 4. Benchmarking ## 使用兩個數據集來訓練和測試SegNet:CamVid road scene segmentation(對自動駕駛有實際意義)和SUN RGB-D indoor scene segmentation(對AR有實際意義) 。 為什麼不用Pascal VOC12數據集?因為該數據集中有少數foreground與background有明顯區分,這讓一些投機者可以使用類似於邊緣檢測來刷分數。 ### 4.1 Road Scene Segmentation ### 在CamVid上與傳統方法相比: ![](https://i.imgur.com/9PjAFWU.png) 與使用CRF的方法相比,SegNet具有明顯的競爭力,這顯示了深層架構提取特徵和映射準確平滑標籤的能力。 與其他深層網絡相比: ![](https://i.imgur.com/zDkujWA.png) - CamVid測試集上語義段的深度網絡的定量比較,當在3433道路場景的語料庫上訓練而沒有類別消失時。 - 當以相同和固定的學習速率執行端到端培訓時,像SegNet這樣的小型網絡學會在更短的時間內表現更好。 與其他競爭模型相比,SegNet,DeconvNet測量級間邊界描繪精度的BF分數明顯更高。 DeconvNet與SegNet的指標相匹配,但計算成本要高得多。 ### 4.2 SUN RGB-D Indoor Scenes ### 在SUN RGB-D上與其他深層網絡相比: ![](https://i.imgur.com/Due5i4t.png) - 在5,250個室內場景的語料庫中訓練SUNRGB-D數據集的深層架構的定量比較。 - 請注意,在這些實驗中僅使用RGB模態。 在這個具有37個類的複雜任務中,所有體系結構都表現不佳,特別是因為類較小的類和類分佈中的偏差。 DeepLab-Large FOV是最小和最有效的模型,具有稍高的mIoU但SegNet具有更好的G、C、BF分數。 另請注意,當SegNet採用中頻級別平衡訓練時,它獲得71.75,44.85,32.08,14.06(180 K)作為指標。 -------------------------------------------------- ![](https://i.imgur.com/rFWRP2G.png) - Caffe(快速特徵嵌入的卷積結構) 各種深層體系結構所需的計算時間和硬件資源的比較。 - caffe time命令用於計算10次迭代的平均時間要求,小批量1和360x480分辨率的圖像我們使用nvidia-smi unix命令來計算內存消耗。 - 對於訓練記憶計算,我們使用了大小為4的mini-batch,對於推理記憶,批量大小為1。 - 模型大小是磁盤上caffe模型的大小。 - 在推理模型中,SegNet的內存效率最高。 ## 5. Discussion And Future Work ## **由於大量數據集出現和模型深度和參數數量的增加,深度學習模型取得了更大的成功。然而在實踐中,訓練和測試期間的顯存使用和計算時間等因素,是從大型模型庫中選擇模型時要考慮的重要因素。訓練時間成為一個重要的考慮因素,特別是當我們的實驗顯示,性能增益與增加的訓練時間不相稱時。測試時間和計算負荷對於在專用嵌入式設備上部署模型(例如AR應用程序)很重要。從總體效率的角度來看,人們對於更小內存、實時應用的模型(如道路現場理解和AR)關注較少。這是SegNet提案的主要動機,它比其他競爭的架構明顯更小,更快,且是我們已經證明這對於道路場景理解等任務非常有效。** **諸如Pascal和MS-COCO之類的分割挑戰是對象分割挑戰,其中的幾個類別可能存在於任何測試圖像中。場景分割更具挑戰性,因為室內場景的高度變化,同時需要分割更多的類。戶外和室內場景分割的任務在現代應用中也更為實用,如自主駕駛,機器人和AR。** 我們選擇了對各種深層分割架構(如邊界測量F1(BF))進行基準測量的指標,對更偏向於區域精度的現有指標進性補充。從我們的實驗和其他獨立的基準可以看出,從移動的汽車捕獲的室外場景圖像更容易分割,deep learning結構能夠很好地運行。我們希望我們的實驗能鼓勵研究人員注意更具挑戰性的室內場景分割任務。 **在對不同參數化的不同深層架構進行基準測試時,我們必須做出的一個重要選擇是訓練他們的方式。這些架構已經使用了許多支持技術和多階段訓練方式來達到數據集的高準確度,但是這使得很難在時間和內存限制下收集到關於其真實性能的證據。相反,我們選擇執行受控的基準測試,我們使用批處理標準化,使用相同的求解器(SGD)實現端對端訓練。然而,我們注意到,這種方法不能完全解開模型與求解器(優化)在實現特定結果時的影響。這主要是由於訓練這些網絡涉及梯度反向傳播,這是不完美的,優化是非常大的非凸的問題。承認這些缺點,我們希望這種受控分析補充了其他基準,並揭示了涉及不同知名架構的實際權衡。** 對於未來,我們希望利用我們對從分析中收集到的分段架構的理解,為實時應用設計更有效的架構。我們也有興趣從深度分段架構中估計預測的模型不確定性。 -------------------------------------------------- ## 6. Conclusion ## 提出SegNet用於語義分割。**主要動機是為了設計一個memory and computational time均高效的網絡結構用於道路和室內場景理解。** 對SegNet進行了分析,和其他的變體進行了對比,展示了設計網絡結構過程中實際的取捨、權衡(training time、memory、accuracy )。那些能夠完整存儲encoder network feature maps的結構表現得最好,但是花費更多的內存和時間。而**SegNet則是更加高效的,因為它只存儲the max-pooling indices,然後在decoder network中使用來得到好的表現。深層分割架構的端到端學習是一個更難的挑戰,作者們希望更多地關注這一重要問題** ### 備註 ### 1. 有沒有人改良過 2. 引用率最高的論文