google-inceptionV4的訓練與部署過程


1、源碼下載與依賴安裝

(1)安裝git,git安裝過程可自行百度。

(2)下載一個由tensorflow搭建的訓練框架,該框架封裝了google-inceptionV4算法及其他一些圖像分類算法。下載命令如下:

git clone https://github.com/MachineLP/train_arch

2、安裝參數配置、算法安裝與demo驗證

(1)進入train_arch /train_cnn_v1目錄,命令如下:

cd train_arch/ train_cnn_v1

該目錄下除了test目錄是用於模型測試的以外,剩下的所有目錄和文件均用於模型訓練。

以下是對各個目錄及文件作用的簡要描述:

gender:存放訓練集圖片的目錄。這是一個示例訓練集,如果想訓練自己的模型,只需要新建一個自己的目錄,不同類別的圖片以不同的目錄存放。

lib:當前框架所依賴的各種核心庫目錄。

1)model: 各網絡模型模塊。

2)data_aug: 用於圖像增強,里邊包含兩種方法。

3)grad_cam: 可視化模塊。

4)data_load: 加載訓練數據模塊。

5)train: 模型訓練模塊。

6)utils: 工具模塊。

7)loss: 損失函數模塊。

8)optimizer: 優化方法模塊。

model: 訓練過程中保存模型的目錄。

pretrain: 存放遷移學習中預訓練模型的目錄。

config.py: 用於設置訓練過程中模型參數的腳本。

main.py: 啟動訓練腳本 (python main.py)

vis_cam.py:可視化腳本(python vis_cam.py)

ckpt_pb.py:用於將訓練生成的ckpt模型文件轉成tensorflow支持的pb格式的模型。

test:用於模型測試目錄,包括單張和批量圖片測試的腳本。

(2)執行訓練腳本,驗證是否能生成分類模型

在config.py中,已經配置了針對gender目錄中圖片分類的模型參數,可以直接進行模型訓練,執行:

python3 main.py

在迭代2000次之后,就可以在model目錄中看到生成的模型。

3、訓練數據制作與訓練參數配置

(1)數據集制作:

新建一個目錄,作為存放訓練集圖片的根目錄,在該目錄下,根據圖片類別數新建相同個數的目錄(至少要有兩個類別),有多少個類別,就新建多少個目錄,目錄名就是類別名。將相同類別的圖片放到對應的同一個目錄中。

(2)配置文件修改

config.py腳本中包含了google-inceptionV4在訓練時需要配置的參數。這些參數包括:

# 訓練集根目錄

sample_dir = "gender"

# 需要分類的類別數量

num_classes = 4

# 最小批訓練的大小

batch_size = 2

#
選擇使用的模型,還可以根據自己的喜好,選擇arch_multi_alexnet_v2或arch_multi_vgg16_conv

arch_model="arch_inception_v4"

# 選擇訓練的網絡層

checkpoint_exclude_scopes = "Logits_out"

# dropout的大小

dropout_prob = 0.8

# 選擇訓練樣本的比例

train_rate = 0.9

# 整個訓練集上進行多少次迭代

epoch = 2000

# 是否使用提前終止訓練

early_stop = True

EARLY_STOP_PATIENCE = 1000

# 是否使用learning_rate

learning_r_decay = True

learning_rate_base = 0.0001

decay_rate = 0.95

height, width = 299, 299

# 模型保存的路徑

train_dir = 'model'

# 是否進行fine-tune。 選擇fine-tune的的參數

fine_tune = False

# 是否訓練所有層的參數

train_all_layers = True

# 遷移學習的網絡模型參數

checkpoint_path = 'pretrain/inception_v4/inception_v4_2016_09_09.ckpt'

注意,checkpoint_path參數設置的值要跟arch_model對應,比如arch_model設置的是arch_inception_v4,那么checkpoint_path就要設置inception_v4相關的預訓練模型參數,而不能使用inception_resnet_v2相關的預訓練模型參數。

模型訓練中途停止后,如果想繼續訓練,需要修改上述的checkpoint_path,步驟是:

將model中的最新生成的模型文件移動至新建的目錄中,比如,最新生成的模型文件是model.ckpt-808.index

model.ckpt-808.data-00000-of-00001

注意,每次迭代生成的模型文件都是成對出現的,類似上面這兩個文件的命名格式。那么就將這兩個文件移動到新建的model_continue中,然后修改checkpoint_path
= 'model_continue/model.ckpt-808'

4、模型訓練與測試

(1)模型訓練:

這里使用遷移學習的方式進行訓練,所以要先下載inception_v4相關的預訓練模型參數inception_v4_2016_09_09.ckpt(即在別人預先訓練好的模型基礎上,接着訓練自己的數據集,用別人已訓練好的網絡參數作為自己網絡的初始化參數,並對其進行訓練),下載地址為:

http://download.tensorflow.org/models/inception_v4_2016_09_09.tar.gz

下載完成后,將預訓練模型移動到pretrain目錄中,即進行如下操作:

tar -zxvf inception_v4_2016_09_09.tar.gz

cd pretrain

mkdir inception_v4

mv ../inception_v4_2016_09_09.ckpt inception_v4

開始訓練,命令如下:

python3 main.py

訓練過程中,會在model目錄中生成各迭代階段的模型。最終會保存最近幾次迭代生成的模型。

(2)模型格式轉換

模型訓練完成后並不能直接使用,而要將其轉成tensorflow支持的pb格式。利用ckpt_pb.py進行轉換,命令如下:

python3 ckpt_pb.py

腳本執行完成后,會在model目錄中生成frozen_model.pb,這就是轉換格式后的模型文件,文件名可在ckpt_pb.py中修改:

如果修改了模型文件名,該腳本中的以下位置的文件名也要做相應修改:

(3)模型測試

選擇一張測試圖片test.png(屬於訓練集類別中的某一種類別的圖片)進行模型測試,命令如下:

python3 predict.py -m model/frozen_model.pb test.png

其中,-m model/frozen_model.pb 是指定模型路徑,最后面是待測試的圖片路徑。

此時就可以在命令行看到模型對當前圖片的預測結果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM