openTLD 原始碼解讀

2021-06-05 07:02:54 字數 1366 閱讀 7221

首先是run_tld 在其次就是tldexample 最後到了初始化函式tldinit

第乙個比較關鍵的函式   bb_scan

將影象網格化,將首先 scale = 1.2.^[-10:10];(21 個規格),在每個規格上打網格 

這個函式有乙個比較重要的方法

ntuples(就是重複) 因為網格上的點很多點有相同的x,或者y 具體方法大家在matlab中呼叫一句ntuples([1 2],[1 2,3])看看答案就知道什麼意思了。

這個函式返回乙個6*n的矩陣,這個矩陣每個列代表乙個視窗。

1,代表視窗左上點x

2,代表視窗左上點y

3,代表視窗右下點x

4,代表視窗右下點y

5,這種規格的編號

6,相同x的視窗數目

產生特徵點函式tldgeneratefeatures

就是產生一系列的隨機數 大概是(4*特徵個數)*樹的個數

初始化軌跡

記錄連續的

訓練探測器

規格化和目標的相似度bb_overlap

將每個規格化視窗和目標視窗做運算得到相似度

公式:相交的面積/總面積(不相交則返回0.0)

注意矩陣運算返回乙個向量,大小就是規格化的數目length(grid)

取出的函式,當引數為4個時會進行變換img_patch

tldgeneratepositivedata產生正樣本資料

主要利用的是相似度來判定正負樣本既bb_overlap>閾值,則認為正樣本,反之亦然。

這裡主要就是有個編碼問題

隨機取出點比較大小進行編碼

for (int i=0; iindex<<=1; 

int fp0 = img[off[0]+bbox[0]];

int fp1 = img[off[1]+bbox[0]];

if (fp0>fp1)

off += 2;

}(fern.cpp的measure_tree_offset)

這個函式返回乙個px代表編碼後的矩陣,pex代表最靠近目標視窗的規格化視窗(這個視窗進行了處理可以用於後面的訓練),

最靠近目標視窗的規格化視窗

類似的負樣本情況。

fern(2,......)

開始訓練隨機樹

if (y[i] == 1) else else }}

訓練樣本產生乙個正確的特徵集

tldtrainnn(pex,nex,tld)

tld.pex = [tld.pex(:,1:isin(2)) x(:,i) tld.pex(:,isin(2)+1:end)]; % 這個**就是通過隨機樹種產生比較高的規格化視窗在這些視窗放到正特徵集裡面

以後就可以拿這個和目標最比較來判斷目標視窗的位置

thinkphp原始碼解讀

thinkphp原始碼解讀 thinkphp原始碼的根目錄下是 index.php,是系統預設的 主頁,index.php中首先檢測的是 php執行環境,如果php版本小於 5.3.0則退出執行,定義是否為除錯模式,定義應用目錄,引入入口檔案。thinkphp是整個框架的入口檔案,在thinkphp...

HashMap原始碼解讀

一 建立乙個hashmap都做了哪些工作?mapmap new hashmap hahmap無參構造方法 public hashmap 可以看到設定了載入因子 預設0.75 閾值 預設容量16 預設載入因子0.75 12 table是hashmap內部資料儲存結構entry陣列。當hashmap的s...

monolog原始碼解讀

1.monolog模組分布結構 formmater 內建的日誌顯示格式 handler 各種日誌處理類,如寫檔案 發郵件 寫佇列 processor 內建的處理日誌類 logger.php log處理的介面 2.logger.php的分析 logger類的部分成員變數 const debug 100...