心儀院校導師任務之一,文獻調研記錄。html
本文部分思路參考:算法
1. Anchor-Free數組
2. https://zhuanlan.zhihu.com/p/66048276網絡
3. https://blog.csdn.net/u014380165/article/details/92801206 app
在此由衷感謝。框架
一些專業詞彙概念須要掌握:機器學習
1、上下采樣的概念: https://blog.csdn.net/stf1065716904/article/details/78450997ide
1. 縮小圖像(或稱爲下采樣(subsampled)或降採樣(downsampled))的主要目的有兩個:函數
一、使得圖像符合顯示區域的大小;學習
二、生成對應圖像的縮略圖。
下采樣原理:對於一幅圖像I尺寸爲M*N,對其進行s倍下采樣,即獲得(M/s)*(N/s)尺寸的得分辨率圖像,固然s應該是M和N的公約數才行,若是考慮的是矩陣形式的圖像,就是把原始圖像s*s窗口內的圖像變成一個像素,這個像素點的值就是窗口內全部像素的均值:
2. 放大圖像(或稱爲上採樣(upsampling)或圖像插值(interpolating))的主要目的是放大原圖像,從而能夠顯示在更高分辨率的顯示設備上。對圖像的縮放操做並不能帶來更多關於該圖像的信息, 所以圖像的質量將不可避免地受到影響。然而,確實有一些縮放方法可以增長圖像的信息,從而使得縮放後的圖像質量超過原圖質量的。
上採樣原理:圖像放大幾乎都是採用內插值方法,即在原有圖像像素的基礎上在像素點之間採用合適的插值算法插入新的元素。
不管縮放圖像(下采樣)仍是放大圖像(上採樣),採樣方式有不少種。如最近鄰插值,雙線性插值,均值插值,中值插值等方法。在AlexNet中就使用了較合適的插值方法。各類插值方法都有各自的優缺點。
2、超參數:所謂超參數,就是機器學習模型裏面的框架參數,好比聚類方法裏面類的個數,或者話題模型裏面話題的個數等等,都稱爲超參數。它們跟訓練過程當中學習的參數(權重)是不同的,一般是手工設定,不斷試錯調整,或者對一系列窮舉出來的參數組合一通枚舉(叫作網格搜索)。
3、loss函數的意義 https://zhuanlan.zhihu.com/p/49981234
機器學習中的監督學習本質上是給定一系列訓練樣本,嘗試學習的映射關係,使得給定一個,即使這個不在訓練樣本中,也可以輸出,儘可能與真實的接近。損失函數是用來估量模型的輸出與真實值之間的差距,給模型的優化指引方向。
4、focal loss的概念 摘自 :http://www.javashuo.com/article/p-yauuhdtb-mh.html
咱們知道object detection的算法主要能夠分爲兩大類:two-stage detector和one-stage detector。前者是指相似Faster RCNN,RFCN這樣須要region proposal的檢測算法,這類算法能夠達到很高的準確率,可是速度較慢。雖然能夠經過減小proposal的數量或下降輸入圖像的分辨率等方式達到提速,可是速度並無質的提高。後者是指相似YOLO,SSD這樣不須要region proposal,直接回歸的檢測算法,這類算法速度很快,可是準確率不如前者。做者提出focal loss的出發點也是但願one-stage detector能夠達到two-stage detector的準確率,同時不影響原有的速度。
做者認爲one-stage detector的準確率不如two-stage detector的緣由是:樣本不均衡問題,其中包括兩個方面:
爲了解決(1)解決樣本的類別不平衡問題和(2)解決簡單/困難樣本不平衡問題,做者提出一種新的損失函數:focal loss。這個損失函數是在標準交叉熵損失基礎上改進獲得:
該focal loss函數曲線爲:
其中,−log(pt)爲初始交叉熵損失函數,α 爲類別間(0-1二分類)的權重參數,(1−pt)γ 爲簡單/困難樣本調節因子(modulating factor),而γ 則聚焦參數(focusing parameter)。
在上面的y∈{±1}y∈{±1} 爲指定的ground-truth類別,p∈[0,1]p∈[0,1] 是模型對帶有 y=1y=1 標籤類別的機率估計。爲了方便,咱們將ptpt定義爲:
和重寫的CE(p,y)CE(p,y):
一個廣泛解決類別不平衡的方法是增長權重參數α∈[0,1]α∈[0,1],當$ y=1 類的權重爲類的權重爲\alpha$ ,y=−1y=−1 類的權重爲1−α1−α 。在實驗中,αα 被設成逆類別頻率(inverse class frequence),αtαt定義與ptpt同樣:
所以,α−balancedα−balanced 的CE損失函數爲:
儘管α能平衡positive/negative的重要性,可是沒法區分簡單easy/困難hard樣本。爲此,對於簡單的樣本增長一個小的權重(down-weighted),讓損失函數聚焦在困難樣本的訓練。
所以,在交叉熵損失函數增長調節因子(1−pt)γ(1−pt)γ ,和可調節聚參數γ≥0γ≥0。,因此損失函數變成:
當pt→0時,同時調節因子也 (1−pt)γ→0 ,所以簡單樣本的權重越小。直觀地講,調節因子減小了簡單示例的loss貢獻,並擴展了樣本接收低loss的範圍。 例如,在γ= 2的狀況下,與CE相比,分類爲pt = 0.9的示例的損失將下降100倍,而對於pt≈0.968的示例,其損失將下降1000倍。 這反過來增長了糾正錯誤分類示例的重要性(對於pt≤0.5和γ= 2,其損失最多縮小4倍)。
根據論文做者實驗,α=0.25 和 γ=2 效果最好
實現代碼:
def focal_loss(y_true, y_pred): alpha, gamma = 0.25, 2 y_pred = K.clip(y_pred, 1e-8, 1 - 1e-8) return - alpha * y_true * K.log(y_pred) * (1 - y_pred)**gamma\ - (1 - alpha) * (1 - y_true) * K.log(1 - y_pred) * y_pred**gamma
5、L1 - loss(平均絕對損失) https://blog.csdn.net/u013841196/article/details/89923254
平均絕對偏差(MAE)是另外一種用於迴歸模型的損失函數。MAE是目標變量和預測變量之間絕對差值之和。所以它衡量的是一組預測值中的平均偏差大小,而不考慮它們的方向(若是咱們考慮方向的話,那就是均值偏差(MBE)了,即偏差之和)。範圍爲0到∞。
6、什麼是高斯核? http://www.javashuo.com/article/p-fctewcoy-bo.html
特徵空間的隱式映射 -- 核函數
核函數的主要目的是將數據映射到高維空間,來解決在原始空間中線性不可分的問題。
具體來講,在線性不可分的狀況下,支持向量機(SVM)首先在低維空間中完成計算,而後經過核函數將輸入空間映射到高維特徵空間,最終在高維特徵空間中構造出最優分離超平面,從而把平面上自己很差分的非線性數據分開。如圖所示,一堆數據在二維空間沒法劃分,從而映射到三維空間裏劃分,以下圖所示。
關於核函數的簡要歸納:
1. 實際中,咱們會常常遇到線性不可分的樣例,此時,咱們的經常使用作法是把樣例特徵映射到高維空間中去(如上文2.2節(具體到給出的連接裏有詳細的過程)最開始的那幅圖所示,映射到高維空間後,相關特徵便被分開了,也就達到了分類的目的);
2. 但進一步,若是凡是遇到線性不可分的樣例,一概映射到高維空間,那麼這個維度大小是會高到可怕的(如上文中19維乃至無窮維的例子)。那咋辦呢?
3. 此時,核函數就隆重登場了,核函數的價值在於它雖然也是將特徵進行從低維到高維的轉換,但核函數絕就絕在它事先在低維上進行計算,而將實質上的分類效果表如今了高維上,也就如上文所說的避免了直接在高維空間中的複雜計算。
關於高斯核的概念:
6、熱度圖(Heatmap)的概念 http://www.javashuo.com/article/p-kuzrjotm-mh.html
熱圖能夠簡單地聚合大量數據,並使用一種漸進的色帶來優雅地表現,最終效果通常優於離散點的直接顯示,能夠很直觀地展示空間數據的疏密程度或頻率高低。但也因爲很直觀,熱圖在數據表現的準確性並不能保證。
熱圖已經不是什麼新鮮的概念了,不少領域都在使用。例如記錄用戶在Web頁面內鼠標的點擊位置,各類空間離散點數據的顯示等等。
其生成的原理簡單歸納爲四個步驟:
(1)爲離散點設定一個半徑,建立一個緩衝區;
(2)對每一個離散點的緩衝區,使用漸進的灰度帶(完整的灰度帶是0~255)從內而外,由淺至深地填充;
(3)因爲灰度值能夠疊加(值越大顏色越亮,在灰度帶中則顯得越白。在實際中,能夠選擇ARGB模型中任一通道做爲疊加灰度值),從而對於有緩衝區交叉的區域,能夠疊加灰度值,於是緩衝區交叉的越多,灰度值越大,這塊區域也就越「熱」;
(4)以疊加後的灰度值爲索引,從一條有256種顏色的色帶中(例如彩虹色)映射顏色,並對圖像從新着色,從而實現熱點圖。
能夠經過幾張圖來展示這個過程:
(1)灰度帶和彩虹色帶
7、Maxpool的概念
(1)偶形式 -- 2X2中最大值
奇形式:
一些前期工做的神經網絡模型:
1. Hourglass -- backbone
https://blog.csdn.net/weixin_43292354/article/details/89387651
https://zhuanlan.zhihu.com/p/65123312
1. CornerNet https://blog.csdn.net/StreamRock/article/details/100115681
CornerNet和ExtremeNet的區別:
1.CornerNet經過預測角點來檢測目標的,而ExtremeNet經過預測極值點和中心點來檢測目標的。
2.CornerNet經過角點embedding之間的距離來判斷是否爲同一組關鍵點,而ExtremeNet經過暴力枚舉極值點、通過中心點判斷4個極值點是否爲一組。
主要總結內容:
其中心思想:主要用高斯分佈來表示目標,就是一個目標用高斯分佈來覆蓋,目標中心點的值越大。 https://blog.csdn.net/u011622208/article/details/103072220
其網絡的主要結構是經過一個backbone生成網絡生成Feature map,再經過帶分支的檢測頭分別預測物體的中心點,物體的寬高和heatmap
其主要流程爲:
1. 輸入圖像(在這裏設圖像爲h*w*3,也就是長h個像素,寬w個像素,3個通道)
2. 通過仿射變換,這一步重點在於將圖像尺寸處理成512*512大小後做爲特徵提取網絡的輸入。
3. 通過特徵提取網絡(做者嘗試了三種特徵提取網絡,分別爲Hourglass, ResNet和DLA)進行前向計算,並獲得三個輸出:
(1)hm (hearmap)大小爲[1,80,128,128]. (設類別爲80).
(2)wh (目標的長和寬) 大小爲[1, 2, 128, 128].
(3)reg (offset,偏置損失),大小爲[1, 2, 128, 128].
4.heatmap獲得的結果通過sigmiod函數使數值範圍規定到[0, 1]之間
5. 對heatmap執行一個最大池化操做,kernel設置爲3,stride設置爲1,pad設置爲1,這一步實際上是在作重複框過濾,這也是爲何後續再也不須要NMS操做的一個重要緣由,畢竟這裏3*3大小的kernel加上特徵圖和輸入圖像之間的stride=4,至關於輸入圖像中每12*12大小的區域都不會有重複的中心點,想法很是簡單有效!
6.基於heatmap選擇top K個得分最高的點(默認K=100),這樣就肯定了100個置信度最高的預測框的中心點位置了,這一步也會去掉必定的重複框。接下來就要肯定預測框的大小了,經過輸出的尺寸預測值和offset就能夠獲得目前位置
獲得的預測框信息都是在128*128大小的特徵圖上,所以最後將預測框信息再映射到輸入圖像上就獲得最終的預測結果了,
其大體效果以下圖所示:
而顯示預測結果時做者設定一個置信度閾值,高於閾值的才顯示。
因此獲得最終結果爲: