天天看點

基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊

1、将視訊轉化成圖檔

視訊是在B站下載下傳的FLV格式的,然後我采用網上找的python代碼将視訊轉成了1078張圖檔。

基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊
基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊

2、處理圖檔

因為老師給的代碼一次隻能處理一張圖檔,且處理後的圖檔名固定為st.jpg,而且貌似不太友善将輸入時的檔案名在輸出時讀出來,是以我想法是直接他輸出的檔案名為随機的,這樣一來不會導緻覆寫,二來可以通過生成檔案的時間戳來進行排序。

後來我探索了幾種方法,以下是總結的兩種。嫌麻煩的話,可以直接看2.2, 2.1是在硬體上做的,出的問題比較多比較麻煩。

2.1、方法一

看了給的源碼,我改了src下面的post_processor.cpp中的代碼。使其輸出的檔案名不唯一,是随機的字元串,輸出檔案統一放到一個out檔案夾下,這個out檔案夾需要手動建立,與src檔案夾同級。

以下是部分截圖 :

基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊
基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊
基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊
基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊
基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊

修改完post_processor.cpp後,在伺服器端進入Cambricon-Test檔案夾,設定環境,X86貌似不用設定,但是ARM的話,一定要設定,不然make代碼的時候,會報錯。

cd Cambricon-Test

source env.sh

經過環境設定後,然後進入style_transfer_x86/build檔案夾,指令行輸入

cmake …

make

編譯完成後,就可以讓輸出的圖檔名是随機的了。然後我們再去改run_style_transfer.sh,讓他可以處理多個圖檔,這裡我是重新建立了一個1.sh檔案。

基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊

改完之後,連上寒武紀的ARM闆子,處理:

ping 10.100.8.234

telnet 10.100.8.234

mount -t nfs -o tcp,nolock 10.100.8.235:/opt/Cambricon/nfs /NFS

cd NFS

export LD_LIBRARY_PATH=/NFS/lib32

cd style_transfer_arm/

sh 1.sh

運作結束後,就可以在out檔案夾下看到1478張處理後的圖檔,但是檔案夾裡面的檔案名都是随機的、混亂的,是以我們要按照他們生成的時間戳來對其排序,在out檔案夾建立一個operation.sh

基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊

然後打開終端,cd 到out檔案夾下,然後輸入

sh operation.sh

稍等片刻,就處理完了,圖檔名全部成了生成時的字元串。

然後将out檔案夾,複制出虛拟機,放到電腦桌面,然後全選所有圖檔,再按空格,再用滑鼠左鍵點選檔案夾空白處,所有的圖檔就會按照順序排列。

基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊

2.2、處理圖檔

上面方法我試了不下十次,花了兩天,結果不是闆子上報錯,就是處理的圖檔沒有1478張,是以,我後來選擇在伺服器上操作了。

換了一個思路,改檔案名的方法老是出各種問題,導緻出來的圖檔數量沒那麼多。于是,我想到了直接寫一個shell,在每次程式出一個st.jpg圖檔之後,就馬上将那個圖檔重名為輸入的名。

首先,在src同級目錄下,建立一個out檔案夾,放處理後的圖檔,然後建立一個1.sh,

代碼如下:

基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊

然後在伺服器端,

sh 1.sh

就在out處獲得了處理後的圖檔,我還讓處理的結果輸入到1.text,看是否有漏掉的。

3、做成視訊

我是用AE做成視訊的,是以這裡說下流程,其他軟體流程應該是相似的。

打開AE後,點選檔案,導入,多個檔案,然後選擇 JPEG序列 ,然後得到序列後,将序列從項目框下,拖動到合成的那個軌道上,然後導入最初的FLV視訊,放到視訊軌道上,關閉視訊,打開音頻。

我們發現原視訊是59:04,但是圖檔序列隻有49:08,是以需要将圖檔序列的時間等比增加,故點選合成框的左下角的 {} 符号,然後合成框會多一個持續時間、伸縮,然後點選持續時間,會彈出一個框,将裡面的49:08改成59:04。

接着點選頂部菜單欄中的合成,點選 添加到渲染隊列,然後在下方會看到一個渲染隊列框。這裡點選渲染,就可以得到視訊了,但是這樣輸出的視訊很大,有一個多G,是以需要讓輸出的視訊很小。

點選輸出子產品對應的 無損 ,然後将格式改為QuickTime,然後點選右邊的 格式選項,将視訊編解碼器,設定為H.264,然後确定,渲染,就可以得到想要的視訊啦。

具體操作圖如下:

基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊
基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊
基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊
基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊
基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊
基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊
基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊
基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊

4、視訊結果

基于寒武紀,用style_transfer風格轉化蔡徐坤打籃球的視訊

歡迎大家去點贊、評論、收藏。

https://www.bilibili.com/video/av53303275/

繼續閱讀