計(jì)算機(jī)視覺研究人員必備的Linux命令行技巧
介紹
Jeroen Janssens在《命令行的數(shù)據(jù)科學(xué)》一書中對(duì)命令行優(yōu)勢(shì)進(jìn)行了很好的分類:
命令行是靈活的:這個(gè)特性使它非常適合數(shù)據(jù)科學(xué)的探索性質(zhì)。因?yàn)槟阆胍皶r(shí)得到結(jié)果。
命令行可以擴(kuò)展:與其他技術(shù)很好地集成。(例如Jupyter筆記本、Colab等)
命令行是可伸縮的:因?yàn)槟悴皇褂肎UI,你實(shí)際上輸入命令,每個(gè)命令都有許多參數(shù),所以它可以很容易地滿足你的需要。
命令行是可擴(kuò)展的:命令行本身與語(yǔ)言無(wú)關(guān)。因此,你可以開發(fā)和擴(kuò)展它的功能,而不用擔(dān)心語(yǔ)言。
命令行無(wú)處不在:命令行與任何類似Unix的操作系統(tǒng)一起提供。大多數(shù)超級(jí)計(jì)算機(jī)、嵌入式系統(tǒng)、服務(wù)器、筆記本電腦和云基礎(chǔ)設(shè)施都使用Linux。
在這篇文章中,想介紹一些關(guān)于我經(jīng)常用于項(xiàng)目的Linux命令
將命令分為兩大類:
第一類包括在使用遠(yuǎn)程服務(wù)器和文件時(shí)有用
第二類命令包括有助于圖像/視頻操作。
使用遠(yuǎn)程服務(wù)器和文件
1.檢查圖像的尺寸
有時(shí)在遠(yuǎn)程服務(wù)器上,你正在處理數(shù)據(jù),沒有任何GUI來查看圖像維度?梢允褂靡韵旅顧z查圖像尺寸:
linux@user-pc:~/some/path$ identify image_name.png
>>> image_name.png PNG 1920x1080 8bit sRGB 805918B 0.000u 0:00.000
如果你想將其用于目錄中的多個(gè)圖像(可能你想將它們合并為一個(gè)片段,但其中一些圖像的維度與其他圖像不同。褂茫畃ng而不是image_name.png
腳本:
import cv2
from pathlib import Path
images = Path('path').rglob('*.png')
for img_path in images:
img = cv2.imread(img_path
print(img_path, img.shape)
2.清點(diǎn)目錄上的圖像
在一些目錄中創(chuàng)建數(shù)據(jù)集之后,我經(jīng)常檢查圖像和標(biāo)簽的數(shù)量是否相等。(由于我使用jupyter notebook,有時(shí)會(huì)有一個(gè)名為.ipynotebook的隱藏目錄,在使用ls命令時(shí)不會(huì)出現(xiàn),當(dāng)數(shù)據(jù)生成器開始從該目錄獲取數(shù)據(jù)時(shí),會(huì)出現(xiàn)問題)。
要統(tǒng)計(jì)所有圖像,請(qǐng)執(zhí)行以下操作:
ls path/to/images | wc -l
要僅檢查png格式文件,請(qǐng)執(zhí)行以下操作:
find -name *.png -type | wc -l
要使用存儲(chǔ)大小檢查目錄,請(qǐng)執(zhí)行以下操作:
du -lh --max-depth=1
你還可以使用tree -du -h(huán) Path/to/images來檢查映像及其占用的磁盤存儲(chǔ)空間。命令樹的輸出更加直觀,如下所示:
3.將文件從本地PC復(fù)制到遠(yuǎn)程服務(wù)器
我們經(jīng)常需要將數(shù)據(jù)上傳到遠(yuǎn)程服務(wù)器(或從遠(yuǎn)程服務(wù)器下載)。要做到這一點(diǎn),你應(yīng)該以以下方式使用scp命令:
首先,我建議你使用以下命令壓縮文件夾:
zip -r output.zip path/to/images path/to/labels
要下載,你應(yīng)該在本地PC上使用以下命令:
scp remote_user@remote_h(yuǎn)ost:remote_path local_path
例如:
scp user_1@111.222.333.444:/home/user_1/path /home/local_user/path
要上傳,請(qǐng)切換源和目標(biāo):
scp /home/local_user/path user_1@111.222.333.444:/home/user_1/path
4.在遠(yuǎn)程服務(wù)器上運(yùn)行jupyter notebook
jupyter notebook幫助研究人員編寫腳本和可視化。為了在本地PC上使用它,同時(shí)在遠(yuǎn)程主機(jī)上運(yùn)行,我們?cè)诒镜赜?jì)算機(jī)和遠(yuǎn)程主機(jī)上使用以下命令,將jupyter notebook轉(zhuǎn)發(fā)到本地:
在遠(yuǎn)程服務(wù)器上運(yùn)行jupyter notebook:
jupyter notebook --no-browser --port=XXXX
端口將本地端口轉(zhuǎn)發(fā)到遠(yuǎn)程端口:
ssh -N -f -L localhost:YYYY:localhost:XXXX remote_user@remote_h(yuǎn)ost
5.使用TMUX運(yùn)行ML模型訓(xùn)練/評(píng)估
在ML模型訓(xùn)練中,我經(jīng)常遭受網(wǎng)絡(luò)斷開的痛苦,這有時(shí)會(huì)讓我回到原點(diǎn),重新開始訓(xùn)練模型!
因此,我發(fā)現(xiàn)tmux程序是一個(gè)非常好的解決方案,你可以將進(jìn)程與其控制終端分離,從而允許遠(yuǎn)程會(huì)話在不可見的情況下保持活動(dòng)狀態(tài)。
使用tmux過程。
· 要啟動(dòng)tmux會(huì)話,只需鍵入tmux。
· 要重命名會(huì)話,請(qǐng)鍵入rename-session -t some_random_name(僅當(dāng)你已激活會(huì)話時(shí))。
· 然后你可以運(yùn)行你的進(jìn)程,按CTRL+B,然后按D,從中分離出來。
· 要附加會(huì)話,可以使用tmux attach -t some_random_name。
· 要終止會(huì)話,請(qǐng)執(zhí)行tmux kill-session -t yolo
6. 查看GPU資源
如果你在一個(gè)團(tuán)隊(duì)中工作,你可能會(huì)和同事一起經(jīng)歷GPU資源的競(jìng)爭(zhēng)。∫私釭PU的使用情況(了解其他人何時(shí)不使用GPU),請(qǐng)使用以下命令:
watch -n nvidia-smi
nvtop(更好的可視化):
gpustat(管理員更適合同時(shí)觀看多個(gè)GPU)
有時(shí),當(dāng)你開始訓(xùn)練你的ML模型時(shí),你會(huì)將結(jié)果記錄在一些文本文件中。例如,Detectron2框架或YOLOV5記錄度量(準(zhǔn)確性、損失等)。
因此,如果我無(wú)法訪問tensorboard,我將使用此命令檢查最后5行的結(jié)果,每100秒更新一次:
watch -n 100 tail -n 5
我根據(jù)損失和準(zhǔn)確度值保存檢查點(diǎn),并用相應(yīng)的損失和準(zhǔn)確度命名權(quán)重。因此,我可以在命令行中對(duì)它們進(jìn)行排序,并使用以下命令檢查最后一個(gè)檢查點(diǎn)的準(zhǔn)確度:
ls checkpoints | sort | tail -n 1
6.創(chuàng)建gif繪圖以顯示時(shí)間序列圖像
我使用GradCam算法,使用tf-explain模塊在測(cè)試圖像上可視化激活層特征提取熱圖。我經(jīng)常從圖中生成gif,以了解訓(xùn)練過程如何影響模型的準(zhǔn)確性。要將目錄中的圖像轉(zhuǎn)換為繪圖,可以使用以下命令:
convert -delay 10 -loop 0 *.png animation.gif
結(jié)果是:
如果要將視頻轉(zhuǎn)換為gif,可能會(huì)注意到輸出的gif會(huì)變得非常大。因此,減少gif大小的最佳方法是從視頻中采樣。為此,請(qǐng)使用-r,即采樣FPS:
ffmpeg -i video.mp4 -r 10 output.gif
視頻/圖像處理
ffmpeg是計(jì)算機(jī)視覺工程師的必備技能,因?yàn)樗仨毺幚硪曨l/圖像數(shù)據(jù)。ffmpeg有很多技巧,在這里只分享其中的幾個(gè)。
1.檢查視頻持續(xù)時(shí)間
使用以下命令:
ffmpeg -i file.mp4 2>&1 | grep “Duration”
輸出結(jié)果如下:Duration: 00:05:03.05, start: 0.00000, bitrate:201 kb/s
2.轉(zhuǎn)換視頻格式:
為此:
ffmpeg -i video.mp4 video.a(chǎn)vi
如果你只需要視頻中的音頻:
ffmpeg -i input.mp4 -vn output.mp3
3.從視頻生成數(shù)據(jù)集
有時(shí)我們可能需要從視頻中生成一個(gè)數(shù)據(jù)集,其中一些動(dòng)作很少發(fā)生,比如檢測(cè)罕見動(dòng)作或罕見對(duì)象,這可以稱為“異常檢測(cè)”。為此,我們需要播放長(zhǎng)達(dá)數(shù)小時(shí)的視頻。我使用此命令剪切視頻的某些部分:
ffmpeg -ss 00:10:00 -i input_video.mp4 -to 00:02:00 -c copy output.mp4
在該命令中:
-ss:開始時(shí)間
-i:輸入視頻
-to:大約2分鐘。
-c:輸出編解碼器
如果你想要沒有音頻的視頻:
ffmpeg -i input_video.mp4 -an -c:v copy output.mp4
-an:用于在沒有音頻的情況下進(jìn)行輸出。
4.為CONVLSM或3d CNN生成一系列幀
CONVLSM和3d CNN網(wǎng)絡(luò)用于提取視頻序列的時(shí)序特征。因此,為了使用這些網(wǎng)絡(luò),我們必須為它們的輸入張量生成一系列幀。使用此命令從視頻生成20秒的圖像:
ffmpeg -ss 00:32:15 -t 20 -i videos.ts ~/frames/frame%06d.png
可以添加比例來重新縮放圖像尺寸。我大部分的視頻都是1028x540,它的寬度必須減半。這是執(zhí)行此操作的命令:
ffmpeg -ss 00:10:00 -t 20 -i video.ts -vf scale=iw/2:ih output_path/frame%06d.png
或者你可以簡(jiǎn)單地輸入尺寸:
ffmpeg -ss 00:10:00 -t 20 -i video.ts -vf scale=960x540 output_path/frame%06d.png
5.裁剪視頻邊框
裁剪視頻邊框:
ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4
6.堆疊視頻
在TVConal初創(chuàng)公司,我從事體育分析項(xiàng)目,有時(shí)我們想檢查不同的視頻源是否同步。
視頻名稱為a.mp4-b.mp4 c.mp4 d.mp4。
6.1-水平堆疊視頻:
要沿水平堆疊,我們使用以下命令:
ffmpeg -i a.mp4 -i b.mp4 -filter_complex hstack output.mp4
6.2-垂直堆疊視頻:
要沿垂直堆疊,我們使用以下命令:
ffmpeg -i a.mp4 -i b.mp4 -filter_complex vstack=inputs=2 end_vstack.mp4
6.3 2x2網(wǎng)格堆疊
現(xiàn)在讓我們嘗試更復(fù)雜的方法:
ffmpeg -i a.mp4 -i b.mp4 -i c.mp4 -i d.mp4 -filter_complex "[0:v][1:v][2:v][3:v]xstack=inputs=4:layout=0_0|w0_0|0_h(yuǎn)0|w0_h(yuǎn)0[v]" -map "[v]" 2x2.mp4
結(jié)論
相信命令行和python將為數(shù)據(jù)科學(xué)界提供一套強(qiáng)大的工具。因此,使用這些功能強(qiáng)大的工具,我們可以減少在簡(jiǎn)單任務(wù)上的時(shí)間浪費(fèi)。
感謝閱讀!
參考引用
原文標(biāo)題 : 計(jì)算機(jī)視覺研究人員必備的Linux命令行技巧

發(fā)表評(píng)論
請(qǐng)輸入評(píng)論內(nèi)容...
請(qǐng)輸入評(píng)論/評(píng)論長(zhǎng)度6~500個(gè)字
圖片新聞
-
機(jī)器人奧運(yùn)會(huì)戰(zhàn)報(bào):宇樹機(jī)器人摘下首金,天工Ultra搶走首位“百米飛人”
-
存儲(chǔ)圈掐架!江波龍起訴佰維,索賠121萬(wàn)
-
長(zhǎng)安汽車母公司突然更名:從“中國(guó)長(zhǎng)安”到“辰致科技”
-
豆包前負(fù)責(zé)人喬木出軌BP后續(xù):均被辭退
-
字節(jié)AI Lab負(fù)責(zé)人李航卸任后返聘,Seed進(jìn)入調(diào)整期
-
員工持股爆雷?廣汽埃安緊急回應(yīng)
-
中國(guó)“智造”背后的「關(guān)鍵力量」
-
小米汽車研發(fā)中心重磅落地,寶馬家門口“搶人”
最新活動(dòng)更多
-
即日-9.16點(diǎn)擊進(jìn)入 >> 【限時(shí)福利】TE 2025國(guó)際物聯(lián)網(wǎng)展·深圳站
-
10月23日立即報(bào)名>> Works With 開發(fā)者大會(huì)深圳站
-
10月24日立即參評(píng)>> 【評(píng)選】維科杯·OFweek 2025(第十屆)物聯(lián)網(wǎng)行業(yè)年度評(píng)選
-
11月27日立即報(bào)名>> 【工程師系列】汽車電子技術(shù)在線大會(huì)
-
12月18日立即報(bào)名>> 【線下會(huì)議】OFweek 2025(第十屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會(huì)
-
精彩回顧立即查看>> 【限時(shí)下載】ADI中國(guó)三十周年感恩回饋助力企業(yè)升級(jí)!
推薦專題
- 1 阿里首位程序員,“掃地僧”多隆已離職
- 2 先進(jìn)算力新選擇 | 2025華為算力場(chǎng)景發(fā)布會(huì)暨北京xPN伙伴大會(huì)成功舉辦
- 3 宇樹機(jī)器人撞人事件的深度剖析:六維力傳感器如何成為人機(jī)安全的關(guān)鍵屏障
- 4 清華跑出具身智能獨(dú)角獸:給機(jī)器人安上眼睛和大腦,融資近20億
- 5 踢館大廠和微軟,剖析WPS靈犀的AI實(shí)用主義
- 6 特朗普要求英特爾首位華人 CEO 辭職
- 7 騰訊 Q2 財(cái)報(bào)亮眼:AI 已成第二增長(zhǎng)曲線
- 8 AI版“四萬(wàn)億刺激”計(jì)劃來了
- 9 谷歌吹響AI沖鋒號(hào),AI還有哪些機(jī)會(huì)
- 10 蘋果把身家押在Siri上:一場(chǎng)輸不起的自我革命