1. 程式人生 > >CFNet視訊目標跟蹤原始碼執行筆記(1)——only tracking

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”的部落格文章

《程式碼問題:【SiameseFC】》)。

準備

操作

  1. 對上述下載的CFNet原始碼包進行解壓,形成資料夾cfnet-master,如下圖所示:
    在這裡插入圖片描述

  2. 對上述下載的預訓練網路檔案壓縮包解壓,並拷貝到pretrained\networks目錄中,形成如下圖所示的目錄檔案層次結構:
    這裡寫圖片描述

  3. 將準備工作中下載好的validation視訊集解壓,修改資料夾的名字cfnet-validation,改為validation,並複製到data資料夾中,以basketball視訊為例,最終的目錄檔案組織如下圖所示:
    這裡寫圖片描述

  4. 將準備工作中下載cfnet_ILSVRC2015.stats.mat檔案,重新命名為ILSVRC2015.stats.mat

    ,並複製到data目錄中,最終的目錄檔案組織如下圖所示:
    這裡寫圖片描述

  5. 進入src/tracking目錄,會發現裡面有兩個.example字尾名的檔案,將這個字尾名去掉,還原成.m的樣子(如果擔心檔案被自己弄壞了也可以原地複製再修改),如下圖所示:
    這裡寫圖片描述

  6. 在剛剛恢復字尾名的startup.m檔案中,設定好MatConvNet的路徑,其形式如下圖所示(具體結合自身實際):
    這裡寫圖片描述

  7. 在剛剛恢復字尾名的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實現方式在某些環境下有所不同,可以嘗試按照如下方式進行修正:

  1. MATLAB版本可以維持當前的2017b不變
  2. 開啟src\tracking目錄下的tracker_step.m檔案,將大約第14行的程式碼註釋掉,註釋後如下所示:
% responseMapsUP(:,:,s) = imresize(responseMaps(:,:,s), p.responseUp, 'bicubic');
  1. 在上述被註釋的程式碼下方,貼上如下的三行程式碼,如下所示:
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 前言 從事區塊鏈的開發,不瞭解其底層核心技術是不夠的。許多人在看了比特幣白皮書之後仍然不清楚比特幣是怎樣實現的,因為比特幣的原始碼設計精巧,有許多設計白皮書未曾提及,加上本身