运行iDT算法代码及后续特征编码
DT&IDT算法應(yīng)該算是行為識(shí)別領(lǐng)域中經(jīng)典中的經(jīng)典了,自從13年提出以來(lái),在HMDB-51和UCF-101等若干個(gè)數(shù)據(jù)庫(kù)上得到了非常好的效果,雖然DT&IDT算法做不過(guò)深度學(xué)習(xí),但是由于其算法的有效性,現(xiàn)在大部分都是以“Ours+IDT”的形式呈現(xiàn)在論文里,并且加上了IDT后,結(jié)果的確能得到很明顯的提升。 
 具體IDT算法的講解可以參考博客:行為識(shí)別筆記:improved dense trajectories算法(iDT算法) 
 IDT算法的代碼可以在作者的主頁(yè)上下載,另外作者給出的代碼只包括了密集采樣+軌跡跟蹤+特征提取三個(gè)部分,后續(xù)的特征編碼部分請(qǐng)點(diǎn)擊此處下載。
1. 運(yùn)行IDT算法代碼
下載好代碼后可以仔細(xì)閱讀一下Readme文件,首先需要配置好Opencv和ffmpeg兩個(gè)庫(kù),具體的版本請(qǐng)參考Readme文件。配置好后就可以在目錄下直接make,編譯好的可執(zhí)行文件在./release/下。 
 可以運(yùn)行他的demo視頻來(lái)看一下是否編譯成功:./release/DenseTrackStab ./test_sequences/person01_boxing_d1_uncomp.avi,如果編譯成功的話會(huì)在屏幕上打印出一系列的數(shù)字,這些就是軌跡特征以及HOG, HOF和MBH特征。 
 IDT代碼只是將各個(gè)特征打印了出來(lái),如果需要改成保存到文件的話,更改第248-251行的代碼即可:
另外,在做自己的數(shù)據(jù)庫(kù)時(shí),不可能一個(gè)視頻一個(gè)視頻的去輸入,這時(shí)可以寫(xiě)一個(gè)vim腳本,來(lái)批量運(yùn)行,可以參考如下代碼:
#!/usr/bin/env bash cmd="release/DenseTrackStab" filePath="" #數(shù)據(jù)存放路徑 fileType=".txt" function readfile(){for file in `ls $1`doif [ -d $1"/"$file ]thenreadfile $1"/"$fileelseecho $file$cmd $1"/"$filefidone } readfile $filePath2. 特征編碼
后續(xù)的特征編碼采用了dtfv代碼運(yùn)行,具體可以參考src/中的Readme.rst文件,大致步驟如下:
1. 下載vl_feat并編譯
編譯好vl_feat工具箱后,將vlfeats/bin/glnx64中的libvl.so文件拷貝到dtfv/src/vl文件夾中,如果拷貝glnx86中的libvl.so后編譯時(shí)會(huì)報(bào)錯(cuò)
2. 編譯
改變路徑 
 在../script/extract_fv.py文件中更改一下幾個(gè)變量:dtBin、fvBin、tmpDir、pID、pcaList,具體可以參考Readme文件。 
 這里貼一下我所用的變量: 
 
運(yùn)行代碼 
 在../data/文件夾中運(yùn)行:python extract_fv.py [videoList] [outputDir] [totalCores]。之后會(huì)在tmpDir中得到resize之后的視頻文件,每個(gè)視頻將在outputDir文件夾中得到五個(gè)文件,分別以[Videoname].avi.[traj|hog|hof|mbhx|mbhy].fv.txt命名。
遇到的bug: 
  
 error while loading shared libraries: libvl.so: cannot open shared object file: No such file or directory 
 【解決方法】LD_LIBRARY_PATH=$LD_LIBRARY_PATH:dtfv-master/src/vl 
 LD_LIBRARY_PATH=$LD_LIBRARY_PATH: dtfv-master/src/alglib 
 (注意,路徑要輸入的是絕對(duì)路徑)
總結(jié)
以上是生活随笔為你收集整理的运行iDT算法代码及后续特征编码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: broken pipe怎么解决 数据太大
- 下一篇: python redis事务_pytho
