C3D使用指南


C3D GitHub項目地址:https://github.com/facebook/C3D

C3D 官方用戶指南:https://goo.gl/k2SnLY

 

1. C3D特征提取

1.1 命令參數介紹

官方GitHub項目上同時提供了C3D-v1.0和C3D-v1.1兩個版本,以下方法適用於v1.0

官方提供的特征提取demo路徑為~/C3D-master/C3D-v1.0/examples/c3d_feature_extraction

在這個路徑下,執行c3d_sport1m_feature_extraction_video.sh或c3d_sport1m_feature_extraction_frm.sh可以分別啟動從視頻提取特征和從圖片提取特征的demo

打開c3d_sport1m_feature_extraction_video.sh文件,出去一些用來生成文件夾的指令,可以看到啟動C3D的命令如下:

GLOG_logtosterr=1 ../../build/tools/extract_image_features.bin prototxt/c3d_sport1m_feature_extractor_video.prototxt conv3d_deepnetA_sport1m_iter_1900000 0 50 1 prototxt/output_list_video_prefix.txt fc7-1 fc6-1 prob

其中

a) ../../build/tools/extract_image_features.bin是提取特征的可執行文件,示例命令中使用了相對路徑,如果在其他路徑下調用注意進行對應的修改

b) prototxt/c3d_sport1m_feature_extractor_video.prototxt該文件記錄了提取特征的一系列輸入參數,下面會詳細介紹

c) conv3d_deepnetA_sport1m_iter_1900000 這是預訓練模型文件,根據自己的需求做對應的修改

d) 接下來的三項數字是:0 50 1,分別是gpu_id,mini_batch_size和number_of_mini_batches。gpu_id是在計算機具有多塊GPU時指定使用哪一塊GPU的,默認是0,如果將這一項的值置為-1則啟動CPU模式。需要注意,如果需要調整batch size,在prototxt文檔中也要進行相應的修改

e) prototxt/output_list_video_prefix.txt是輸出前綴文件,下面會詳細介紹

f) fc7-1 fc6-1 prob是特征名稱 要提取哪一層的特征依序寫在這里即可

1.2 prototxt文檔

prototxt/c3d_sport1m_feature_extractor_video.prototxt是這個demo所使用的prototxt文檔

第9行

source: "prototxt/input_list_frm.txt"

這是記錄輸入文件路徑的文檔。在這個demo中,prototxt/input_list_frm.txt對應的是以圖片作為輸入時的文檔,而prototxt/input_list_video.txt對應的是以視頻作為輸入時的文檔。以prototxt/input_list_frm.txt為例,該文檔格式如下:

input/frm/v_ApplyEyeMakeup_g01_c01/ 1 0
input/frm/v_ApplyEyeMakeup_g01_c01/ 17 0
input/frm/v_ApplyEyeMakeup_g01_c01/ 33 0
input/frm/v_ApplyEyeMakeup_g01_c01/ 49 0
input/frm/v_ApplyEyeMakeup_g01_c01/ 65 0
input/frm/v_ApplyEyeMakeup_g01_c01/ 81 0
input/frm/v_ApplyEyeMakeup_g01_c01/ 97 0
input/frm/v_ApplyEyeMakeup_g01_c01/ 113 0
input/frm/v_ApplyEyeMakeup_g01_c01/ 129 0
input/frm/v_ApplyEyeMakeup_g01_c01/ 145 0

其中input/frm/v_ApplyEyeMakeup_g01_c01/是保存圖片的路徑,后面的第一個數字表示從哪一幀開始提取特征,最后的數字表示該行對應的類別。由於這是提取特征而非訓練,類別填寫什么都不要緊,只要有就行

多少幀提取一次特征,是由prototxt/input_list_frm.txt中第17行new_length一項參數決定的。例如上面例子中的視頻一共有165幀,那么最后一行對應的145幀開始提取特征,取16幀,使用145幀-161幀的數據。在這里如果取用的幀的編號超過總幀數165,則會報錯,要注意這一點

如果輸入時視頻,則參考prototxt/input_list_video.txt。需要注意的是,輸入為視頻時幀的序號是從0開始計算的

第9行

use_image: true

如果輸入時圖片,則為true,如果輸入時視頻,則為false

第10行

mean_file: "fb_train16_128_mean.binaryproto"

這里是使用的均值文件的路徑,根據所使用的模型生成或選擇均值文件即可

另外也可根據需求修改其他參數。

1.3 輸出前綴文件

參照prototxt/output_list_video_prefix.txt生成輸出前綴文件,可以根據需求進行自定義,只要注意該文件要和prototxt/input_list_frm.txt輸入文件清單的行數相對應即可

1.4 其他注意事項

輸出的特征文件所保存的路徑必須自己生成,C3D不會創建文件夾

如果提示“out of memory” 可以嘗試減小batch size

提取的特征是二進制文件,需要進行格式轉換才能正常處理

其他的注意事項可以參考官方的用戶指南

2. C3D訓練和fine-tune

訓練和fine-tune的官方demo的路徑分別是

~/C3D-master/C3D-v1.0/examples/c3d_train_ucf101
~/C3D-master/C3D-v1.0/examples/c3d_finetuning

所使用的prototxt和inputlist等文件參照特征提取和demo修改即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM