YOLO3多gpu訓練方法

2021-09-25 19:37:36 字數 1352 閱讀 6192

版本可參考git上的keras yolo3的實現,現在我手裡有兩塊gpu,所以設定多塊gpu來加快訓練速度

1. 訓練**前引入

from keras.utils import multi_gpu_model
2. 找到自己構建網路的地方,第一次構建model是下面的語句

is_tiny_version = len(anchors) == 6  # default setting

if is_tiny_version:

model = create_tiny_model(input_shape, anchors, num_classes,

freeze_body=2, load_pretrained=false,weights_path='/home/jerry/py_project_wang/car_detect/yolo_wang_0708/log/tiny_yolo/trained_final.h5')

else:

model = create_model(input_shape, anchors, num_classes,

freeze_body=2, weights_path='../model/old_model/yolov3_weights.h5') # make sure you know what you freeze

3. 跟蹤進去,找到模型的處理,我用的tiny_yolo,在model_body 後面新增多gpu模型,我這裡用了塊gpu

model_body = tiny_yolo_body(image_input, num_anchors//2, num_classes)

print('create tiny yolov3 model with {} anchors and {} classes.'.format(num_anchors, num_classes))# 6 anchors and 1 classes.

model_body = multi_gpu_model(model_body, gpus=2)

4.注意,不能把multi_gpu_model()函式加在第一次構建網路的地方,即本文的2處,我試過加在**,結果報錯如下:,為什麼會這樣,我也不太清楚,想來是因為最後的自定義loss層引起的

tensorflow.python.framework.errors_impl.invalidargumenterror: can't concatenate scalars (use tf.stack instead) for 'yolo_loss_1/concat' (op: 'concatv2') with input shapes: , , , .

yolo3,模型訓練流程

訓練前準備 1,準備資料集 和邊界矩形txt 邊界矩形txt內容 類別從0開始 labeltext str int labstr 1 str x str y str w str h n x,y,w,h為目標的矩形中心 x,y wh目標寬高 2,修改cfg檔案 convolutional size 1...

yolo3演算法講解

網路結構 假設輸入資料的大小為416 416,經過darknet 53特徵提取網路後得到尺度為13 13,26 26,52 52的特徵圖。其中每乙個尺寸的特徵圖都有18 3 6,其中3是指每個grid cell有3個anchor,每個anchor 乙個邊界框的4個座標值,1個置信度,還有乙個類別概率...

yolo3 目標檢測 實測

yolo是繼faster r cnn後,原作者在目標檢測領域進行的新研究。到了v3版本以後,雖然已經換人支援,但是更注重工程實踐,在實際使用過程中突出感受就是 非常快 gpu加速以後能夠達到實時多目標,並且已經完成了工程實踐。下一步需要做的,應該就是 1 小型化 2 fpga化 3 垂直領域特定目標...