Thursday, May 24, 2018

Math Concept(一):Lagrange Multipliers

Math Concept(一):Lagrange Multipliers

2018/05/24

前言:


Summary:


-----


Fig. 1. Example 1 [12].

-----

一、介紹
二、核心觀念
三、數學基礎
四、進階討論
五、相關應用 


-----

一、介紹




-----

二、核心觀念

核心觀念(幾何)

-----


Fig. 2.1. Example 2-1 [7].



Fig. 2.2. Example 2-2 [7].

-----

核心觀念(代數)



Fig. 3.1. [2].




Fig. 3.2. [17].



Fig. 3.2. Lagrange multipliers method [4].

-----

三、數學基礎

梯度
方向導數
(法向量)
切平面

-----

四、進階討論



-----

五、相關應用

Lagrange 乘數法在經濟學 [17], [22] 與統計學 [23], [25] 上亦有相關應用。

「約束最佳化在經濟學占有很重要的地位。例如一個消費者的選擇問題可以被視為一個求效用方程式在預算約束下的最大值問題。拉格朗日乘數在經濟學中被解釋為影子價格,設定在某種約束下,在這裡即收入的邊際效用。」[17]

「尋找統計方法的過程中,常需要在限制條件下找極大或極小值,如最小平方、最大概似等。在概度比檢定中,H0 即是有限制的模型,因此找 H0 下參數之估計 (為了求最大概似度) 時,就會涉及 Lagrange 乘數法的應用。類別資料中多項群體參數之估計,因各細格機率和為 1,也可用 Lagrange 法求解。」[23]

拉格朗日乘數檢驗,英文是 Lagrange multiplier test,或者叫做 Score test,是一種常用的統計檢驗 [24]。「拉氏 (Lagrange) 乘數檢定。 顯示拉氏 (Lagrange) 乘數檢定統計量,以供您評估使用離差或皮爾森 (Pearson) 卡方檢定計算之尺度參數的有效性,或為常態、Gamma、反向高斯 (Gaussian) 和 Tweedie 分配在固定數字設定之尺度參數的有效性。對於負值二項式分配,此檢定會固定輔助參數。」[25]

-----

結論:



-----

References

一、介紹

// SVM
[1] 實作二元SVM分類器 – 吳政龍 – Medium
https://medium.com/@ZhengLungWu/%E5%AF%A6%E4%BD%9C%E4%BA%8C%E5%85%83svm%E5%88%86%E9%A1%9E%E5%99%A8-68d551716de3

//由連鎖法則,行列式等於0,所以有 lamda
[2] Lagrange 乘數法
http://episte.math.ntu.edu.tw/entries/en_lagrange_mul/index.html

// 兩個法向量為何要成比例? // 因為平行(切線是同一條)
[3] Lagrange 乘數 - YouTube
https://www.youtube.com/watch?v=3ahgXXv-_j8

// 有不錯的例子
[4] 11-10-Lagrange乘子法
http://calculus.yuyumagic424.net/wp-content/uploads/2013/03/11-10-Lagrange%E4%B9%98%E5%AD%90%E6%B3%95.pdf

二、核心觀念

// 梯度跟函数等高线是垂直的
[5] 拉格朗日乘子法 _ Jermmy's Lazy Blog
http://jermmy.xyz/2017/07/27/2017-7-27-understand-lagrange-multiplier/

// 即在最优点 x∗,梯度 ∇g(x) 和 ∇f(x) 的方向必相同或相反 // 也就是平行
[6] 机器学习之拉格朗日乘数法 _ coder_ss's blog
http://guoshangshu.com/2016/11/07/machine_learning/lagrange/

// 如果两个向量平行,则其中一个向量是另一个向量的倍数
[7] 多变量微积分笔记6——拉格朗日乘数法 - CSDN博客
https://blog.csdn.net/sunbobosun56801/article/details/79391654

三、數學基礎

[8] 梯度 - YouTube
https://www.youtube.com/watch?v=npkl19rcpdY

[9] 方向導數 - YouTube
https://www.youtube.com/watch?v=-DumtBiW4HE&t=51s

[10] 切平面 - YouTube
https://www.youtube.com/watch?v=Gvzs6ENj7F0

// 該點的梯度,也就是該處的法向量
[11] 梯度、方向導數與切平面
http://calculus.yuyumagic424.net/wp-content/uploads/2013/02/%E6%A2%AF%E5%BA%A6%E3%80%81%E6%96%B9%E5%90%91%E5%B0%8E%E6%95%B8%E8%88%87%E5%88%87%E5%B9%B3%E9%9D%A2.pdf

[12] Gradient - Wikipedia
https://en.wikipedia.org/wiki/Gradient

[13] Derivative - Wikipedia
https://en.wikipedia.org/wiki/Derivative

[14] Directional derivative - Wikipedia
https://en.wikipedia.org/wiki/Directional_derivative

// 曲面在某點 P 處的法線為垂直於該點切平面(tangent plane)的向量
[15] 法線 - 維基百科,自由的百科全書
https://zh.wikipedia.org/wiki/%E6%B3%95%E7%BA%BF

[16] Tangent space - Wikipedia
https://en.wikipedia.org/wiki/Tangent_space

四、進階討論

// wiki, 基本的
[17] 拉格朗日乘數 - 維基百科,自由的百科全書
https://zh.wikipedia.org/wiki/%E6%8B%89%E6%A0%BC%E6%9C%97%E6%97%A5%E4%B9%98%E6%95%B0 

// 高微嚴謹的證明
[18] lagrange-c
https://yclinpa.files.wordpress.com/2017/01/lagrange-c.pdf

// 講的很神,最後再看
[19] Lagrange 乘數法 _ 線代啟示錄
https://ccjou.wordpress.com/2012/05/30/lagrange-%E4%B9%98%E6%95%B8%E6%B3%95/

[20] Lagrange multiplier - Wikipedia
https://en.wikipedia.org/wiki/Lagrange_multiplier 

[21] 拉格朗日乘子法如何理解? - 知乎
https://www.zhihu.com/question/38586401 
  
五、應用

// 我們希望得到最大的效用,這是一個有限制條件的極值問題,令. f(x,y)=Px x+Py y-B=0. 由Lagrange 乘子法
[22] 經濟學應用:無差異曲線
http://episte.math.ntu.edu.tw/applications/ap_curve/index.html

// 統計
[23] Lagrange 乘數在統計上的應用
http://www.stat.ncku.edu.tw/bgsf/dissemination/talk/8-8.txt 

// 拉氏 (Lagrange) 乘數檢定。
[24] IBM Knowledge Center - 概化線性模型統計量
https://www.ibm.com/support/knowledgecenter/zh-tw/SSLVMB_24.0.0/spss/advanced/idh_idd_genlin_statistics.html 

// Lagrange multiplier test,或者叫做 Score test,是一种常用的统计检验
[25] 拉格朗日乘数检验 – Little Tail
https://zhanxw.com/blog/2014/12/%E6%8B%89%E6%A0%BC%E6%9C%97%E6%97%A5%E4%B9%98%E6%95%B0%E6%A3%80%E9%AA%8C/

Math Concept(二):Kernel Function

Math Concept(二):Kernel Function

2018/05/24

Monday, May 21, 2018

Deep Learning Paper(三):YOLO v1

Deep Learning Paper(三):YOLO v1

2018/05/21

前言:

YOLO 可說是 object detection 第一個成功的 end-to-end(整合良好,不是好幾個演算法湊成一個)的演算法。而後的 YOLO v2 與 v3 更在效能與準確率都取得了極大的成功。本文簡介 YOLO v1 的架構與原理。

-----

Summary:

在學習 YOLO [1], [2] 之前,必須對 mAP [3] 與 NMS [4] 有基本的認識,才能夠進一步探討 YOLO 這個 object detection 演算法。本文參考了網路上 YOLO 的說明文章 [5]-[16] 與程式碼[17]-[21]。最後說明為何使用 Leaky ReLU 這個 activation function [22]-[24]。

-----


Fig. 1. The YOLO Detection System [1].

-----

Outline

一、YOLO
二、Model
三、Loss Function
四、NMS
五、Leaky ReLU

-----

一、YOLO

YOLO 這個 object detection 的演算法主要可分為三個步驟。第一、輸入的圖片先把它更新到 448x448 的正方形大小。第二、整張圖片放入一個 CNN 網路運算。第三、演算法最後的輸出是幾個物件的中心、大小、與類別的 confidence。參考圖1,左邊 0.64 的可能是人,中間 0.30 的可能性是狗,右邊 0.28 的可能性是馬(示範圖片不能算是一個好的結果)。
 
-----

二、Model

YOLO 的作法是先把正方形平均分為 7x7 個小塊。每個小塊可以預測兩個物件框的中心位置、大小、與類別。限制條件是中心位置必須落在小塊裡面。

所以一開始的輸出會有 98 個可能物件,去掉無效的框框(演算法認為不是一個物體),然後透過 NMS [4] 把重複的物件去除。然後再根據這個物件框的最大可能類別,最後就是圖2右邊識別出來的三個物件。

圖2是模型的原理,可以搭配圖3.1與圖3.2一起理解。

首先分成 7x7 個小塊。每個小塊分別可以產生兩個建議框,資訊包含框的中心 (x, y)(必須落於小塊內)、框的寬高 w, h,以及框框是物件,或者非物件。如圖2中間上方所示。這 10 個 bytes 也就是圖3.1最後輸出的前十個資訊。

圖2中間下方則是每個小塊最有可能的類別(二十種其可信度最高者),類別的資訊是由上面的框框決定。這 20 個 bytes 也就是圖3.1最後輸出的後二十個資訊。二十個可信度由兩個框框共享,所以這小塊延伸的兩個框框預測的是同一種物件(可信度最高那種)。如果小塊內有兩個物件,那只能預測出比較大的那一個。

由圖2中間上方可以看到重複性非常高,所以 NMS 是很有必要的。



Fig. 2. The Model [1].

-----

三、Loss Function

Loss function 可說是整個 YOLO 演算法的重點。重點中的重點則在於圖3.1最右邊,CNN 的輸出。 也就是圖2在論文中的說明:S × S × (B * 5 + C) tensors。

S = 7。
B = 2。
C = 20。

S = 7,7 X 7 個預測框。B = 2,每個框預測 2 個物件(屬於同一種類別)。5 分別是中心 (x, y) 與寬高 w, h,以及是物件或不是物件。然後 C = 20 是這兩個物件屬於二十種類別的 confidences。



Fig. 3.1. The Architecture [1].

-----

如圖3.2,Loss function 希望中心點 (x, y) 要對(第一行)。框框 w, h 要 match(第二行),由於希望減低大框框位移錯誤的比重,所以加上根號 [6], [7], [10], [11]。這個參考圖3.4很容易理解,小 box 的橫軸值較小,發生偏移時,反應到 y 軸上相比大 box 要大 [7]。第三、四行分別為框框被判定是物件還是非物件,非物件重要性降低,係數設為0.5。另外,座標的重要性比較高,係數設為5,如圖3.3所說明。最後則是分類(第五行)。

這邊有個補充,Sheng-min Huang:「7*7 所以會有 49個 cells,x, y 其實只有在算物件在這一格 cell 裡的位置,真正圖裡的位置要先找出 cell 的位置再加上 x, y。」

基本上,就是希望透過訓練集的資料更新網路的 weighting values,以達到較小的誤差值。這跟一般 CNN 沒有不同,只是 YOLO 連物件座標都預測了!


Fig. 3.2. Loss function [1].



Fig. 3.3. Parameters [1].



Fig. 3.4. Root function [7].

-----

四、NMS

比較特別的一點是,圖3.1的網路輸出之後,要先經過 NMS 去除重複的物件,然後再計算第三節的 loss。

「接下來,我們要去解析網絡的預測結果,這裡採用了第一種預測策略,即判斷預測框類別,再 NMS,多虧了 TF 提供了 NMS 的函數 tf.image.non_max_suppression,其實實現起來很簡單,所有的細節前面已經交代了。」[17]

-----

五、Leaky ReLU

在 AlexNet 大獲成功之後,ReLU 廣受歡迎,YOLO 使用更新的 Leaky ReLU [22]-[24]。

因為「ReLU 會使部分神經元的輸出為0,可以讓神經網路變得稀疏,緩解過度擬合的問題。但衍生出另一個問題是,如果把一個神經元停止後,就難以再次開啟(Dead ReLU Problem),因此又有 Leaky ReLU 類等方法」來解決這個問題 [22]。

-----

結論:

YOLO 這篇論文前後看了很久,但只要先搞清楚 mAP、NMS,那 YOLO 其實只是利用 CNN 同時判斷框框的位置與大小。講是容易,但能夠想到這一層,YOLO 可說是天才之作。

-----

References

[1] 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

[2] YOLO论文翻译——中文版
http://noahsnail.com/2017/08/02/2017-8-2-YOLO%E8%AE%BA%E6%96%87%E7%BF%BB%E8%AF%91%E2%80%94%E2%80%94%E4%B8%AD%E6%96%87%E7%89%88/

[3] Machine Learning Concept(一):Mean Average Precision(mAP)
http://hemingwang.blogspot.tw/2018/04/machine-learning-conceptmean-average.html

[4] Machine Learning Concept(二):Non-Maximum Suppression(NMS)
http://hemingwang.blogspot.tw/2018/04/machine-learning-conceptnon-maximum.html

-----

基本說明

[5] YOLO — You Only Look Once 介紹 – Chenchou LO – Medium
https://medium.com/@chenchoulo/yolo-%E4%BB%8B%E7%B4%B9-4307e79524fe

[6] 论文阅读笔记:You Only Look Once  Unified, Real-Time Object Detection - CSDN博客
https://blog.csdn.net/tangwei2014/article/details/50915317

[7] 图解YOLO
https://zhuanlan.zhihu.com/p/24916786 

[8] YOLO详解
https://zhuanlan.zhihu.com/p/25236464 

[9] YOLO模型原理-大数据算法
http://x-algo.cn/index.php/2017/02/28/1767/

[10] You Only Look Once  Unified, Real-Time Object Detection(YOLO)
https://zhuanlan.zhihu.com/p/31427164

[11] RCNN学习笔记(6):You Only Look Once(YOLO) Unified, Real-Time Object Detection - CSDN博客
https://blog.csdn.net/u011534057/article/details/51244354

-----

非基本說明

[12] 深度学习之目标检测-YOLO算法(一) – Eric Fan
https://www.fanyeong.com/2018/01/30/cnn-object-detection-yolo-part1/

[13] 深度学习之目标检测-YOLO算法(二) – Eric Fan
https://www.fanyeong.com/2018/01/31/cnn-object-detection-yolo-part2/

[14] YOLO解读 - 任广辉的博客 _ Sundrops Blog
http://renguanghui.com/2017/11/30/yolo/ 

[15] IOU
DEEP LEARNING之三十六:YOLO 算法(You Only Look Once) – Rethink
http://www.rethink.fun/index.php/2018/03/05/deep-learning36/

[16] C4W3L09 YOLO Algorithm - YouTube
https://www.youtube.com/watch?v=9s_FpMpdYW8

-----

代碼

[17] YOLO算法的原理与实现 - 云+社区 - 腾讯云
https://cloud.tencent.com/developer/article/1052865
 
[18] YOLO,一种简易快捷的目标检测算法 _ 雷锋网
https://www.leiphone.com/news/201801/VfYDZHC7Xa6hJXEK.html 

[19] GitHub - MashiMaroLjc_YOLO  implement the YOLO algorithm using MXNet_Gluon
https://github.com/MashiMaroLjc/YOLO

[20] Darknet  Open Source Neural Networks in C
https://pjreddie.com/darknet/

[21] GitHub - pjreddie_darknet  Convolutional Neural Networks
https://github.com/pjreddie/darknet

-----

Leaky ReLU

[22] 深度學習:使用激勵函數的目的、如何選擇激勵函數 Deep Learning   the role of the activation function _ Mr. Opengate
http://mropengate.blogspot.tw/2017/02/deep-learning-role-of-activation.html

[23] cs231n_2017_lecture6
http://cs231n.stanford.edu/slides/2017/cs231n_2017_lecture6.pdf

[24] Ramachandran, Prajit, Barret Zoph, and Quoc V. Le. "Searching for activation functions." (2018).
https://openreview.net/pdf?id=Hkuq2EkPf
https://arxiv.org/pdf/1710.05941.pdf  

跑步(一三一):10圈

跑步(一三一):10圈

2018/05/19

熱身2,跑(5*2)。

-----

熱,慢慢跑!

Tuesday, May 15, 2018

AI創業日記(六):Minimum Viable Product(MVP)

AI創業日記(六):Minimum Viable Product(MVP)

2017/03/02

前言:

核心成員與商業模式簡介。

-----

Summary:

本「音樂生理學」的研究已進行十年以上,並有多篇論文發表 [1]。以美國為例,安眠藥在美國的市場規模是美金$1.5 billion (2014),可以作為「睡眠音樂」市場預估的參考[2]。

MVP 的部分,目前屬於機密,對此有興趣者,請透過 LinkedIn 聯繫,謝謝!

本團隊從原本三人 [5] 擴增到四人。目前成員以交大博士為主,更多的訊息列於下方。

-----



* Top 10 Best One Piece Characters.

-----

◎ 執行長(CEO):交大電控 PhD。
https://www.linkedin.com/in/marcel-wang-3a988b7a/

-----

研發部:

工業4.0的架構為 ABCI(AI、Big Data、Cloud、IoT)以方便記憶,列舉時則以資料流為順序,前端為物聯網,資料透過雲端儲存,最後是大數據與人工智慧的分析。

◎ IoT
經理:美國賓州大學資工碩士。
專長:Android、Front-end、Back-end。目前負責開發 proto-type。

◎ Cloud

◎ Big Data
大數據架構師:交大資管 PhD。
專長:Hadoop 生態系。目前為海外某公司首席大數據架構師。

◎ AI
資料科學家:交大電控 PhD。
專長:Machine Learning / Deep Learning。目前為某公司資料科學家。

-----

Note *
Top 10 Best One Piece Characters - YouTube
https://www.youtube.com/watch?v=Mz6icVxFr3c  

-----

References


[1] AI創業日記(一):音樂生理學
http://hemingwang.blogspot.tw/2017/09/blog-post.html

[2] AI創業日記(二):市場調查
http://hemingwang.blogspot.tw/2017/09/ai.html

[3] AI創業日記(三):商業模式
http://hemingwang.blogspot.tw/2017/11/aibusiness-model.html

[4] AI創業日記(四):商業模式的討論
http://hemingwang.blogspot.tw/2017/11/ai-1.html

[5] AI創業日記(五):團隊介紹
http://hemingwang.blogspot.tw/2017/11/ai.html

跑步(一三0):10圈

跑步(一三0):10圈

2018/05/13

熱身2,跑(5*2)。

-----

到操場時已經快十點了,太陽不小。不過還是跑了 100m - 300m 的間歇。

Thursday, May 10, 2018

Machine Learning Paper(一):SVM

Machine Learning Paper(一):SVM

2018/05/10



-----


Fig. 1. Maximum margin linear decision function D(x), p. 146 [1].

-----






-----



-----



-----

References

[1] Boser, Bernhard E., Isabelle M. Guyon, and Vladimir N. Vapnik. "A training algorithm for optimal margin classifiers." Proceedings of the fifth annual workshop on Computational learning theory. ACM, 1992.
http://webmail.svms.org/training/BOGV92.pdf

[2] 支援向量機 - 維基百科,自由的百科全書
https://zh.wikipedia.org/wiki/%E6%94%AF%E6%8C%81%E5%90%91%E9%87%8F%E6%9C%BA

[3] [資料分析&機器學習] 第3.4講:支援向量機(Support Vector Machine)介紹 – Yeh James – Medium
https://medium.com/@yehjames/%E8%B3%87%E6%96%99%E5%88%86%E6%9E%90-%E6%A9%9F%E5%99%A8%E5%AD%B8%E7%BF%92-%E7%AC%AC3-4%E8%AC%9B-%E6%94%AF%E6%8F%B4%E5%90%91%E9%87%8F%E6%A9%9F-support-vector-machine-%E4%BB%8B%E7%B4%B9-9c6c6925856b

[4] 機器學習技法 學習筆記 (2):Support Vector Machine (SVM) - YC Note
http://www.ycc.idv.tw/YCNote/post/30

[5] 我所理解的 SVM(支持向量机)- 1
https://zhuanlan.zhihu.com/p/22400898

[6] 支持向量机(SVM)是什么意思? - 知乎
https://www.zhihu.com/question/21094489

[7] Support Vector Machines
http://beta.cambridgespark.com/courses/jpm/05-module.html

[8] 16. Learning  Support Vector Machines - YouTube
https://www.youtube.com/watch?v=_PwhiWxHK8o

[9] Lecture 14 - Support Vector Machines - YouTube
https://www.youtube.com/watch?v=eHsErlPJWUU

[10] 4.3 Support Vector Machines - Machine Learning Class 10-701 - YouTube
https://www.youtube.com/watch?v=bsbpqNIKQzU

Wednesday, May 09, 2018

跑步(一二九):7圈

跑步(一二九):7圈

2018/05/09

熱身2,跑(5*1+2)。

-----

遇到下雨,不過有跑一點 100m - 300m 間歇。

跑步(一二八):10圈

跑步(一二八):10圈

2018/05/05

熱身2,跑(5*2)。

跑步(一二七):10圈

跑步(一二七):10圈

2018/05/02

熱身2,跑(5*2)。

Tuesday, May 08, 2018

Machine Learning Concept(二):Non-Maximum Suppression(NMS)

Machine Learning Concept(二):Non-Maximum Suppression(NMS)

2018/05/08

前言:

物件偵測時,難免會發生重複偵測的現象,大部分演算法都會附加一個 NMS 演算法來處理,但這個功能有沒有可能直接嵌入 CNN 呢?

Summary:

本文討論 object detection [1] 中,YOLO 演算法 [2] 與 Non-Maximum Suppression(NMS,刪除相似偵測)[3]-[8] 的關係。

-----



Fig. 1. Non-Maximum Suppression(NMS)[4].

-----

Outline

一、Non-Maximum Suppression(NMS)
二、YOLO and NMS

-----

一、Non-Maximum Suppression(NMS)

如圖1 所示,在 object detection 中,有時會出現重複偵測的狀況,譬如圖1左有三個相似的偵測結果,置信度分別是 0.9、0.8、0.7,這時你只能留下一個置信度最高的框框,把其餘的刪除,這就是 Non-Maximum Suppression(NMS)。

「非極大值抑制的流程如下:

a. 根據置信度得分進行排序。
b. 選擇置信度最高的比邊界框添加到最終輸出列表中,將其從邊界框列表中刪除。
c. 計算所有邊界框的面積。
d. 計算置信度最高的邊界框與其它候選框的IoU。
e. 刪除IoU大於閾值的邊界框 重複上述過程,直至邊界框列表為空。」[4]

根據以上的演算法加以說明:

a. 必須是要同一類別。
b. 先找出一個置信度最高的框框,假定命名為 T (Target)。輸出列表數目為1。
c ~ e. 設定一個閾值,把跟 T 的 IoT [5] 高於閾值的框框都刪除掉。假定邊界框列表還有一些,那要再挑一個到輸出列表,這時輸出列表數目為2,然後再根據閾值刪除框框,依此原則反覆進行。

重點在於閾值的設定,以圖1為例,如果閾值設為 0.6,則會留下 3 個建議框,0.5 會留下 2 個,0.4 才能剩下一個 [4]。
 
-----

二、YOLO and NMS 

如圖2 所示,YOLO 的最後一步驟是 NMS。

YOLO 的概念簡單描述如下:先把圖片變成正方形,然後裁成 49 個框框,整張正方形丟入 CNN 後,每個框框可以預測兩張圖片的大小位置、與所屬類別(30的類別的置信度),兩張圖片的中心都要落入該框框中 [2]。

以 YOLO 的演算法,出現圖1左的三個框框可能性應該很低(?),最多就是出現兩個框框,這時就可以套用 NMS 去掉一個。

TensorFlow 有提供 NMS 的函式:tf.image.non_max_suppression [6]-[8],YOLO 使用 NMS 的時機則在 CNN 輸出之後,計算 loss 之前。

-----


Fig. 2. YOLO [2].

-----

Conclusion

以 NMS 使用的時機而言,YOLO 「勉強」稱的上是 ent-to-end 的設計,如果 NMS 能由神經網路直接完成,那就更酷了!
-----

References

[1] 關於影像辨識,所有你應該知道的深度學習模型 – Steven Shen – Medium
https://medium.com/@syshen/%E7%89%A9%E9%AB%94%E5%81%B5%E6%B8%AC-object-detection-740096ec4540 

[2]  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

[3] 非極大值抑制(Non-Maximum Suppression,NMS) - 掃文資訊
https://hk.saowen.com/a/ee16d85c2614981f2c5bc9f20ce37b806546b4b954fdbea87cba09774e02267f

[4] 非極大值抑制(Non-Maximum Suppression) - 掃文資訊
https://hk.saowen.com/a/be0b7a61e12326c4d8c6b509b2d2c4a9fce9331ea3bfd81271c1e63dd2e78f18

[5] Machine Learning Concept(一):Mean Average Precision(mAP)
http://hemingwang.blogspot.tw/2018/04/machine-learning-conceptmean-average.html

[6] YOLO算法的原理与实现 - 云+社区 - 腾讯云
https://cloud.tencent.com/developer/article/1052865 

[7] tf.image.non_max_suppression  _  TensorFlow
https://www.tensorflow.org/api_docs/python/tf/image/non_max_suppression

[8] tensorflow_image_ops_impl.py at r1.8 · tensorflow_tensorflow · GitHub
https://cloud.tencent.com/developer/article/1052865

Machine Learning Concept(一):Mean Average Precision(mAP)

Machine Learning Concept(一):Mean Average Precision(mAP)

2018/05/08

前言:

R-CNN 系列已經看了一陣子,YOLO 系列是目前正在看的。要知道這些演算法有多好,你得先知道「好」的標準何在?

Summary:

物件偵測 [1] 的第一步應該是瞭解 mAP 的計算方式 [2]-[11]。本文從基本觀念 [2]-[6] 出發,另外找了相關討論 [7]-[9] 與原始碼 [10],最後是補充資料 [11]。相關資料再配上本文的說明,讀者應可對物件偵測有初步的瞭解。

-----



Fig. 1. Object detection [1].

-----

Outline

一、Object Detection
二、IoU
三、Precision / Recall
四、Average Precision(11-point interpolated average precision)
五、Average Precision(PASCAL VOC 2010)
六、Mean Average Precision
七、mAP@[.5 .95]
八、公式(程式)

-----

一、Object Detection

Mean average precision(mAP)是 object detection 演算法的評估標準。

Object detection,一般翻譯為物件偵測或物體偵測。如圖1 所示,一張圖片,或一個影片的停格,先框出物件,再根據框框裡的物件加以分類,標示名稱,這就是 object detection。

傳統較有名的物件偵測演算法有 DPM、Selective Search 等,新一代的深度學習演算法則有 R-CNN 系列與 YOLO 系列 [1]。

-----
 
二、IoU

一般 object detection 演算法會先在一些資料集上進行訓練與測試,例如 PASCAL 等 [4]。資料集先由人工(或專家)將物件的框框與類別設定好。

演算法選出的框框,不會(不一定會)百分之百與人工設定的框框符合,將這兩個框框的交集除以聯集,是一個判斷標準,一般是設定為 0.5,高於這個值,則表示演算法「偵測」到一個物件,如圖2 所示 [2]。

至於偵測的「物件」是否「存在」,或者這個物件是否被標示為正確的類別,這在下方會繼續說明。



Fig. 2. Intersection over union [2].

-----

三、Precision / Recall

Precision / Recall 有一些不同的翻譯名稱,在此直接以英文跟圖片加以理解。

Precision / Recall,看圖3 則一目了然。

圓圈裡,是所有檢測到的物件(positives),淺綠色的部分是標示正確的(true positives),粉紅色的部分是標示錯誤的(false positives)。

左邊的矩形,是所有應該檢測出來的物件,半圓裡的部分是檢測出來的(true positives),半圓以外的部分,是沒有檢測出來的(false negatives)。

Precision,是演算法偵測到的物件總數裡,有幾成是正確的物件。
Recall 則是全部該偵測出來的物體,演算法檢測出幾成。



Fig. 3. Precision and Recall [3].

-----

四、Average Precision(11-point interpolated average precision)

圖4.1a 是一個測試結果,類別假定為汽車好了。

你偵測出「可能」有 20 輛汽車,其「可能性」從 0.91 遞減到 0.01。但是實際上,真正的汽車只有 4 號的 0.91、2 號的 0.76、9 號的 0.38 等六輛。




Fig. 4.1a. Top 20 [4].

以圖4.1b 為例,假定你「選」前五名好了,那你的正確率就是 2 / 5,也就是 0.4。




Fig. 4.1b. Top 5 [4].

「實際多類別分類任務中,我們通常不滿足只通過 top-5 來衡量一個模型的好壞,而是需要知道從 top-1到 top-N(N 是所有測試樣本個數,本文中為20)對應的 precision 和 recall。顯然隨著我們選定的樣本越來也多,recall 一定會越來越高,而 precision 整體上會呈下降趨勢。把 recall 當成橫坐標,precision 當成縱坐標,即可得到常用的 precision-recall 曲線。」[4]




Fig. 4.1c. Top 6 - 20 [4].

圖4.2 可以看到,Top 1 是 1 / 1,Top 2 是 2 / 2。
Top 3 到 Top 5 分別是 2 / 3、2 / 4、2 / 5。垂直遞減。
Top 6 與 Top 7 分別是 3 / 6、4 / 7。遞增。 
Top 8 到 Top 20 以此類推。


 

Fig. 4.2. Average Precision(11-point interpolated average precision)[4].

-----

五、Average Precision(PASCAL VOC 2010)

PASCAL 競賽在 2010 年開始,使用不同的計算方式。

圖4.3 跟 圖4.1 是同一份資料,但呈現、與計算的方式不同。主要是它沒有遞增的片段,全部是單調遞減。

執行上是以 Recall 為主,同樣 Recall 的取為一組,這組後面如果有更大的 Precision,就以後面為主。

以圖4.3為例。第三組的 Precision 是 3/6,但因為第四組的 4/7 更高,所以就採用第四組的 Precision 當成第三組的。因此得到圖4.4。



Fig. 4.3. Top 20 [4].



Fig. 4.4. Average Precision(PASCAL VOC 2010)[4].

-----

圖4.5 可以看出兩種方法的差別。AP 則是計算藍色部分所佔的比率。



Fig. 4.5. Precision monotonically decreasing [2].

-----

六、Mean Average Precision

瞭解了 AP 之後,mAP 其實就是把多個類別的 AP 再取平均。如圖5.1 所示。



Fig. 5.1 mAP [2].

圖5.2 則是 FP 跟 TP 個數的統計。這邊會有一個小問題,就是每個類別的物件要一樣多才公平嗎?




Fig. 5.2. Detected classes (36) [2].

-----

七、mAP@[.5 .95]

mAP@[.5:.95](someone denoted mAP@[.5,.95]) means average mAP over different IoU thresholds, from 0.5 to 0.95, step 0.05 (0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8, 0.85, 0.9, 0.95). [6]

IoU 取 0.5 可以計算 mAP,從 0.5 到 0.95 每 0.05 都來算一次 mAP 再平均,又是一種衡量的標準。

-----

八、公式(程式)

以上的觀念都瞭解之後,程式部分請自行參考 [7], [10]。

-----

Conclusion

瞭解 mAP 是 object detection 的第一步,至於如果同一物件被重複偵測,有好幾個類似的框框,那要如何處理?這也是很重要,後續會再討論!

-----

References

一、背景

[1] 關於影像辨識,所有你應該知道的深度學習模型 – Steven Shen – Medium
https://medium.com/@syshen/%E7%89%A9%E9%AB%94%E5%81%B5%E6%B8%AC-object-detection-740096ec4540

二、基本

[2] GitHub - Cartucho_mAP  mean Average Precision - This code will evaluate the performance of your neural net for object recognition
https://github.com/Cartucho/mAP 

[3] Precision and recall - Wikipedia
https://en.wikipedia.org/wiki/Precision_and_recall

[4] 多标签图像分类任务的评价方法-mAP_花心大罗博_新浪博客
http://blog.sina.com.cn/s/blog_9db078090102whzw.html

[5] The PASCAL Visual Object Classes Challenge 2010 (VOC2010)
http://host.robots.ox.ac.uk/pascal/VOC/voc2010/

[6] computer vision - What does the notation mAP@[.5 .95] mean  - Data Science Stack Exchange
https://datascience.stackexchange.com/questions/16797/what-does-the-notation-map-5-95-mean 
 
-----

三、討論

[7] mean average precision(MAP)在计算机视觉中是如何计算和应用的? - 知乎
https://www.zhihu.com/question/41540197

[8] machine learning - mAP metric in object detection and computer vision - Stack Overflow
https://stackoverflow.com/questions/36274638/map-metric-in-object-detection-and-computer-vision

[9] machine learning - How to calculate mAP for detection task for the PASCAL VOC Challenge  - Data Science Stack Exchange
https://datascience.stackexchange.com/questions/25119/how-to-calculate-map-for-detection-task-for-the-pascal-voc-challenge

-----

四、code

[10] 深度学习  mAP (Mean Average Precision) - CSDN博客
https://blog.csdn.net/JNingWei/article/details/78955536

-----

五、其他

[11] What you wanted to know about Mean Average Precision - FastML
http://fastml.com/what-you-wanted-to-know-about-mean-average-precision/

Monday, April 30, 2018

PyTorch Taiwan(目錄)

PyTorch Taiwan(目錄)

2017/11/30

超重要!!!
★★★★★ PyTorch Taipei 2018 筆記整理 • Wei-Hsiang Wang
https://mattwang44.github.io/en/notes/PyTorchTP/#3-%E9%80%B2%E5%BA%A6%E8%A1%A8%E8%88%87%E9%80%A3%E7%B5%90%E6%95%B4%E7%90%86 

Pytorch Hsinchu - Google Drive
https://drive.google.com/drive/folders/18Lgq9XZ-rdTQlTTVi4IMQn4SGbvIBHW8

PyTorch Taichung Meet-Up · GitBook
https://legacy.gitbook.com/book/forrestning/pytorch-taichung-meet-up/details

超重要!!!
★★★★★ PyTorch中文文档
https://pytorch-cn.readthedocs.io/zh/latest/

 -----

本文張貼在 FB 的網址 :
https://www.facebook.com/groups/2027602154187130/permalink/2028327110781301/

-----

FB 網路相關社團:

PyTorch Taiwan:
https://www.facebook.com/groups/2027602154187130/

PyTorch
https://www.facebook.com/groups/1768574493359167/

PyTorch KR
https://www.facebook.com/groups/PyTorchKR/

-----

PyTorch 為實現 Deep Learning 的框架之一。
大學生與入門者可以考慮使用,因為它使用上比較簡明。
研究生與工程師則建議 TensorFlow,主要是業界使用較多。

有關 Deep Learning 的基礎理論,可以參考《AI從頭學》
https://hemingwang.blogspot.tw/2016/12/ai_20.html

-----


Fig. 1. PyTorch*.

-----

網路:

PyTorch(一):深度學習:21天實戰 LeNet

PyTorch(二):PyTorch vs. TensorFlow

PyTorch(三):PyTorch入門

PyTorch(四):PyTorch Taipei

PyTorch(五):PyTorch Hsinchu 

PyTorch(六):Seminar

PyTorch (七):Seminar Example -- AlexNet

PyTorch(八):深度學習的竅門

PyTorch(九):Seminar Introduction

PyTorch(一0):PyTorch Taichung
 
-----

台北:

PyTorch Taipei(一):選舉幹部

PyTorch Taipei(二):活動開始

-----

新竹:

PyTorch Hsinchu(一):選舉幹部

PyTorch Hsinchu(二):活動開始 

-----

* https://kevinzakka.github.io/2017/08/13/aws-pytorch/

PyTorch(一0):PyTorch Taichung

PyTorch(一0):PyTorch Taichung

2018/04/26

PyTorch Taichung 已成立,有興趣參加者,請到下面的報名網址填上 論文+1 或者 +1 即可。

報名網址:

https://www.facebook.com/groups/2027602154187130/permalink/2133769136903764/

建議參加報告論文,才會學到更多!

-----


Fig. 1. 東海大學,路思義教堂 [6]。

-----

Summary:

PyTorch Taiwan 主要是為了討論深度學習的理論而成立,選用的框架為 PyTorch [1]。為便於不同地區當面討論,所以又成立了 PyTorch Taipei 與 PyTorch Hsinchu 兩個子社團,以經典論文研討為主 [2]-[4],PyTorch 實作為輔。

論文目錄為 [2],另外可以參考 PyTorch Taipei 的活動記錄,在 [1] 的最上方。

時間:每週日下午兩點到五點。
地點:台中,中興大學,精密所106室一樓階梯教室(約可容納40人)。

第一小時為深度學習經典論文報告 [2]。
第二小時為 Python 實作 LeNet [5] 或 PyTorch 實作,在 [1] 的最上方。
第三小時為自由討論。

-----

Mora Chen
陳龍星
Cipher Ning
安娜
Anna Lee
廖建傑
張逸勝

-----

預定內容:

5/06 自由討論
5/13 自由討論
5/20 LeNet & BP by Mora Chen
5/27 RNN (LSTM) by 陳龍星
6/03 AlexNet by Cipher Ning

-----

References

[1] PyTorch Taiwan(目錄)
http://hemingwang.blogspot.tw/2017/11/pytorch-taiwan.html

[2] PyTorch(六):Seminar
http://hemingwang.blogspot.tw/2018/01/pytorchseminar.html

[3] 深入淺出 Deep Learning(目錄)
http://hemingwang.blogspot.tw/2018/03/deep-learning.html 

[4] AI從頭學(目錄)
http://hemingwang.blogspot.tw/2016/12/ai_20.html

[5] LeNet實作團(目錄)
http://hemingwang.blogspot.tw/2017/04/lenet.html

[6] 東海大學 教堂 琉璃瓦
https://pixabay.com/zh/%E6%9D%B1%E6%B5%B7%E5%A4%A7%E5%AD%B8-%E6%95%99%E5%A0%82-%E7%90%89%E7%92%83%E7%93%A6-%E5%BB%BA%E7%AD%91-%E7%8E%B0%E4%BB%A3-%E5%B1%8B%E9%A1%B6-%E4%BA%A4%E5%8F%89-%E5%AE%97%E6%95%99-1937884/

NCTU Angel Club

NCTU Angel Club

2018/04/30



NCTU Angel Club
http://angelclub.vc/

交大天使俱樂部 _ Cash's Blog
http://www.cash.idv.tw/wordpress/?tag=%E4%BA%A4%E5%A4%A7%E5%A4%A9%E4%BD%BF%E4%BF%B1%E6%A8%82%E9%83%A8

Machine Learning Concept(五):Bounding Box Regression

Machine Learning Concept(五):Bounding Box Regression






-----

References

bounding box regression - CaffeCN深度学习社区
http://caffecn.cn/?/question/160

https://www2.eecs.berkeley.edu/Pubs/TechRpts/2015/EECS-2015-193.pdf

https://pdxscholar.library.pdx.edu/cgi/viewcontent.cgi?article=4949&context=open_access_etds

Machine Learning Concept(三):end-to-end

Machine Learning Concept(三):end-to-end



什么是 end-to-end 神经网络? - 知乎
https://www.zhihu.com/question/51435499/answer/129365108 

Machine Learning Concept(四):Regression

Machine Learning Concept(四):Regression







-----

References

梯度下降法-Gradient Descent « ihong學習筆記
http://ihong-blog.logdown.com/posts/418731-gradient-descent

簡單線性迴歸-Simple Linear Regression « ihong學習筆記
http://ihong-blog.logdown.com/posts/422495--simple-linear-regression

多變數線性迴歸(一)-數值篇 « ihong學習筆記
http://ihong-blog.logdown.com/posts/422495--simple-linear-regression

多變數線性迴歸(二)解析解 « ihong學習筆記
http://ihong-blog.logdown.com/posts/428041-multivariate-linear-regression-b-analytic-solutions

多變數線性迴歸(三)Ridge Regression « ihong學習筆記
http://ihong-blog.logdown.com/posts/429845-ridge-regression 

多變數線性迴歸(四)Lasso Regression « ihong學習筆記
http://ihong-blog.logdown.com/posts/430009-lasso-regression

Logistic Regression(一)數學基礎 « ihong學習筆記
http://ihong-blog.logdown.com/posts/432166-logistic-regression

Logistic Regression(二)應用案例 « ihong學習筆記
http://ihong-blog.logdown.com/posts/432386-logistic-regression-case-study

Logistic Regression(三)Cost function « ihong學習筆記
http://ihong-blog.logdown.com/posts/441372-logistic-regression-cost-function


利用NCSS的脊迴歸(ridge regression)解釋多元共線性(multi-collinearity)~(1) @ 晨晰統計部落格新站(統計、SPSS、BIG DATA討論園地)   痞客邦
http://dasanlin888.pixnet.net/blog/post/442485077-%E5%88%A9%E7%94%A8ncss%E7%9A%84%E8%84%8A%E8%BF%B4%E6%AD%B8%EF%BC%88ridge-regression%EF%BC%89%E8%A7%A3%E9%87%8B%E5%A4%9A%E5%85%83%E5%85%B1

Linear least squares, Lasso,ridge regression有何本质区别? - 知乎
https://www.zhihu.com/question/38121173

跑步(一二六):10圈

跑步(一二六):10圈

2018/04/29

熱身2,跑(5*2)。

-----

開始跑一點 100m 衝刺 300m 緩衝 的間歇。