CFNet視訊目標跟蹤原始碼執行筆記(1)——only tracking
論文資訊
論文題目:End-to-end representation learning for Correlation Filter based tracking
論文出處:CVPR 2017
論文作者:Jack Valmadre,Luca Bertinetto等人
論文主頁:http://www.robots.ox.ac.uk/~luca/cfnet.html
原始碼連結:https://github.com/bertinetto/cfnet
執行環境介紹
注意: 如果在tracking過程中發現CFNet演算法跟蹤效果非常糟糕,請參照本文末尾的方法進行修正(此處感謝部落格園博主“博聞強記2010”的部落格文章
準備
操作
-
對上述下載的CFNet原始碼包進行解壓,形成資料夾
cfnet-master
,如下圖所示:
-
對上述下載的預訓練網路檔案壓縮包解壓,並拷貝到
pretrained\networks
目錄中,形成如下圖所示的目錄檔案層次結構:
-
將準備工作中下載好的validation視訊集解壓,修改資料夾的名字
cfnet-validation
,改為validation
,並複製到data
資料夾中,以basketball視訊為例,最終的目錄檔案組織如下圖所示:
-
將準備工作中下載cfnet_ILSVRC2015.stats.mat檔案,重新命名為
ILSVRC2015.stats.mat
-
進入src/tracking目錄,會發現裡面有兩個
.example
字尾名的檔案,將這個字尾名去掉,還原成.m
的樣子(如果擔心檔案被自己弄壞了也可以原地複製再修改),如下圖所示:
-
在剛剛恢復字尾名的
startup.m
檔案中,設定好MatConvNet的路徑,其形式如下圖所示(具體結合自身實際):
-
在剛剛恢復字尾名的
env_paths_tracking.m
檔案中,設定好networks、data和statsmat的資料夾的路徑(注意:如果是資料夾那麼最後要帶一個斜槓),如下圖所示:
執行
執行startup.m
檔案,MATLAB可能會報一些函式名重名的警告,不必理會,如下圖所示:
執行run_cfnet2_evaluation.m
檔案,成功,如下圖所示:
如果希望體驗其他層的網路效果,可以嘗試執行其他的evaluation檔案。
這裡需要注意的是:程式碼預設僅僅計算物體座標,並不會在螢幕上顯示視訊畫面內容和標定。如果需要顯示畫面,可以進入tracker.m
檔案,將第16行的p.visualization
賦值為true
,這樣的效果如下圖所示:
修正(非必須)
若在執行過程中發現CFNet原始碼跟蹤非常不靠譜,有可能是因為MATLAB imresize
函式的GPU實現方式在某些環境下有所不同,可以嘗試按照如下方式進行修正:
- MATLAB版本可以維持當前的2017b不變
- 開啟
src\tracking
目錄下的tracker_step.m
檔案,將大約第14行的程式碼註釋掉,註釋後如下所示:
% responseMapsUP(:,:,s) = imresize(responseMaps(:,:,s), p.responseUp, 'bicubic');
- 在上述被註釋的程式碼下方,貼上如下的三行程式碼,如下所示:
responseMaps_cpu=gather(responseMaps(:,:,s));
responseMapsUP_cpu=imresize(responseMaps_cpu, p.responseUp, 'bicubic');
responseMapsUP(:,:,s)=gpuArray(responseMapsUP_cpu);
最後,再一次感謝部落格園博主“博聞強記2010”的部落格文章《程式碼問題:【SiameseFC】》)
更多內容,歡迎掃碼關注“視覺邊疆”微信訂閱號
相關推薦
CFNet視訊目標跟蹤原始碼執行筆記(1)——only tracking
論文資訊 論文題目:End-to-end representation learning for Correlation Filter based tracking 論文出處:CVPR 2017 論文作者:Jack Valmadre,Luca Bertinet
KCF跟蹤演算法學習筆記(1)
KCF跟蹤是相關濾波跟蹤器最具有代表性的,但是作為一個從來沒接觸過跟蹤演算法,線代苦手來說,看懂KCF中的原理簡直是難上加難,網上所有的相關文件要說也夠多了,可惜水平太差,看完以後只想問兩個問題,這是什麼?這又是什麼?再難啃的骨頭也是要啃的,所以決定把目前還一知半解的學習內容
IPMsg原始碼閱讀筆記(1)
開啟下載的原始碼包,成功的匯入VS2013後是一個名字為IPMsg的解決方案,這個解決方案裡面有6個專案: --install --IPMsg --libpng --TLib --uninst --zlib 至於每個專案什麼功能,我會在之後的原始碼分析給出,現在
YunTable原始碼閱讀筆記(1)
最近研究生開題的需要,我決定閱讀Hypertable的原始碼(這是Bigtable的C++開源實現),無奈能力有限,閱讀起來非常吃力。在網上找到了一個比較簡單的分散式檔案系統YunTable,我決定通過閱讀這個檔案系統的原始碼,希望能夠對閱讀Hypertable起到幫助作用。
KCF(核化相關濾波)跟蹤公式推導筆記(1)——線性情況下濾波器的解
線上性條件下,利用迴圈矩陣,最終的解為 w^=x^∗⊙y^x^∗⊙x^+λ(1)(1)w^=x^∗⊙y^x^∗⊙x^+λ 即為論文原文的(12)式,其中: (1)x^x^即F(x)F(x),表示xx的離散傅立葉變換 (2)字母右上角的星號表示共軛
CFNet視訊目標跟蹤推導筆記
1. 論文資訊 論文題目:End-to-end representation learning for Correlation Filter based tracking 論文出處:CVPR 2017 論文作者:Jack Valmadre,Luca B
CFNet視訊目標跟蹤核心原始碼分析——網路結構設計及實現
1. 論文資訊 2. 網路結構設計及實現 根據官方實際程式碼,更加詳細一點的網路結構如下圖所示,可以看出,與SiamFC的網路結構類似,CFNet也包含兩個分支——z和x,其中z分支對應目標物體模板,可以理解為目標在第 幀之內所有幀的模板資料加權融合(利用學習率
讀書筆記--《程式設計師的自我修養》第3章:目標檔案裡有什麼(1)
3.1、目標檔案的格式 1、目標檔案從結構上講,它是已經編譯後的可執行檔案格式,只是還沒有經過連結的過程,其中可能有些符號或有些地址還沒有調整。其實它本身就是按照可執行檔案格式儲存的。 2、現在PC平臺流行的可執行檔案格式主要是windows下的PE和Linux下的ELF,他們都是C
Spark Streaming實時流處理筆記(1)——Spark-2.2.0原始碼編譯
1 下載原始碼 https://spark.apache.org/downloads.html 解壓 2 編譯原始碼 參考 https://www.imooc.com/article/18419 https://spark.apache.org/docs/2.2.2/bu
Spring原始碼學習筆記 (一)bean是怎麼生成的
bean 實在 bean 重新整理過程中產生的,首先我們看下 bean 的重新整理方法。下面是 AbstractApplicationContext 的 refresh 方法。 @Override public void refresh() throws
spring 原始碼學習筆記(二)事務管理
spring 事務管理會幫我們自動管理資料庫的事務,沒讀原始碼前覺得很神祕,讀了原始碼發現原理還是很簡單的。 本質上還是用的 jdbc 的事務管理。spring 在呼叫某個方法前,判斷是否需要事務,如果需要,則呼叫 con.setAutoCommit(false);//開
solidity學習筆記(1)——智慧合約的執行與程式碼結構概述
智慧合約的程式碼結構 廢話不多說,先來一個智慧合約的例子: pragma solidity ^0.4.4; /* pragma:版本宣告 Solidity:開發語言 0.4.4:當前合約的版本,0.4代表主版本,4代表修復bug的升級版本 ^:代表向上相容,0.4.4 ~
Opencv學習筆記(1)---------Codeblocks執行按鈕變灰
水母魚要學opencv了,決定把自己遇到的一些問題記錄下來,就當做一個勉勵吧,也幫大家少走一點彎路。 一遇見問題 今天水母魚就遇見了一個問題,發現有時候Codeblocks執行之後因為錯誤卡住了,生成和執行按鈕全部灰掉, 點執行會顯示編譯器還在執行中,直接關閉codeb
Python3入門筆記(1) —— windows安裝與執行
Python的設計哲學是“優雅”、“明確”、“簡單”。這也是我喜歡Python的理由之一 Python的安裝: 點選導航欄的 Downloads 會自動識別你的windows系統 你會看到 Python3.6.2 和 Python2.7.13 (32位系統)的
比特幣原始碼學習筆記(二)
第二章 本章繼上一章交易建立之後介紹比特幣客戶端序列化資料的過程。 比特幣客戶端所有的序列化函式均在seriliaze.h中實現。其中,CDataStream類是資料序列化的核心結構。 CDataStream CDataStream擁有一個字元類容器用來存放序列化之後的資料
H264學習筆記(1):視訊壓縮編碼的基本原理
陸陸續續學習H264有一段時間了,曾經以為自己可以在這方面大有作為,但是越是學習越發現,根本不存在能夠大幅度提升H264效能的方案,對於我這種水平的人來講。初次學習,概念的理解仍然很困難。在這裡我只是簡單淺顯的講一講我最近的讀書學習感想。 首先
Jenkins外掛開發筆記(1):匯入Jenkins原始碼
環境配置 1.下載並配置JDK 2.下載並配置Maven 匯入eclipse專案 1.通過git獲取Jekins原始碼 2.修改${USER_HOME}/.m2/settings.xml檔案,新增以下內容 <settings><plu
目標跟蹤演算法的分類(一)
運動目標跟蹤主流演算法大致分類 主要基於兩種思路: a)不依賴於先驗知識,直接從影象序列中檢測到運動目標,並進行目標識別,最終跟蹤感興趣的運動目標; b)依賴於目標的先驗知識,首先為運動目標建模,然後在影象序列中實時找到相匹配的運動目標。 一.運動目標檢測 對於不依賴先
Hadoop HDFS原始碼學習筆記(四)
一、首先根據HDFS的API寫一段程式,然後是用Eclipse進行debug 單步跟蹤,從而檢視原始碼執行流程: import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.a
比特幣原始碼學習筆記(一)
https://github.com/trottier/original-bitcoin 前言 從事區塊鏈的開發,不瞭解其底層核心技術是不夠的。許多人在看了比特幣白皮書之後仍然不清楚比特幣是怎樣實現的,因為比特幣的原始碼設計精巧,有許多設計白皮書未曾提及,加上本身