導(dǎo)讀
使用光流 + CNN的方法來(lái)預(yù)測(cè)車輛的速度,用PyTorch實(shí)現(xiàn),有代碼。
代碼:https://github.com/SharifElfouly/vehicle-speed-estimation
我想要解決的問(wèn)題是:在一輛車?yán)镉幸粋€(gè)攝像頭,我想知道車開(kāi)得有多快。你顯然不能看速度表,只能看視頻片段本身。深度學(xué)習(xí)魔法應(yīng)該能幫助我們。
數(shù)據(jù)
我有兩個(gè)不同的視頻。一個(gè)用于訓(xùn)練,另一個(gè)用于測(cè)試。訓(xùn)練視頻有20399幀,測(cè)試視頻有10797幀。視頻下載地址:https://github.com/commaai/speedchallenge。下面是一些例子:
視頻中的樣本圖像
訓(xùn)練視頻的標(biāo)簽是a .txt文件,其中每一行對(duì)應(yīng)于特定幀的速度。
方法
這個(gè)問(wèn)題最有趣的地方是你的神經(jīng)網(wǎng)絡(luò)輸入會(huì)是什么樣子。僅從一個(gè)靜態(tài)圖像計(jì)算速度是不可能的。一種有效的方法是將兩個(gè)或更多的圖像堆疊在一起,或者像LSTM或Transformer那樣連續(xù)地堆疊。另一個(gè)是計(jì)算光流,我決定用它。
什么是光流?它基本上是一種為每個(gè)像素計(jì)算矢量的方法,告訴你兩幅圖像之間的相對(duì)運(yùn)動(dòng)。有一個(gè)很棒的computerphile視頻:https://www.youtube.com/watch?v=4v_keMNROv4,你可以了解更多細(xì)節(jié)。有一些“經(jīng)典”的計(jì)算機(jī)視覺(jué)算法可以用來(lái)計(jì)算光流,但深度學(xué)習(xí)已經(jīng)變得更好了(這一點(diǎn)也不奇怪)。那么什么是SOTA方法,讓我們看看paperswithcode:
RAFT 看起來(lái)不錯(cuò),它還有PyTorch的實(shí)現(xiàn)。我forked原始存儲(chǔ)庫(kù),并使其更簡(jiǎn)單一些。我不需要訓(xùn)練,評(píng)估等等。我只會(huì)用它來(lái)推理。
計(jì)算光流
為了進(jìn)行推斷,網(wǎng)絡(luò)將兩幅圖像拼接起來(lái),并預(yù)測(cè)了一個(gè)維度為*(2, image_height, image_width)*的張量。如前所述,圖像中的每個(gè)像素對(duì)應(yīng)一個(gè)二維向量。我們將在實(shí)際訓(xùn)練中使用這些文件,因此我們將它們保存為.npy文件。如果你想象光流圖像它會(huì)是這樣的:
訓(xùn)練
記住我們訓(xùn)練的目的:
光流→模型→車速估計(jì)
我選擇的模型是EfficientNet。我非常喜歡它,因?yàn)樗目蓴U(kuò)展性。它有8個(gè)不同的版本供你選擇,最大的一個(gè),EfficientNet-B7仍然非常非常好。你可以從一個(gè)像B0這樣的小變體開(kāi)始,然后如果一切工作正常,你有一個(gè)足夠好的GPU,你可以選擇一個(gè)更大的。還有一個(gè)PyTorch庫(kù),我會(huì)使用它來(lái)非常容易地加載預(yù)先訓(xùn)練好的網(wǎng)絡(luò)模型,地址:https://github.com/lukemelas/effecentnet-PyTorch。如果你打開(kāi)[train.ipynb](https://github.com/sharifelfouly/vehicle-speed - estimate),你就可以看到訓(xùn)練是如何運(yùn)作的。
我總是從B0開(kāi)始,然后放大到B3,因?yàn)槲业腉PU只有6 GB內(nèi)存。經(jīng)過(guò)訓(xùn)練,我得到如下結(jié)果(loss為均方誤差):
訓(xùn)練損失
驗(yàn)證損失
很好,看起來(lái)一切都很正常!訓(xùn)練和驗(yàn)證損失都在降低,網(wǎng)絡(luò)沒(méi)有過(guò)擬合。
結(jié)果如下:
雖然不完美,但它確實(shí)有一些用
總結(jié)
我通常不太喜歡特征工程,但我認(rèn)為在這種情況下它做得很好。下一步是嘗試一些序列化的東西,比如Transformer或LSTM。
英文原文:https://medium.com/@selfouly/vehicle-speed-estimation-from-video-using-deep-learning-18b41babda4c
責(zé)任編輯:xj
原文標(biāo)題:使用深度學(xué)習(xí)從視頻中估計(jì)車輛的速度
文章出處:【微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8547瀏覽量
136602 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5594瀏覽量
124223 -
cnn
+關(guān)注
關(guān)注
3文章
355瀏覽量
23322
原文標(biāo)題:使用深度學(xué)習(xí)從視頻中估計(jì)車輛的速度
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
CNN卷積神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)原理及在MCU200T上仿真測(cè)試
構(gòu)建CNN網(wǎng)絡(luò)模型并優(yōu)化的一般化建議
蜂鳥(niǎo)E203簡(jiǎn)單分支預(yù)測(cè)的改進(jìn)
提高條件分支指令預(yù)測(cè)正確率的方法
基于全局預(yù)測(cè)歷史的gshare分支預(yù)測(cè)器的實(shí)現(xiàn)細(xì)節(jié)
提高RISC-V在Drystone測(cè)試中得分的方法
電池?zé)峁芾恚菏褂脭?shù)字孿生和多尺度方法來(lái)設(shè)計(jì)和優(yōu)化能源效率
無(wú)刷電機(jī)小波神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)子位置檢測(cè)方法的研究
想在rtsmart中使用uart2,是不是只能通過(guò)修改設(shè)備樹(shù)方法來(lái)實(shí)現(xiàn)uart2的復(fù)用呀?
使用ad9467-250來(lái)采集低頻信號(hào),請(qǐng)問(wèn)有什么方法來(lái)提高sfdr嗎?
《中國(guó)電機(jī)工程學(xué)報(bào)》網(wǎng)絡(luò)首發(fā)論文:基于數(shù)據(jù)驅(qū)動(dòng)觀測(cè)器的永磁同步電機(jī)顯式模型預(yù)測(cè)直接速度控制
PTD08A010W想把1.8V的輸出通過(guò)軟件編程的方法來(lái)改成3.3V的輸出,怎么實(shí)現(xiàn)?
紙基微流控芯片的加工方法和優(yōu)勢(shì)
激光速度濃度測(cè)試儀Labasys:精準(zhǔn)測(cè)量工業(yè)多相流
使用光流 + CNN的方法來(lái)預(yù)測(cè)車輛的速度
評(píng)論