日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AVOD代码复现

發(fā)布時(shí)間:2024/8/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AVOD代码复现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

參考文獻(xiàn):
https://zhuanlan.zhihu.com/p/86340957
https://zhuanlan.zhihu.com/p/354842740
https://www.guyuehome.com/39798
https://zhuanlan.zhihu.com/p/40271319

1,配置環(huán)境

conda create -n avod python=3.5 conda install tensorflow-gpu=1.3.0 conda install matplotlib conda install -c conda-forge opencv conda install pandas conda install pillow conda install scipy pip3 install -U scikit-learn

1.1 解決conda install py-opencv 時(shí)出現(xiàn) failed with initial frozen solve. Retrying with flexible solve 的問題

pip3 install --upgrade pippip install opencv-python

1.2 import tensorflow TypeError: init() got an unexpected keyword argument 'serialized_options

conda remove tensorflow-gpu pip uninstall tensorflow conda install tensorflow-gpu=1.3.0

重裝tensorflow,版本沖突

2,下載代碼編譯代碼

代碼地址:https://github.com/Qin-xs/avod_Re

2.1 wavedata依賴庫

它的目錄在 wavedata/wavedata/tools/core/lib 中,在lib文件夾下按順序執(zhí)行下列指令

conda activate avod cd src cmake .. make

2.2 protobuf文件

protobuf是google的一個(gè)開源的用來做數(shù)據(jù)通信的庫,關(guān)于它的介紹大家有興趣可以去網(wǎng)上查。在avod/protos文件中有很多.proto文件,這些文件定義了通信用的數(shù)據(jù)內(nèi)容和格式,但是想在程序中使用他們,得使用protobuf對(duì)他們進(jìn)行編譯,給每個(gè).proto文件生成一個(gè)python文件。編譯也很簡(jiǎn)單,執(zhí)行下面一條指令就行.

protoc avod/protos/*.proto --python_out=

執(zhí)行中之后會(huì)提示你有語法錯(cuò)誤,不用管他,看avod/protos文件中是否生成了python文件,只要生成了,這一步就可以結(jié)束了。

3 配置環(huán)境

工程是基于python編寫的,定義了很多模塊,這些模塊之間需要互相調(diào)用,但各個(gè)模塊又是相對(duì)獨(dú)立的,所以需要把各個(gè)模塊的路徑添加到python的環(huán)境變量中,以方便他們之間互相調(diào)用。

在終端輸入這條指令打開設(shè)置環(huán)境變量的文件

sudo vim ~/.bashrc

在文件的最后輸入添加下面兩行(注意,這里面的路徑是絕對(duì)路徑,這是我電腦里的路徑,大家要根據(jù)自己電腦的存放路徑來改)

export PYTHONPATH=$PYTHONPATH:'/home/siat/project/project_detect/avod_Re/wavedata' export PYTHONPATH=$PYTHONPATH:'/home/siat/work/object_detection/avod_Re-master'

配置環(huán)境變量以后,為了讓它生效,需要重新打開終端,然后再使用如下指令重新進(jìn)入anaconda環(huán)境

source ~/.bashrc conda activate avod

4, 準(zhǔn)備數(shù)據(jù)集

4.1 下載數(shù)據(jù)集

https://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d

4.2 下載附加文件

這個(gè)附加數(shù)據(jù)文件包括兩部分:

trainval.txt、train.txt、val.txt:這三個(gè)文件幫助程序把訓(xùn)練數(shù)據(jù)又重新分為訓(xùn)練集和驗(yàn)證集
planes:這個(gè)是作者自己生成的路面平面擬合參數(shù),它的用處等我們后面講詳細(xì)代碼時(shí)再講
下載地址為:https://drive.google.com/drive/folders/1yjCwlSOfAZoPNNqoMtWfEjPCfhRfJB-Z

4.3 整理數(shù)據(jù)目錄

程序讀取文件是按照一定的目錄結(jié)構(gòu)讀取的,它們的目錄結(jié)構(gòu)如下圖:

要注意的是,testing和training中都有image_2、velodyne兩個(gè)文件夾,但它們的內(nèi)容是不同的,分別是測(cè)試集和訓(xùn)練集中的內(nèi)容,而它們都有的calib、label_2兩個(gè)文件夾中的內(nèi)容是相同的。

object文件夾放在~/Kitti/文件夾中,這是程序默認(rèn)的,如果不想放這個(gè)目錄里,得修改程序,所以我們先不找這個(gè)麻煩了,就先放這了。

mkdir -p ~/Kitti/object/

5,生成Mini-batch

Mini-batch 是 RPN 所需要的東西,在終端中輸入如下指令即可生成

python scripts/preprocessing/gen_mini_batches.py

執(zhí)行過程需要幾分鐘,等一等吧。

如果成功,會(huì)在avod/data目錄下生成label_clusters和mini_batches兩個(gè)文件夾

終端會(huì)顯示下面的圖像

6,訓(xùn)練

一條指令啟動(dòng)訓(xùn)練

python avod/experiments/run_training.py --pipeline_config=avod/configs/pyramid_cars_with_aug_example.config --device='0' --data_split='train'

終端會(huì)顯示以下圖像:

在我的電腦配置下需要執(zhí)行十幾個(gè)小時(shí)左右,跑一晚上就好了,我的電腦GPU型號(hào)是:GTX 3090

7,驗(yàn)證

執(zhí)行如下命令:

python avod/experiments/run_evaluation.py --pipeline_config=avod/configs/pyramid_cars_with_aug_example.config --device='0' --data_split='val'

如果這時(shí)候會(huì)提示如下信息

INFO:tensorflow:No new checkpoints found in /home/avod/avod/data/outputs/pyramid_cars_with_aug_example/checkpoints. Will try again in 30 seconds
第一種解決方法:
在avod/configs/pyramid_cars_with_aug_example.config 里面將pyramid_cars_with_aug_example/改為pyramid_cars_with_aug_example/checkpoints/
失敗

第二種解決方法:
將avod/core/evaluator.py #449 pyramid_cars_with_aug_example,然后把它改成你自己outputs下的真實(shí)文件夾名字就行


在我的電腦配置下需要執(zhí)行30小時(shí)左右

接著等吧

執(zhí)行完以后使用下面的指令調(diào)用tensorboard畫出訓(xùn)練過程中的各個(gè)指標(biāo)的變化趨勢(shì)

conda install -c conda-forge tensorboard cd avod/data/outputs/pyramid_cars_with_aug_example tensorboard --logdir logs

7.2 TensorFlow錯(cuò)誤:TypeError: init() got an unexpected keyword argument ‘serialized_options’

問題其實(shí)很簡(jiǎn)單,TensorFlow和protobuf的版本不匹配,

pip install -U protobuf

7.3 AttributeError: module ‘tensorflow.python.estimator.estimator_lib’ has no attribute ‘SessionRunHook’

問題其實(shí)很簡(jiǎn)單,TensorFlow和tensorboard的版本不匹配,

tensorboard 1.15.0
tensorflow 1.3.0

pip uninstall tensorboard pip install tensorboard==1.11.0

居然成功

注意,這只是調(diào)用了tensorboard,輸入指令以后終端會(huì)給出如下提示

這告訴我們,如果想看變化趨勢(shì)的曲線,需要在瀏覽器中打開終端提示的網(wǎng)址,我的曲線如下圖所示

我們可以看到,里面有rpn_loss、avod_loss等指標(biāo)的變化趨勢(shì)(感覺跳動(dòng)有點(diǎn)大)

8, Inference

執(zhí)行run inference,執(zhí)行這一步是干啥的,暫時(shí)還不清楚

python avod/experiments/run_inference.py --checkpoint_name='pyramid_cars_with_aug_example' --data_split='val' --ckpt_indices=120 --device='0'

9, 查看結(jié)果

這一步是生成帶預(yù)測(cè)框的2d圖片,輸入指令

python demos/show_predictions_2d.py

會(huì)生成圖片,自動(dòng)存放在文件夾avod/data/outputs/pyramid_cars_with_aug_example/predictions/images_2d/predictions/val/120000/0.1中
這里放幾張圖片看下效果吧

到這里,就完成網(wǎng)絡(luò)所有的訓(xùn)練和使用流程了。

總結(jié)

以上是生活随笔為你收集整理的AVOD代码复现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。