濮阳杆衣贸易有限公司

主頁 > 知識庫 > 淺談tensorflow語義分割api的使用(deeplab訓(xùn)練cityscapes)

淺談tensorflow語義分割api的使用(deeplab訓(xùn)練cityscapes)

熱門標(biāo)簽:天津電話機(jī)器人公司 手機(jī)網(wǎng)頁嵌入地圖標(biāo)注位置 電銷機(jī)器人的風(fēng)險 河北防封卡電銷卡 應(yīng)電話機(jī)器人打電話違法嗎 400電話辦理哪種 開封語音外呼系統(tǒng)代理商 地圖標(biāo)注線上如何操作 開封自動外呼系統(tǒng)怎么收費

淺談tensorflow語義分割api的使用(deeplab訓(xùn)練cityscapes)

安裝教程:

cityscapes訓(xùn)練:

遇到的坑:

1. 環(huán)境:

- tensorflow1.8+CUDA9.0+cudnn7.0+annaconda3+py3.5

- 使用最新的tensorflow1.12或者1.10都不行,報錯:報錯不造卷積算法(convolution algorithm...)

2. 數(shù)據(jù)集轉(zhuǎn)換

# Exit immediately if a command exits with a non-zero status.
set -e
CURRENT_DIR=$(pwd)
WORK_DIR="."
# Root path for Cityscapes dataset.
CITYSCAPES_ROOT="${WORK_DIR}/cityscapes"
# Create training labels.
python "${CITYSCAPES_ROOT}/cityscapesscripts/preparation/createTrainIdLabelImgs.py"
# Build TFRecords of the dataset.
# First, create output directory for storing TFRecords.
OUTPUT_DIR="${CITYSCAPES_ROOT}/tfrecord"
mkdir -p "${OUTPUT_DIR}"
BUILD_SCRIPT="${CURRENT_DIR}/build_cityscapes_data.py"
echo "Converting Cityscapes dataset..."
python "${BUILD_SCRIPT}" \

  --cityscapes_root="${CITYSCAPES_ROOT}" \

  --output_dir="${OUTPUT_DIR}" \

- 首先當(dāng)前conda環(huán)境下安裝cityscapesScripts模塊,要支持py3.5才行;

- 由于cityscapesscripts/preparation/createTrainIdLabelImgs.py里面默認(rèn)會把數(shù)據(jù)集gtFine下面的test,train,val文件夾json文件都轉(zhuǎn)為TrainIdlandelImgs.png;然而在test文件下有很多json文件編碼格式是錯誤的,大約十幾張,每次報錯,然后將其剔除?。?!

- 然后執(zhí)行build_cityscapes_data.py將img,lable轉(zhuǎn)換為tfrecord格式。

3. 訓(xùn)練cityscapes代碼

- 將訓(xùn)練代碼寫成腳本文件:train_deeplab_cityscapes.sh

#!/bin/bash
# CUDA_VISIBLE_DEVICES=0,1,2,3 python train.py --backbone resnet --lr 0.01 --workers 4 --epochs 40 --batch-size 16 --gpu-ids 0,1,2,3 --checkname deeplab-resnet --eval-interval 1 --dataset coco

PATH_TO_INITIAL_CHECKPOINT='/home/rjw/tf-models/research/deeplab/pretrain_models/deeplabv3_cityscapes_train/model.ckpt'
PATH_TO_TRAIN_DIR='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/exp/train_on_train_set/train/'
PATH_TO_DATASET='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/tfrecord'
WORK_DIR='/home/rjw/tf-models/research/deeplab'
# From tensorflow/models/research/
python "${WORK_DIR}"/train.py \

    --logtostderr \

    --training_number_of_steps=40000 \

    --train_split="train" \

    --model_variant="xception_65" \

    --atrous_rates=6 \

    --atrous_rates=12 \

    --atrous_rates=18 \

    --output_stride=16 \

    --decoder_output_stride=4 \

    --train_crop_size=513 \

    --train_crop_size=513 \

    --train_batch_size=1 \

    --fine_tune_batch_norm=False \

    --dataset="cityscapes" \

    --tf_initial_checkpoint=${PATH_TO_INITIAL_CHECKPOINT} \

    --train_logdir=${PATH_TO_TRAIN_DIR} \

    --dataset_dir=${PATH_TO_DATASET}

參數(shù)分析:

training_number_of_steps: 訓(xùn)練迭代次數(shù);

train_crop_size:訓(xùn)練圖片的裁剪大小,因為我的GPU只有8G,故我將這個設(shè)置為513了;

train_batch_size: 訓(xùn)練的batchsize,也是因為硬件條件,故保持1;

fine_tune_batch_norm=False :是否使用batch_norm,官方建議,如果訓(xùn)練的batch_size小于12的話,須將該參數(shù)設(shè)置為False,這個設(shè)置很重要,否則的話訓(xùn)練時會在2000步左右報錯

tf_initial_checkpoint:預(yù)訓(xùn)練的初始checkpoint,這里設(shè)置的即是前面下載的../research/deeplab/backbone/deeplabv3_cityscapes_train/model.ckpt.index

train_logdir: 保存訓(xùn)練權(quán)重的目錄,注意在開始的創(chuàng)建工程目錄的時候就創(chuàng)建了,這里設(shè)置為"../research/deeplab/exp/train_on_train_set/train/"

dataset_dir:數(shù)據(jù)集的地址,前面創(chuàng)建的TFRecords目錄。這里設(shè)置為"../dataset/cityscapes/tfrecord"

4.驗證測試

- 驗證腳本:

#!/bin/bash
# CUDA_VISIBLE_DEVICES=0,1,2,3 python train.py --backbone resnet --lr 0.01 --workers 4 --epochs 40 --batch-size 16 --gpu-ids 0,1,2,3 --checkname deeplab-resnet --eval-interval 1 --dataset coco
PATH_TO_INITIAL_CHECKPOINT='/home/rjw/tf-models/research/deeplab/pretrain_models/deeplabv3_cityscapes_train/'
PATH_TO_CHECKPOINT='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/exp/train_on_train_set/train/'
PATH_TO_EVAL_DIR='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/exp/train_on_train_set/eval/'
PATH_TO_DATASET='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/tfrecord'
WORK_DIR='/home/rjw/tf-models/research/deeplab'
# From tensorflow/models/research/
python "${WORK_DIR}"/eval.py \

    --logtostderr \

    --eval_split="val" \

    --model_variant="xception_65" \

    --atrous_rates=6 \

    --atrous_rates=12 \

    --atrous_rates=18 \

    --output_stride=16 \

    --decoder_output_stride=4 \

    --eval_crop_size=1025 \

    --eval_crop_size=2049 \

    --dataset="cityscapes" \

    --checkpoint_dir=${PATH_TO_INITIAL_CHECKPOINT} \

    --eval_logdir=${PATH_TO_EVAL_DIR} \

    --dataset_dir=${PATH_TO_DATASET}

- rusult:model.ckpt-40000為在初始化模型上訓(xùn)練40000次迭代的模型;后面用初始化模型測試miou_1.0還是很低,不知道是不是有什么參數(shù)設(shè)置的問題!??!

- 注意,如果使用官方提供的checkpoint,壓縮包中是沒有checkpoint文件的,需要手動添加一個checkpoint文件;初始化模型中是沒有提供chekpoint文件的。

INFO:tensorflow:Restoring parameters from /home/rjw/tf-models/research/deeplab/datasets/cityscapes/exp/train_on_train_set/train/model.ckpt-40000
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Starting evaluation at 2018-12-18-07:13:08
INFO:tensorflow:Evaluation [50/500]
INFO:tensorflow:Evaluation [100/500]
INFO:tensorflow:Evaluation [150/500]
INFO:tensorflow:Evaluation [200/500]
INFO:tensorflow:Evaluation [250/500]
INFO:tensorflow:Evaluation [300/500]
INFO:tensorflow:Evaluation [350/500]
INFO:tensorflow:Evaluation [400/500]
INFO:tensorflow:Evaluation [450/500]
miou_1.0[0.478293568]
INFO:tensorflow:Waiting for new checkpoint at /home/rjw/tf-models/research/deeplab/pretrain_models/deeplabv3_cityscapes_train/
INFO:tensorflow:Found new checkpoint at /home/rjw/tf-models/research/deeplab/pretrain_models/deeplabv3_cityscapes_train/model.ckpt
INFO:tensorflow:Graph was finalized.
2018-12-18 15:18:05.210957: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1435] Adding visible gpu devices: 0
2018-12-18 15:18:05.211047: I tensorflow/core/common_runtime/gpu/gpu_device.cc:923] Device interconnect StreamExecutor with strength 1 edge matrix:
2018-12-18 15:18:05.211077: I tensorflow/core/common_runtime/gpu/gpu_device.cc:929]      0 
2018-12-18 15:18:05.211100: I tensorflow/core/common_runtime/gpu/gpu_device.cc:942] 0:   N 
2018-12-18 15:18:05.211645: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1053] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 9404 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1080 Ti, pci bus id: 0000:01:00.0, compute capability: 6.1)
INFO:tensorflow:Restoring parameters from /home/rjw/tf-models/research/deeplab/pretrain_models/deeplabv3_cityscapes_train/model.ckpt
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Starting evaluation at 2018-12-18-07:18:06
INFO:tensorflow:Evaluation [50/500]
INFO:tensorflow:Evaluation [100/500]
INFO:tensorflow:Evaluation [150/500]
INFO:tensorflow:Evaluation [200/500]
INFO:tensorflow:Evaluation [250/500]
INFO:tensorflow:Evaluation [300/500]
INFO:tensorflow:Evaluation [350/500]
INFO:tensorflow:Evaluation [400/500]
INFO:tensorflow:Evaluation [450/500]
miou_1.0[0.496331513]

5.可視化測試

- 在vis目錄下生成分割結(jié)果圖

#!/bin/bash
# CUDA_VISIBLE_DEVICES=0,1,2,3 python train.py --backbone resnet --lr 0.01 --workers 4 --epochs 40 --batch-size 16 --gpu-ids 0,1,2,3 --checkname deeplab-resnet --eval-interval 1 --dataset coco

PATH_TO_CHECKPOINT='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/exp/train_on_train_set/train/'
PATH_TO_VIS_DIR='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/exp/train_on_train_set/vis/'
PATH_TO_DATASET='/home/rjw/tf-models/research/deeplab/datasets/cityscapes/tfrecord'
WORK_DIR='/home/rjw/tf-models/research/deeplab'

# From tensorflow/models/research/
python "${WORK_DIR}"/vis.py \

    --logtostderr \

    --vis_split="val" \

    --model_variant="xception_65" \

    --atrous_rates=6 \

    --atrous_rates=12 \

    --atrous_rates=18 \

    --output_stride=16 \

    --decoder_output_stride=4 \

    --vis_crop_size=1025 \

    --vis_crop_size=2049 \

    --dataset="cityscapes" \

    --colormap_type="cityscapes" \

    --checkpoint_dir=${PATH_TO_CHECKPOINT} \

    --vis_logdir=${PATH_TO_VIS_DIR} \

    --dataset_dir=${PATH_TO_DATASET}

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • tensorflow常用函數(shù)API介紹
  • 使用Tensorflow將自己的數(shù)據(jù)分割成batch訓(xùn)練實例
  • windows10下安裝TensorFlow Object Detection API的步驟
  • TensorFlow2.0:張量的合并與分割實例

標(biāo)簽:山東 常州 成都 宿遷 六盤水 蘭州 江蘇 駐馬店

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺談tensorflow語義分割api的使用(deeplab訓(xùn)練cityscapes)》,本文關(guān)鍵詞  淺談,tensorflow,語義,分割,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《淺談tensorflow語義分割api的使用(deeplab訓(xùn)練cityscapes)》相關(guān)的同類信息!
  • 本頁收集關(guān)于淺談tensorflow語義分割api的使用(deeplab訓(xùn)練cityscapes)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    新河县| 房产| 雅安市| 巴马| 沁源县| 丰镇市| 宁城县| 吉木萨尔县| 秦安县| 富源县| 信宜市| 虞城县| 酒泉市| 五华县| 迭部县| 牡丹江市| 古蔺县| 安吉县| 永兴县| 苍溪县| 云浮市| 右玉县| 诸暨市| 营山县| 深圳市| 福海县| 策勒县| 新平| 乌拉特前旗| 苏尼特右旗| 德令哈市| 永昌县| 正安县| 鄱阳县| 东城区| 遵义县| 酒泉市| 休宁县| 东莞市| 宣武区| 灵寿县|