CFNet視頻目標跟蹤源碼運行筆記(2)——training and then tracking

友情提示:如果只希望瞭解如何利用作者發佈的預訓練網絡直接進行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

運行環境介紹

準備

  1. 安裝CUDA,具體步驟可以參考本人另一篇博客:
    https://blog.csdn.net/discoverer100/article/details/79758499

  2. 安裝cuDNN,具體步驟可以參考本人另一篇博客:
    https://blog.csdn.net/discoverer100/article/details/79759282

  3. 檢查MatConvNet是否可用,具體步驟可以參考本人另一篇博客:
    https://blog.csdn.net/discoverer100/article/details/78963233

  4. 下載CFNet的MATLAB源碼:https://github.com/bertinetto/cfnet

  5. 下載SiamFC目標跟蹤的MATLAB源碼:https://github.com/bertinetto/siamese-fc,後續進行crop圖像生成時需要借用裏面的部分代碼。

  6. 下載cfnet_ILSVRC2015.stats.mat文件,鏈接:
    https://drive.google.com/file/d/0B7Awq_aAemXQcndzY3M5dkprVTA/view?usp=sharing

  7. 下載ILSVRC2015視頻圖像集,地址:http://bvisionweb1.cs.unc.edu/ilsvrc2015/ILSVRC2015_VID.tar.gz,如果不能直接下載,則需要到網頁上進行註冊(http://bvisionweb1.cs.unc.edu/ilsvrc2015/download-videos-3j16.php#vid),在這個頁面中能夠看到一個VID文件下載鏈接(如下圖所示)。該文件的文件名爲ILSVRC2015_VID.tar.gz,大約佔用86GB磁盤空間,強烈建議用迅雷下載該文件,有條件的也可以用淘寶的代下載服務。
    這裏寫圖片描述

  8. 下載CFNet的官方Metadata,地址:http://bit.ly/cfnet_imdb_video,其文件名爲cfnet_imdb_video_2016-10.mat,佔用空間大約爲6GB,同樣建議用迅雷或者淘寶上的代下載服務。

Crop圖像生成

  1. 在CFNet源碼文件夾中的data目錄中創建VID文件夾(此時,創建後的VID文件夾爲空)

  2. 將準備工作中下載的ILSVRC2015_VID.tar.gz文件(大小約86GB)解壓,可以解壓到任何地方(友情提示:1.最好不要放太深或者有空格的路徑;2.一定不要放到CFNet源碼文件夾data裏面,否則上述空VID文件夾會受到影響),解壓後會得到一個ILSVRC2015文件夾,其中我們關注的目錄有兩個:Data\VID\trainData\VID\val,如下面兩張圖所示(注意:對於train目錄我們還關心它裏面的四個子文件夾):
    這裏寫圖片描述
    這裏寫圖片描述

  3. 將上述val目錄移動到上述train目錄中(注意:是移動整個val文件夾),移動後,Data\VID\train目錄就包含了五個文件夾:四個自帶的文件夾,加上新進來的val文件夾,按照Windows資源管理器默認的名稱增序排序如下:

    ILSVRC2015_VID_train_0000
    ILSVRC2015_VID_train_0001
    ILSVRC2015_VID_train_0002
    ILSVRC2015_VID_train_0003
    val

  4. 對上述五個文件夾進行重命名,分別命名爲abcde,如下:

    ILSVRC2015_VID_train_0000 -> a
    ILSVRC2015_VID_train_0001 -> b
    ILSVRC2015_VID_train_0002 -> c
    ILSVRC2015_VID_train_0003 -> d
    val -> e

  5. 在CMD窗口中,利用xcopy命令(參考:https://superuser.com/questions/530128/how-to-copy-a-directory-structure-without-copying-files),將剛剛移動了文件夾、並修改了文件夾名字的ILSVRC15圖像數據集中的文件夾結構複製到步驟1中創建的空VID文件夾中(注意:只是複製文件目錄結構,不要複製裏面的文件),具體命令形如:

    xcopy D:\ILSVRC15\data\VID D:\Dev\MATLAB_2017\cfnet-master\data\VID /t /e

    如果採用Linux系統,則需要用形如下面的命令來進行目錄結構複製(感謝yangkang779760348同學進行補充~)

    find ./VID/ -type d -exec mkdir -p VI/{} \; linux下的xcopy

    執行該命令可能需要花費幾分鐘至十幾分鐘的時間,執行完畢後到cfnet-master\data\VID目錄下檢查一下是否有一堆空的文件夾(文件夾裏面可能還會有文件夾,但一定沒有任何文件)。

  6. 將準備工作中下載的cfnet_ILSVRC2015.stats.mat文件(大小約728KB)複製到cfnet-master\data目錄中,並修改文件名爲ILSVRC2015.stats.mat;將下載的cfnet_imdb_video_2016-10.mat文件(大小約6GB)複製到cfnet-master\data目錄中,並修改文件名爲imdb_video.mat,複製後的data文件夾如下所示:
    這裏寫圖片描述

  7. 將準備工作中下載的SiamFC源碼包進行解壓,將裏面的ILSVRC15-curation文件夾拷貝到cfnet-master\src目錄中,這樣,src目錄中一共有四個文件夾:

    ILSVRC15-curation
    tracking
    training
    util

  8. 在MATLAB中打開cfnet-master\src\ILSVRC15-curation\save_crops.m文件,並在其命令窗口中一行一行地運行:

    imdb_video = load(‘D:/Dev/MATLAB_2017/cfnet-master/data/imdb_video.mat’);
    imdb_video = imdb_video.imdb_video;
    save_crops(imdb_video, 1, 4417, ‘D:\ILSVRC15’, ‘D:/Dev/MATLAB_2017/cfnet-master’);

    上述三條命令,其具體路徑與自己實際情況保持一致。關於參數4417的來歷,可以在MATLAB中打開load後的imdb_video.mat變量,發現其id屬性有4417個元素。

    注意:該crop工作持續的時間可能非常長(配置Intel Core i5標壓CPU的機器可能需要40-50個小時),源碼也沒有斷點恢復機制,爲防止機器斷電造成損失,可以通過修改參數1和4417來分段進行crop

  9. Crop的圖像和標註數據會寫入到步驟1創建的VID空文件夾中,該過程執行完畢後,其內部應該包含個8,021,672個文件,佔用37.4GB的磁盤空間,如下圖所示:
    這裏寫圖片描述

  10. Crop操作相當於對視頻原始圖像進行了裁剪、縮小和補全等處理,以下是一個crop前(上圖)和crop後(下圖)比較的例子:
    這裏寫圖片描述
    這裏寫圖片描述

訓練

  1. 進入目錄cfnet-master\src\training,複製env_paths_training.m.examplestartup.m.example文件並去掉其.example後綴,如下圖所示:
    這裏寫圖片描述

  2. 打開上述兩個文件並修改裏面的配置信息(注意有些地方需要在末尾帶上正斜槓,文件名一定要與之前的對應起來),如下圖所示:
    這裏寫圖片描述
    這裏寫圖片描述

  3. 以訓練conv2爲例,運行run_experiment_cfnet_conv2.m文件,代碼中默認迭代100次,完整的訓練過程可能會花費很長的時間,如果只是希望簡單體驗一下可以調低該源碼文件中參數opts.train.numEpochs的值進行訓練,訓練時會產生類似下圖的輸出:
    這裏寫圖片描述

  4. 訓練網絡時,代碼會在cfnet-master\src\training中創建一個文件夾,每進行一次迭代,都會在該文件夾中保存一個網絡文件。這樣,CFNet的網絡訓練是允許中途關機的。

跟蹤

選擇上述某一輪迭代保存的網絡文件,拷貝到cfnet-master\pretrained\networks目錄中,運行對應的源碼即可。以conv2層爲例,打開文件run_cfnet2_evaluation.m,修改參數tracker_par.net的值爲剛剛拷貝的網絡文件名,再運行即可。

關於跟蹤過程的詳細操作,可以閱讀本人另一篇博客:
https://blog.csdn.net/discoverer100/article/details/79758131

這裏需要注意的是:代碼默認僅僅計算物體座標,並不會在屏幕上顯示視頻畫面內容和標定。如果需要顯示畫面,可以進入tracker.m文件,將第16行的p.visualization賦值爲true,這樣的效果如下圖所示:

這裏寫圖片描述

這裏寫圖片描述


更多內容,歡迎掃碼關注“視覺邊疆”微信訂閱號

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章