Tuesday, July 13, 2021

NLP(七):History of Natural Language Processing

NLP(七):History of Natural Language Processing

2019/01/24

前言:

初接觸自然語言處理,不免為其龐大的內容感到漫無頭緒。根據本文作者的學習經驗,可以從神經網路語言學的 LSTM、Seq2seq、Attention、ConvS2S、Transformer、BERT 這六個主題依序入手。然後再回顧「萌芽時期」、「文法時期」、「統計時期」,才能體會目前「神經網路時期」即將到來的巨大突破!

-----


Fig. 1. A pendulum swung too far [18]。

-----

Summary:

自然語言處理大致可分為三個時期。第一個是 1960 之前的萌芽時期,代表人物是 Markov、Turing、Shannon、Chomsky [1]-[5]。 第二個是 1960 到 2000 之間的「文法」時期 ,這段時間以 Chomsky 的文法理論佔據主要研究方向,不過統計語言學也逐漸發展 [6]-[11]。第三個是 2000 之後的「語料」時期,統計語言學在 1990 到 2010 之間逐漸成為 NLP 的主流,而神經網路語言學則在 2010 後漸漸發展,在 2018 年以 BERT 獲得突破性的進展 [12]-[20]。本文簡單整理了自然語言處理的歷史,詳細內容,則有待後續展開 [21]!

-----

Outline

一、1960 之前
二、1960 - 2000 間
三、2000 之後
四、語料庫

-----

一、1960 之前

在 1960 之前,「有四項基礎性的研究特別值得注意:一項是 Markov 關於馬爾可夫模型的研究;一項是 Turing 關於算法計算模型的研究;一項是 Shannon 關於概率和信息論模型的研究;一項是 Chomsky 關於形式語言理論的研究。」[2]。

-----


Fig. 2. Markov chain(圖片來源)。

-----

◎ Markov

「早在 1913 年,俄羅斯著名數學家 A. Markov 就注意到俄羅斯詩人普希金的敘事長詩《葉甫蓋尼·奧涅金》中語言符號出現概率之間的相互影響。他試圖以語言符號的出現概率為實例,來研究隨機過程的數學理論,提出了馬爾可夫鏈(Markov Chain)的思想,他的這一開創性的成果用法文發表在俄羅斯皇家科學院的通報上。 後來 A. Markov 的這一思想發展成為在計算語言學中廣為使用的馬爾可夫模型(Markov Model),是當代計算語言學最重要的理論支柱之一。」[2]。

「早期的自然語言處理具有鮮明的經驗主義色彩。如 1913 年馬爾科夫提出馬爾科夫隨機過程與馬爾科夫模型的基礎就是“手工查頻”,具體說就是統計了《葉甫蓋尼·奧涅金》長詩中母音與子音出現的頻度。」[3]。

-----


Fig. 3. Neural Turing machine(圖片來源)。

-----

◎ Turing

「20 世紀 50 年代興起的自動機理論來源於 Turing 在 1936 年提出的可計算性理論和圖靈機模型,Turing 的劃時代的研究工作被認為是現代計算機科學的基礎。」[2]。

「1950 年 10 月,Turing 在《機器能思維嗎》一文中指出:“我們可以期待,總有一天機器會同人在一切的智能領域裡競爭起來。但是,以哪一點作為競爭的出發點呢?這是一個很難決定的問題。許多人以為可以把下棋之類的極為抽象的活動作為最好的出發點,不過,我更傾向於支持另一種主張:這種主張認為,最好的出發點是製造出一種具有智能的、可用錢買到的機器,然後教這種機器理解英語並且說英語。這個過程可以仿效小孩子說話的那種辦法來進行。” 」「Turing 提出,檢驗計算機智能高低的最好辦法是讓計算機來講英語和理解英語,進行“Turing 測試”。他天才地預見到計算機和自然語言將會結下不解之緣。」[2]。 

-----




-----




-----



-----

「Turing 的工作首先催生了 McCulloch-Pitts 的神經元(neuron)理論。一個簡單的神經元模型就是一個計算的單元,它可以用命題邏輯來描述。接著,Turing 的工作還促進了 Kleene 關於有限自動機和正則表達式的研究。」[2]。

-----


Fig. 4. Information theory (圖片來源)。

-----

◎ Shannon

「Shannon的主要貢獻是創立了“信息論”(Information Theory)。他把通過諸如通信信道或聲學語音這樣的媒介傳輸語言的行為比喻為“噪聲信道”(noisy channel)或者“解碼”(decoding)。 Shannon還借用熱力學的術語“熵”(entropy)作為測量信道的信息能力或者語言的信息量的一種方法,並且他用概率技術首次測定了英語的熵。」[2]。

-----

https://images.slideplayer.com/28/9392682/slides/slide_4.jpg

-----

「1948 年夏農把離散馬爾科夫的概率模型應用於語言的自動機,同時採用手工方法統計英語字母的頻率。 然而這種經驗主義到了喬姆斯基時出現了轉變。」[3]。

-----


Fig. 5. Grammer(圖片來源)。

-----

◎ Chomsky

有別於經驗主義,1956 年,Chomsky 開始一系列關於 Probabilistic Context-Free Grammar (PCFG) 的論文發表。

1956 年喬姆斯基借鑑夏農的工作,把有限狀態機用作刻畫語法的工具,建立了自然語言的有限狀態模型,具體來說就是用“代數”和“集合”將語言轉化為符號序列,建立了一大堆有關語法的數學模型。這些工作非常偉大,為自然語言和形式語言找到了一種統一的數學描述理論,一個叫做“形式語言理論”的新領域誕生了。這個時代,“經驗主義”被全盤否定,“理性主義”算是完勝。」[3]。

那麼,何謂理性主義呢?

「典型的理性主義者認為,人類首先本能地掌握一些基本原則,如幾何法則,隨後可以依據這些推理出其餘知識。 同時代相對的另一種哲學方法稱為經驗主義,它認為人類的想法來源於經驗,所有知識可能除了數學以外主要來源於經驗。這裡主要關注的是人類的知識來源以及證實我們所知的一種手段。 理性主義及經驗主義並非由當時的哲學家,而是後人作出了區分。事實上,有時兩者之間的區分並不像人們所說的那麼顯著。三位主要的理性主義者都認同經驗科學的重要性,並且他們在研究方法及形上學的理論上更接近笛卡兒而不是斯賓諾莎(Baruch Spinoza)和萊布尼茲(Gottfried Leibnitz)。」[4]。

「Chomsky 是個語言學家,提出的生成語法主要也是為了描述人類所說的語言,這在資訊科學的領域被稱為自然語言,以便與程式設計時所用的程式語言區分開來。然而,生成語法雖然主要為了描述自然語言而提出,但卻同樣適用於程式語言的語法上,甚至在程式語言的設計上造成了相當大的影響,這或許是當初 Chomsky 所沒有想到的。 」[5]。

這邊穿插一點「自然語言處理」與「電腦語言」(高階語言,不包含組合語言)之間的關係。

「高階語言所使用的語法,大致上分為兩個層次,在單詞的語法上會使用正規語法 (Regular Grammar),而句法結構上則使用與上下文無關的文法 (Context-Free Grammar,簡稱 CFG),這兩個語法都可以使用近代語言學之父的喬姆斯基 (Chomsky) 的生成語法 (Generative Grammar) 描述。在程式語言的領域,我們通常用 BNF 與 EBNF 語法描述這些程式的語法。  」[5]。
 
「在資訊系的相關課程當中,與高階語言相關的課程,包含程式語言 (Programming Language)、正規語言 (Formal Language)、以及編譯器 (Compiler) 等等。這些課程的核心是語法理論,我們可以利用生成規則 (例如:BNF, EBNF 等) 描述程式的語法。一但能正確的描述某個程式語言,就能撰寫剖析該語言的剖析程式,將這些語法轉換成語法樹 (或稱剖析樹)。 」[5]。

以 Chomsky 為主,理性主義這一派,在自然語言處理的影響力,一直持續到 1990 至 2000 年之間。

-----


Fig. 6. Natural Language Processing with Python [11]。

-----

二、1960 - 2000 間 

「在 20 世紀 50 年代末到 60 年代中期,經驗主義東山再起了。多數學者普遍認為只有詳盡的歷史語料才能帶來靠譜的結論。於是一些比較著名的理論與演算法就誕生了,如貝葉斯方法(Bayesian Method)、隱馬爾可夫、最大熵、Viterbi 演算法、支援向量機之類。世界上第一個聯機語料庫也是在那個時候的 Brown University 誕生的。但是總的來說,這個時代依然是基於規則的理性主義的天下,經驗主義雖然取得了不俗的成就,卻依然沒有受到太大的重視。但是金子總會發光的。」[3]。

「一直到 1980 年代,多數自然語言處理系統是以一套複雜、人工訂定的規則為基礎。不過從 1980 年代末期開始,語言處理引進了機器學習的演算法,NLP 產生革新。成因有兩個:運算能力穩定增加;以及喬姆斯基語言學理論漸漸喪失主導。該理論的架構不傾向於語料庫——機器學習處理語言所用方法的基礎。有些最早期使用的機器學習演算法,例如決策樹,是硬性的、「如果-則」規則組成的系統,類似當時既有的人工訂定的規則。不過詞性標記(英語:part-of-speech tagging)將隱馬爾可夫模型引入 NLP,並且研究日益聚焦於軟性的、以機率做決定的統計模型,基礎是將輸入資料裡每一個特性賦予代表其份量的數值。許多語音識別現今依賴的快取語言模型(英語:cache language model)即是一種統計模型的例子。這種模型通常足以處理非預期的輸入資料,尤其是輸入有錯誤(真實世界的資料總免不了),並且在整合到包含多個子任務的較大系統時,結果比較可靠。」[6], [7]。

自然語言處理 [6], [7],在 1980 年代末期開始,由於引進計算機,以及機器學習演算法,所以也改稱計算語言學 [8],以便與傳統的語言學區分。

計算語言學的五個重要主題,包括語言建模與概率、機器翻譯、序列標註與隱馬爾可夫模型、解析與 PCFG、主題模型與 PLSA 和 Gibbs 採樣,幾乎每章都有編程任務和習題 [9], [10]。廣義來說,計算語言學也可視為以語料庫、統計學、機器學習演算法為基礎的統計語言學。以下列出 1951 年至 2001 年部分重要的演算法,包括:

1951 NB: Naive Bayes。

1966 HMM: Hidden Markov Model。
1967 VA: Viterbi Algorithm。
1984 GS: Gibbs Sampling。
1992 NG: N-gram。
1996 ME: Maximum Entropy(NLP)。
1999 PLSA: Probabilistic Latent Semantic Analysis。
2001 CRF: Conditional Random Fields。

讀者若有興趣,也可以參考更多的計算語言學專書 [11]。這份清單的第一本是 Python 的自然語言處理,主要是統計語言學,而不是基於神經網路的語言學。第二、三都是很經典的教科書,但還是以統計方法為主。第三本已新增部分基於神經網路的語言學 [15]。

-----


Fig. 7. BERT [14]。

-----

三、2000 之後 

1960 至 2000 年,基於理性主義的 PCFG 獨領風騷,另一方面,基於經驗主義、機器學習的統計語言學在 1990 至 2010 年也發展到顛峰。在此同時,機器學習的一支,深度學習(類神經網路),於 2000 年後,也逐漸成為自然語言處理的有力工具。

Bengio 在 2003 提出的 Neural Network Language Model (NNLM) 可以視為神經網路在自然語言處理的濫觴。後續在 2008 則有Multi-task Learning (MTL) [12], [13]。不過這段時間由於計算機的運算力有限,所以發展緩慢。

2013 年開始,各種預訓練模型為主,逐漸在 NLP 領域佔據重要位置,包含 Word2vec、GloVe、fastText、ELMo、AWD-LSTM、ULMFiT、OpenAI GPT,乃至於 2018 年底推出的 BERT [14]。 各種 NLP 研究所需要的語料庫逐漸越來越大,而表現也越來越好,當然,其需要的運算量,也逐漸是一般研究者無法負擔了!

-----

四、語料庫

語料跟語料庫,從統計語言學開始,地位益形重要。在神經網路語言學的時代,更巨大的語料庫則與更巨大的神經網路模型,逐漸使的自然語言處理的進步程度,往電腦視覺的成就趨近。

何謂語料?「語料通常指在統計自然語言處理中實際上不可能觀測到大規模的語言實例。所以人們簡單地用文本作為替代,並把文本中的上下文關係作為現實世界中語言的上下文關係的替代品。」[16]。

至於語料庫呢?「語料庫一詞在語言學上意指大量的文本,通常經過整理,具有既定格式與標記。其具備三個顯著的特點: ⊚ 語料庫中存放的是在語言的實際使用中真實出現過的語言材料。 ⊚ 語料庫以電子計算機為載體承載語言知識的基礎資源,但並不等於語言知識。 ⊚ 真實語料需要經過加工(分析和處理),才能成為有用的資源。」[16]。

「最近,麻省理工學院(MIT)的在讀博士 Karthik Narasimhan 發起了一個為自然語言處理(NLP)準備的數據集/語料庫列表,以時間順序排列。該列表將持續更新。」[17]。

-----

結論:

「丘吉的這篇 2011 年的長文《鐘擺擺得太遠》(A Pendulum Swung Too Far) 是一篇從 AI  高度回顧 NLP 全部歷史的反思力作,主要回顧了三位大師明斯基、喬姆斯基、皮爾斯的經典思想。」「丘吉預測,深度網絡的熱潮為主流經驗主義添了一把火,將會繼續主導自然語言領域十多年,從而延宕理性主義回歸的日程表。但是他認為理性主義復興的歷史步伐不會改變。他對主流漠視理性主義的現狀頗為憂慮,擔心下一代學者會淹沒在一波又一波的經驗主義熱潮中。」

-----

References

// 1960 之前

[1] History of natural language processing - Wikipedia
https://en.wikipedia.org/wiki/History_of_natural_language_processing

[2] 冯志伟. 计算语言学的历史回顾与现状分析. Diss. 2011.
http://www.lingviko.net/feng/wgy-CL-rev.pdf
http://glos.cssn.cn/yyx/yjgk/201402/t20140212_962111.shtml

[3] 独家 _ 一文读懂自然语言处理NLP(附学习资料) - 云+社区 - 腾讯云
https://cloud.tencent.com/developer/article/1032021

[4] 理性主義 - 維基百科,自由的百科全書
https://zh.m.wikipedia.org/zh-tw/%E7%90%86%E6%80%A7%E4%B8%BB%E4%B9%89
 
[5] 正規語言 (Formal Language) - 教科書:系統程式
http://sp1.wikidot.com/formallanguage

// 1960 - 2000 間

[6] Natural language processing - Wikipedia
https://en.m.wikipedia.org/wiki/Natural_language_processing#Statistical_natural_language_processing_(SNLP)

[7] 自然語言處理 - 維基百科,自由的百科全書
https://zh.m.wikipedia.org/zh-tw/%E8%87%AA%E7%84%B6%E8%AF%AD%E8%A8%80%E5%A4%84%E7%90%86

[8] Computational linguistics - Wikipedia
https://en.m.wikipedia.org/wiki/Computational_linguistics

[9] cl-intro
http://cs.brown.edu/courses/csci2951-k/papers/cl-intro.pdf

[10] 从语言建模到隐马尔可夫模型:一文详述计算语言学 _ 机器之心
https://www.jiqizhixin.com/articles/2017-09-21-8

[11] Top 10 Most Popular Books on Natural Langauge Process (NLP) and Text Analysis
https://www.houseofbots.com/news-detail/4594-1-top-10-most-popular-books-on-natural-langauge-process-nlp-and-text-analysis

// 2000 之後

[12] A Review of the Neural History of Natural Language Processing - AYLIEN
http://blog.aylien.com/a-review-of-the-recent-history-of-natural-language-processing/

[13] 15年来,自然语言处理发展史上的8大里程碑 - 知乎
https://zhuanlan.zhihu.com/p/47239175 

[14] NLP(四):BERT Overview
https://hemingwang.blogspot.com/2019/01/bert-overview.html

[15] Speech and Language Processing _ 我爱自然语言处理
http://www.52nlp.cn/tag/speech-and-language-processing 

-----

// 語料庫

[16]【自然语言处理】浅谈语料库 - 贾继康的博客 - CSDN博客
https://blog.csdn.net/Jiajikang_jjk/article/details/83684375 
 
[17] MIT自然语言处理数据集和语料库集合 _ 机器之心
https://www.jiqizhixin.com/articles/2017-03-22-4 

-----

// 結論

[18] Church, Kenneth. "A pendulum swung too far." Linguistic Issues in Language Technology 6.5 (2011): 1-27.
http://languagelog.ldc.upenn.edu/myl/ldc/swung-too-far.pdf

[19] (转)深度学习是经验主义新高峰,不是理性主义终结 - Julia & Rust & Python - CSDN博客
https://blog.csdn.net/wowotuo/article/details/73379233 

[20] Sonder _ Paid media vs owned – has the pendulum swung too far
https://www.wearesonder.com/paid-media-vs-owned-has-the-pendulum-swung-too-far/

[21] AI Seminar(目錄)
http://hemingwang.blogspot.com/2019/01/ai-seminar.html

Machine Learning

Machine Learning

2019/04/22

-----


Fig. Machine Learning(圖片來源)。

-----

說明:

本文參考 [1] 的架構,將十個主要機器學習演算法 [2] 分成六大類。

C4.5
k-Means
SVM
Apriori
EM
PageRank
AdaBoost
kNN
Naive Bayes
CART

-----

I. Set
II. Metric
III. Linear Algebra
IV. Probability and Statistics
V. Information Theory
VI. Numerical Computation

-----

I. Set

ML(一):Apriori

-----

II. Metric

ML(二):k-Means

ML(三):k-NN

-----

III. Linear Algebra

ML(四):FA

ML(五):PCA

ML(六):LDA

ML(七):SVD

ML(八):t-SNE

ML(九):SVM

-----

IV. Probability and Statistics

ML(一0):Naive Bayes

ML(一一):HMM

ML(一二):Linear Regression

ML(一三):Logistic Regression

ML(一四):Ridge Regression

ML(一五):Lasso Regression

ML(一六):EM

ML(一七):Gibbs

ML(一八):Viterbi
 
-----

V. Information Theory

ML(一九):Maximum Entropy

ML(二0):Decision Tree

ML(二一):Pruning

ML(二二):Random Forest

ML(二三):AdaBoost

ML(二四):XGBoost

-----

VI. Numerical Computation

ML(二五):ALS

ML(二六):PageRank

-----

References

[1] Deep Learning Book - The Star Also Rises

[2] Top 10
Wu, Xindong, et al. "Top 10 algorithms in data mining." Knowledge and information systems 14.1 (2008): 1-37.

[3] Trends
Jordan, Michael I., and Tom M. Mitchell. "Machine learning: Trends, perspectives, and prospects." Science 349.6245 (2015): 255-260.

[4] TensorFlow和spark的ml以及python的scikit-learn 三者的区别是什么? - 知乎

Saturday, July 03, 2021

YOLO(四):Appendix

 YOLO(四):Appendix

2021/06/23

-----


說明:

YOLO v3 的損失函數。

K x K:網格數目。

M:bounding box 個數。

λcoord:座標的比重。

λnoobj:無預測到物件的比重(要減少 no obj 的比重)。

I obj:是否含有物體,含有 1,不含是 0。

(2-wxh) 的比例係數,用來加大對小 box 的損失。

hat(x y w h):無 hat 為預測值,有 hat 為 ground truth。

C:Confidence

p:該類別的機率

Loss

https://zhuanlan.zhihu.com/p/119998277

https://blog.csdn.net/bblingbbling/article/details/106910026

YOLO 之前使用 softmax 分類,但這不適用於多類別譬如 woman 同時也是 person。因此 YOLOv3 把損失函數的分類部分改為 BCE Binary Cross Entropy。

https://medium.com/%E7%A8%8B%E5%BC%8F%E5%B7%A5%E4%BD%9C%E7%B4%A1/yolo-v3-%E7%89%A9%E4%BB%B6%E5%81%B5%E6%B8%AC-%E8%AB%96%E6%96%87%E6%95%B4%E7%90%86-11ee909430c8

i 是網格。p hat:1 或 0,single label 有一個 target 為 1。multi label 有多個 target 為 1。target 的 loss 計算前半部,非 target 的 loss 計算後半部。

https://towardsdatascience.com/cross-entropy-for-classification-d98e7f974451

-----


# Zero-Centered

說明:


-----


# Zero-Centered

說明:


https://zhuanlan.zhihu.com/p/143747206

-----


Figure 1. Illustration of our framework. (a) FPN backbone. (b) Bottom-up path augmentation. (c) Adaptive feature pooling. (d) Box branch. (e) Fully-connected fusion. Note that we omit channel dimension of feature maps in (a) and (b) for brevity.

圖 1. 我們的框架圖解。 (a) FPN 主幹。 (b) 自下而上的路徑增強。 (c) 自適應特徵池化。 (d) 箱分支。 (e) 全連接融合。 請注意,為簡潔起見,我們在 (a) 和 (b) 中省略了特徵圖的通道維度。

# PANet

說明:

紅線經由卷積可以保留較多的語義特徵。綠線經由下取樣可以保留較多的輪廓特徵。

a. FPN。由上而下的語義增強。經過卷積之後,上層的特徵圖有較強的語義特徵,上取樣之後相加,則較低的特徵圖也就擁有較強的語義特徵。語義特徵有助於分類。

b. 由下而上的作法可以保留較多的輪廓特徵。輪廓特徵有助於建議框的預測或物體分割。

https://www.gushiciku.cn/pl/pnty/zh-tw

-----




# YOLOv4

說明:


-----


# YOLOv4

說明:


-----


# YOLOv4

說明:


-----


# YOLOv4

說明:


-----

# Vehicle Trajectory

Seong, Seonkyeong, et al. "Determination of vehicle trajectory through optimization of vehicle bounding boxes using a convolutional neural network." Sensors 19.19 (2019): 4263.

https://pdfs.semanticscholar.org/567a/a9a3a2807ee9e15ab5328b1f210b7d4e962c.pdf


# YOLOv2 Structure

Seong, Seonkyeong, et al. "Determination of vehicle trajectory through optimization of vehicle bounding boxes using a convolutional neural network." Sensors 19.19 (2019): 4263.

https://www.mdpi.com/1424-8220/19/19/4263/pdf


# Zero-Centered

Kim, Sungrae, and Hyun Kim. "Zero-Centered Fixed-Point Quantization With Iterative Retraining for Deep Convolutional Neural Network-Based Object Detectors." IEEE Access 9 (2021): 20828-20839.

https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9336635


# PANet

Liu, Shu, et al. "Path aggregation network for instance segmentation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2018.

https://openaccess.thecvf.com/content_cvpr_2018/papers/Liu_Path_Aggregation_Network_CVPR_2018_paper.pdf

-----

YOLO(二):Overview

YOLO(二):Overview

2020/12/25

-----


https://pixabay.com/zh/photos/yolo-life-neon-letters-on-2817390/

-----

◎ Abstract

-----

◎ Introduction

-----

本論文要解決(它之前研究)的(哪些)問題(弱點)? 

-----


# A Survey of Deep Learning-based Object Detection

說明:


-----

◎ Method

-----

解決方法? 

-----


# YOLO。

-----

具體細節?

https://hemingwang.blogspot.com/2021/05/yoloillustrated.html

-----

◎ Result

-----

本論文成果。 

-----

◎ Discussion

-----

本論文與其他論文(成果或方法)的比較。 

-----

成果比較。 

-----

方法比較。 

-----

◎ Conclusion 

-----

◎ Future Work

-----

後續相關領域的研究。 

-----

後續延伸領域的研究。

-----

◎ References

-----

# Faster R-CNN。被引用 23747 次。

Ren, Shaoqing, et al. "Faster r-cnn: Towards real-time object detection with region proposal networks." Advances in neural information processing systems. 2015.

https://proceedings.neurips.cc/paper/2015/file/14bfa6bb14875e45bba028a21ed38046-Paper.pdf


# YOLO。被引用 12295 次。

Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.

https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Redmon_You_Only_Look_CVPR_2016_paper.pdf


# Mask R-CNN。被引用 8887 次。

He, Kaiming, et al. "Mask r-cnn." Proceedings of the IEEE international conference on computer vision. 2017.

https://openaccess.thecvf.com/content_ICCV_2017/papers/He_Mask_R-CNN_ICCV_2017_paper.pdf

-----

# A Survey of Deep Learning-based Object Detection

Jiao, Licheng, et al. "A survey of deep learning-based object detection." IEEE Access 7 (2019): 128837-128868.

https://arxiv.org/pdf/1907.09408.pdf

-----

YOLO(三):Illustrated

 YOLO(三):Illustrated

2021/05/26

-----


# A Survey of Deep Learning-based Object Detection

說明:

Two-stage and one-stage。

-----

AP、mAP。

https://blog.paperspace.com/mean-average-precision/

https://jonathan-hui.medium.com/map-mean-average-precision-for-object-detection-45c121a31173

https://zhuanlan.zhihu.com/p/88896868

https://chih-sheng-huang821.medium.com/%E6%B7%B1%E5%BA%A6%E5%AD%B8%E7%BF%92%E7%B3%BB%E5%88%97-%E4%BB%80%E9%BA%BC%E6%98%AFap-map-aaf089920848

http://hemingwang.blogspot.com/2018/04/machine-learning-conceptmean-average.html

-----


Figure 1: The YOLO Detection System. Processing images with YOLO is simple and straightforward. Our system (1) resizes the input image to 448 × 448, (2) runs a single convolutional network on the image, and (3) thresholds the resulting detections by the model’s confidence.

圖 1:YOLO 檢測系統。 使用 YOLO 處理圖像簡單明瞭。 我們的系統 (1) 將輸入圖像的大小調整為 448 × 448,(2) 在圖像上運行單個卷積網路,以及 (3) 通過模型的置信度對結果檢測進行閾值處理。

# YOLOv1

說明:

1. 調整圖片大小為 448 x 448。

2. 用卷積網路進行一階段的物件偵測。

3. 設定 thresholds,用 NMS 去除重複的偵測(只留可能性最高的那一個,其他跟最高那一個若有大部分重疊,則去除)。

-----


Figure 3. In object detection, first category independent region proposals are generated. These region proposals are then assigned a score for each class label using a classification network and their positions are updated slightly using a regression network. Finally, non-maximum-suppression is applied to obtain detections.

圖 3. 在目標檢測中,生成第一類獨立區域提議。 然後使用分類網路為每個類標籤分配這些區域提議的分數,並使用回歸網路稍微更新它們的位置。 最後,應用非最大抑制來獲得檢測。

# NMS

說明:

非最大抑制的流程。先生成建議框。然後按照類別作分群。然後用上面的 NMS 去除重複的預測。

-----


Figure 2: The Model. Our system models detection as a regression problem. It divides the image into an S ×S grid and for each grid cell predicts B bounding boxes, confidence for those boxes, and C class probabilities. These predictions are encoded as an S × S × (B * 5 + C) tensor.

圖 2:模型。 我們的系統將檢測建模為回歸問題。 它將圖像劃分為 S × S 網格,並為每個網格單元預測 B 個邊界框、這些框的置信度和 C 類概率。 這些預測被編碼為 S × S × (B * 5 + C) 張量。

# YOLOv1

說明:

7 × 7 × (2 * 5 + 20)。

YOLO v1 共有 49 個網格,每個網格可以預測兩張圖片(共 20 種類別,每個類別有一個可能性)。每張圖片有五個要素,分別是置信度 confidence、中心點 x y,寬、高。中心會落在網格內。

Confidence 在論文中的定義是:Pr( Object ) * IOU truth pred。此預測為物件的機率乘以預測框與真實框的 IoU,Intersection of Union。

「如預期沒有任何物件落在這個網格內,則所有信心程度均應為0;若否則依物件可能性及估計框架與實際框架重合程度計算信心程度。」

https://python5566.wordpress.com/2019/02/14/deep-learning-notes-object-detection-model-yolo/

圖片上方是 B * 5,下方是 C(值最大那一個)。

-----


Figure 3: The Architecture. Our detection network has 24 convolutional layers followed by 2 fully connected layers. Alternating 1 × 1 convolutional layers reduce the features space from preceding layers. We pretrain the convolutional layers on the ImageNet classification task at half the resolution (224 × 224 input image) and then double the resolution for detection.

圖 3:架構。 我們的檢測網路有 24 個卷積層,後跟 2 個全連接層。 交替的 1 × 1 卷積層減少了前一層的特徵空間。 我們在 ImageNet 分類任務上以一半的分辨率(224 × 224 輸入圖像)預訓練卷積層,然後將分辨率提高一倍以進行檢測。

# YOLOv1

說明:

論文中提到,YOLO 的網路架構是受到 GoogLeNet 的啟發。但 YOLO 主要用 1 x 1 降維以及 3 x 3 卷積(參考附圖)。某些 3 x 3 之前會使用 1 x 1。

-----


模型的輸出

YOLOv1

S × S × (B * 5 + C)。

7 × 7 × (2 * 5 + 20)。

YOLOv2

S × S × B * (5 + C)。

13 × 13 × 5 * (5 + 20)。

YOLOv3

S × S × B * (5 + C)。

13 × 13 × 3 * (5 + 80)。26 × 26 × 3 * (5 + 80)。52 × 52 × 3 * (5 + 80)。

YOLOv4

S × S × B * (5 + C)。

19 × 19 × 3 * (5 + 80)。38 × 38 × 3 * (5 + 80)。76 × 76 × 3 * (5 + 80)。

-----

https://medium.com/ching-i/yolo%E6%BC%94%E9%80%B2-1-33220ebc1d09

https://zhuanlan.zhihu.com/p/49995236

https://zhuanlan.zhihu.com/p/143747206

-----



Loss function

# YOLOv1

說明:

1. I_obj_ij:第 i 個網格,第 j 個 box。有物件則為 1。 

2. 無 hat 與有 hat 分別為 ground truth 與預測。但 v2 論文是無 hat 為預測。

https://medium.com/ching-i/yolo%E6%BC%94%E9%80%B2-1-33220ebc1d09

3. I_noobj_ij:第 i 個網格,第 j 個 box。無物件則為 1。 

以 GT 10 x 10 與 100 x 100 為例,若誤差為 10。預測為 20 x 20 與 110 x 110。無根號版本 loss 都是 10,這不合理,因為小框比較離譜,loss 應該比較大。有根號版本,則 loss 分別為 3.43 與 0.48,就比較合理。

https://zhuanlan.zhihu.com/p/49995236

-----


Parameters

# YOLOv1

說明:

λcoord = 5,強調物體定位的能力。λnoobj = 0.5,降低非物件的比重。

-----


Table 6: Darknet-19.

# YOLOv2

說明:

YOLO v2 的架構。GoogLeNet(使用 1 x 1 卷積)與 VGGNet 的綜合體(使用 3 x 3 卷積)。

-----


# YOLOv2 Structure

說明:

架構與論文稍有不同。放此圖主要說明輸出為 13 x 13。此處的輸出部分 40 又與其他版本的 125 不同。

去除全連接層。兩路串接 2048 + 1024 = 3072。

https://jonathan-hui.medium.com/real-time-object-detection-with-yolo-yolov2-28b1b93e2088

-----


# YOLO v2

說明:

經由聚類而成,五種大小的 Anchor Box。

-----


Figure 2. Bounding boxes with dimension priors and location prediction. We predict the width and height of the box as offsets from cluster centroids. We predict the center coordinates of the box relative to the location of filter application using a sigmoid function. This figure blatantly self-plagiarized from [15].

圖 2. 具有維度先驗和位置預測的邊界框。 我們將框的寬度和高度預測為與集群質心的偏移量。 我們使用 sigmoid 函數預測框相對於過濾器應用位置的中心坐標。 這張圖公然自抄襲 [15]。

# YOLOv3

說明:

cx 與 cy 是 grid cell(藍點所在的那個 cell)左上角的座標。每個 grid cell 邊長為 1。cx = 1,cy = 1。

tx 與 ty 是預測框的中心點 offset,用 sigmoid 把值限定在 0 與 1 之間。

bx 與 by 就是預測框的中心點。

Pw 跟 Ph 是 anchor box 的寬高。Tw 跟 Th 是指數的縮放比例,0 的時候表示預測值等於 anchor box。

bw 與 bh 就是預測框的寬高。

https://zhuanlan.zhihu.com/p/49995236

-----


# YOLOv2

說明:

第五列為 confidence 的公式。預測的 to,經過 sigmoid 後,會等於 confidence。

-----


Table 2: The path from YOLO to YOLOv2. Most of the listed design decisions lead to significant increases in mAP. Two exceptions are switching to a fully convolutional network with anchor boxes and using the new network. Switching to the anchor box style approach increased recall without changing mAP while using the new network cut computation by 33%.

表 2:從 YOLO 到 YOLOv2 的路徑。 大多數列出的設計決策都會導致 mAP 顯著增加。 兩個例外是切換到帶有錨框的完全卷積網路並使用新網路。 切換到錨框樣式方法在不改變 mAP 的情況下增加了召回率,同時使用新的網路將計算量減少了 33%。

# YOLOv2

說明:

列表可以看出,YOLO v2 對 v1 的改善之處,其中一個是提高解析度。另一個是 dimension priors 與 location prediction。其他則是一些小改進。本篇略過 YOLO v2,以 YOLO v3 為重點,加以講解。Anchor Box 指的是固定的 Anchor Box,dimension priors 指的是經過聚類而成的 Anchor Box。

https://tangh.github.io/articles/yolo-from-v1-to-v4/

-----


# Focal Loss

說明:

YOLOv2 被 Focal Loss消遣了。

-----


# YOLOv3

說明:

YOLOv3 反消遣 Focal Loss。

-----


# YOLOv3

說明:

YOLO v3 的骨幹網路。跟 YOLO v2 類似,都是 GoogLeNet(使用 1 x 1 卷積)與 VGGNet 的綜合體(使用 3 x 3 卷積)。去除了所有的 max-pooling,增加了 Conv1 與 Conv3 的個數。以及引進 ResNet 的恆等映射。

-----


# YOLOv3 Plus

說明:

13 x 13 x 18。18 為特徵圖數目,非輸出。

特別注意上取樣的部分:直接將一個像素增加為四個。One pixel is transformed into a 4 pixels in a 2x2 area.

https://stackoverflow.com/questions/60333349/what-is-the-upsampling-technique-used-in-yolov3-upsampling-layers-no-resources

Leaky ReLU 用來解決 dead ReLU ,某些神經元不會被激活,導致某些參數不會被更新的問題。

https://zhuanlan.zhihu.com/p/25110450

-----



YOLOv3

Anchor (Feature Map):Anchor Box

13 * 13: (116 x 90),(156 x 198),(373 x 326)。

26 * 26: (30 x 61),(62 x 45),(59 x 119)。

52 * 52: (10 x 13),(16 x 30),(33 x 23)。

說明:

「在最小的 13*13 特徵圖上由於其感受野最大故應用最大的 anchor box (116x90),(156x198),(373x326),(這幾個坐標是針對 416*416 下的,當然要除以 32 把尺度縮放到 13*13下),適合檢測較大的目標。中等的 26*26 特徵圖上由於其具有中等感受野故應用中等的 anchor box (30x61),(62x45),(59x119),適合檢測中等大小的目標。較大的 52*52 特徵圖上由於其具有較小的感受野故應用最小的 anchor box (10x13),(16x30),(33x23),適合檢測較小的目標。」

https://zhuanlan.zhihu.com/p/49995236

-----


# YOLOv3 Plus

說明:

原始的 SPP。進行不同維度的最大池化後,接到全連接層。

-----


# YOLOv3 Plus

說明:

改進後的 SPP。此處用 padding 保持原來大小。

另一版本為「SPP:採用 1×1,5×5,9×9,13×13 的最大池化的方式,進行多尺度融合。」

https://zhuanlan.zhihu.com/p/143747206

-----


# YOLOv4 Structure

說明:

YOLOv4 = CSPNet + SPP +(FPN)+ PAN。

a. FPN。由上而下的語義增強。經過卷積之後,上層的特徵圖有較強的語義特徵,上取樣之後相加,則較低的特徵圖也就擁有較強的語義特徵。語義特徵有助於分類。

b. 由下而上的作法可以保留較多的輪廓特徵。輪廓特徵有助於建議框的預測或物體分割。

-----




# CSPNet

說明:

YOLO v4 的骨幹網路,CSPNet。要點在只取一半數目的特徵圖加以運算,再跟原來的特徵圖重新疊加。

-----


Figure 1. (a) Using an image pyramid to build a feature pyramid. Features are computed on each of the image scales independently, which is slow. (b) Recent detection systems have opted to use only single scale features for faster detection. (c) An alternative is to reuse the pyramidal feature hierarchy computed by a ConvNet as if it were a featurized image pyramid. (d) Our proposed Feature Pyramid Network (FPN) is fast like (b) and (c), but more accurate. In this figure, feature maps are indicate by blue outlines and thicker outlines denote semantically stronger features.

圖 1. (a) 使用圖像金字塔構建特徵金字塔。 特徵是在每個圖像尺度上獨立計算的,這很慢。(b) 最近的檢測系統選擇僅使用單尺度特徵來進行更快的檢測。(c) 另一種方法是重用 ConvNet 計算的金字塔特徵層次結構,就好像它是特徵化圖像金字塔一樣。(d) 我們提出的特徵金字塔網絡 (FPN) 與 (b) 和 (c) 一樣快,但更準確。 在該圖中,特徵圖由藍色輪廓表示,較粗的輪廓表示語義更強的特徵。

# FPN

說明:

a. 每個尺度都檢測,慢。

b. 在最後一層檢測,快。主要研究成果是 YOLO v1。

c. 在最後幾層檢測,快,主要研究成果是 SSD。

d. FPN,特徵金字塔網路,YOLO v3 加上此網路進行檢測。

特徵圖由藍色輪廓表示,較粗的輪廓表示語義更強的特徵。

-----


# YOLOv4

說明:

改成疊加效果比相加好,但維度增加,計算量增加。

https://medium.com/ching-i/yolo%E6%BC%94%E9%80%B2-3-yolov4%E8%A9%B3%E7%B4%B0%E4%BB%8B%E7%B4%B9-5ab2490754ef

https://www.jianshu.com/p/fa9b8b4361e8

-----


# YOLOv4

說明:

YOLO v4 與其他網路的比較,主要可看 YOLO v3。經過很多地方的小改良,加總成為大改良。

-----


模型的輸出

YOLOv1

S × S × (B * 5 + C)。

7 × 7 × (2 * 5 + 20)。

YOLOv2

S × S × B * (5 + C)。

13 × 13 × 5 * (5 + 20)。

YOLOv3

S × S × B * (5 + C)。

13 × 13 × 3 * (5 + 80)。26 × 26 × 3 * (5 + 80)。52 × 52 × 3 * (5 + 80)。

YOLOv4

S × S × B * (5 + C)。

19 × 19 × 3 * (5 + 80)。38 × 38 × 3 * (5 + 80)。76 × 76 × 3 * (5 + 80)。

-----

References


# A Survey of Deep Learning-based Object Detection

Jiao, Licheng, et al. "A survey of deep learning-based object detection." IEEE Access 7 (2019): 128837-128868.

https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8825470


YOLO v1

Redmon, Joseph, et al. "You only look once: Unified, real-time object detection." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.

https://www.cv-foundation.org/openaccess/content_cvpr_2016/papers/Redmon_You_Only_Look_CVPR_2016_paper.pdf


YOLO v2

Redmon, Joseph, and Ali Farhadi. "YOLO9000: better, faster, stronger." arXiv preprint (2017).

http://openaccess.thecvf.com/content_cvpr_2017/papers/Redmon_YOLO9000_Better_Faster_CVPR_2017_paper.pdf


YOLO v3

Redmon, Joseph, and Ali Farhadi. "Yolov3: An incremental improvement." arXiv preprint arXiv:1804.02767 (2018).

https://arxiv.org/pdf/1804.02767.pdf


YOLO v4

Bochkovskiy, Alexey, Chien-Yao Wang, and Hong-Yuan Mark Liao. "YOLOv4: Optimal Speed and Accuracy of Object Detection." arXiv preprint arXiv:2004.10934 (2020).

https://arxiv.org/pdf/2004.10934.pdf


# YOLOv3 Plus

Zhou, Jun, et al. "Improved uav opium poppy detection using an updated yolov3 model." Sensors 19.22 (2019): 4851.

https://www.mdpi.com/1424-8220/19/22/4851/pdf


# Zero-Centered

Kim, Sungrae, and Hyun Kim. "Zero-Centered Fixed-Point Quantization With Iterative Retraining for Deep Convolutional Neural Network-Based Object Detectors." IEEE Access 9 (2021): 20828-20839.

https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=9336635


# NMS

Bodla, Navaneeth, et al. "Soft-NMS--improving object detection with one line of code." Proceedings of the IEEE international conference on computer vision. 2017.

https://openaccess.thecvf.com/content_ICCV_2017/papers/Bodla_Soft-NMS_--_Improving_ICCV_2017_paper.pdf


# YOLOv4 Structure

Lyu, Jianjun, et al. "Extracting the Tailings Ponds from High Spatial Resolution Remote Sensing Images by Integrating a Deep Learning-Based Model." Remote Sensing 13.4 (2021): 743.

https://www.mdpi.com/2072-4292/13/4/743/pdf


# FPN

Lin, Tsung-Yi, et al. "Feature pyramid networks for object detection." Proceedings of the IEEE conference on computer vision and pattern recognition. 2017.

https://openaccess.thecvf.com/content_cvpr_2017/papers/Lin_Feature_Pyramid_Networks_CVPR_2017_paper.pdf

-----

Real-time Object Detection with YOLO, YOLOv2 and now YOLOv3 | by Jonathan Hui | Medium

https://jonathan-hui.medium.com/real-time-object-detection-with-yolo-yolov2-28b1b93e2088


What’s new in YOLO v3?. A review of the YOLO v3 object… | by Ayoosh Kathuria | Towards Data Science

https://towardsdatascience.com/yolo-v3-object-detection-53fb7d3bfe6b


Review: YOLOv3 — You Only Look Once (Object Detection) | by Sik-Ho Tsang | Towards Data Science

https://towardsdatascience.com/review-yolov3-you-only-look-once-object-detection-eab75d7a1ba6


Implementing YOLO-V3 Using PyTorch

http://leiluoray.com/2018/11/10/Implementing-YOLOV3-Using-PyTorch/


Tutorial on implementing YOLO v3 from scratch in PyTorch

https://blog.paperspace.com/how-to-implement-a-yolo-object-detector-in-pytorch/


从零开始PyTorch项目:YOLO v3目标检测实现 | 机器之心

https://www.jiqizhixin.com/articles/2018-04-23-3


超详细的Pytorch版yolov3代码中文注释详解(一) - 知乎

https://zhuanlan.zhihu.com/p/49981816

-----

Wednesday, June 30, 2021

astrolog

 astrolog

2021/06/30

-----


月合海。

-----

癸己甲辛

酉酉午丑

-----

里程碑。家庭的溫暖。

-----