Manifold-Based Visual Object Counting
(從我的github上覆制來的,CSDN的格式實在太讓人暴躁了,一些格式實在懶得調了大家隨便看看吧)
一、基於流形的視覺目標計數
1. 提出了一種基於流形的視覺目標計數方法;
2. 通過正則化和非線性映射來考慮非負性和稀疏表示,來優化局部幾何的特徵;
3. 用局部模式學習和分層搜索被用來進一步提高所提出的方法及其變體的計算效率。
二、方法概括
> figure1 提出的基於流形的視覺對象計數方法。橙色框內爲測試部分(step 4)。紅色爲訓練部分(step 1-3)。
1. 基於訓練樣本的點標註生成密度圖作爲groundtruth,並從中訓練圖像中提取圖像patch,從密度圖中提取密度patch;
2. 對提取的patch集進行特徵工程;
3. 對patch集做聚類,並生成層級架構;
4. 對patch集作密度圖重構,目標爲得到最優權重,以生成測試集的密度圖。
三、方法詳細流程
1. 生成訓練集的密度圖
> figure2. 行人點標註和對應的密度圖
- 密度圖可以用2D高斯核函數計算:
(2)
其中是的密度圖,即ground truth, 是圖像 的像素索引,是圖像索引, 是標註的點的座標,是 中所有點的座標集。是歸一化2D高斯核函數, 是用於平滑局部分佈的 的方差,並且根據對象的大小(大約是對象大小的1/2)來設置。
- 而目標計數可以計算爲密度圖上所有點之和:
(3)
2. 特徵工程
- 爲了增加特徵空間中的採樣密度和減少計算負擔,採用主成分分析法(PCA)對patch形式的原始數據特徵進行集中、歸一化和降維。
3. 構建搜索架構
- 爲了降低算法的時間複雜度,採用分層搜索結構,該結構的節點是通過聚類產生的。
- 結構分爲兩層,第一層包含個節點,代表圖像patch集用K-means生成的個聚類的質心,第二層中,第一層的每個節點包含個子節點,代表用K-means生成的個聚類的質心,並分配給其特徵節點。
- 也就是說,先找到與樣本patch 相似度相近的某個聚類,在根據這個聚類找到與這個聚類相似的個聚類,這個聚類即爲樣本patch 的近鄰集合。
4. 密度圖重構
- 採用基於流形假設的非參數方法來學習權重,再用來計算密度圖
- (4)
是損失函數,對做優化
- 那麼可以計算爲: (5)
四、M-VOC 算法
- 目標是最小化權重
(6)
- 如果是**正定**的,那麼可以求解爲:
(7)
是歸一化因子。
公式(7)的方法被命名爲M-VOC(LS)。
- 若圖像塊維度,那麼不是正定的,則上述方法不適用,於是在這裏引入正則化項。
1)energy:爲了產生更穩定的局部權重, 會受到其energy的限制。
2)稀疏性:M-VOC受到patch的鄰域大小限制,若T太小,則領域不足以表徵局部幾何形狀,相反,則會傾向不同局部幾何形狀的鄰域。這裏引入局部約束和稀疏約束來避免T的選擇。
3)非負性:對負約束可以使相似的圖像塊和圖像密度凸組合。
4)局部性:當選取鄰域重構,局部性已經被隱含地假定。
- 基於以上四個約束,的優化公式可以寫作:
(8)
第二項以低能量強制,而第三項強制稀疏性以選擇潛在候選。第四項確保是正的。
- 爲了從(8)中獲得更多的解,通過設置不同的,可以獲得如下三個變量:
1)M-VOC(e)
令
(9)
,公式(9)可以優化爲:
(10)
2)M-VOC(s)
令
(11)
可用Lasso方法優化
3) M-VOC(nn)
令
(12)
可用二次規劃優化。
## 五、KM-VOC 算法
- 圖像塊包含許多變化,如形狀和紋理,並且如以上部分所討論的線性表示可能無法完全捕捉它們潛在的內在關係。本文首先將非線性映射引入到模型的局部幾何建模中,然後應用**核方法**使其易於處理。
- 使用非線性映射,則 變爲:
(14)
則閉式解爲:
(15)
- 用核函數表示非線性映射,則公式(15)可以表示爲
(16)
是GRAM矩陣,, 是核。
- 那麼,可以被重構爲: 其中$\pmb{E}=\pmb{D_d}(\pmb{G}+\lambda\pmb{I})^{-1}$,爲嵌入矩陣