车牌字符识别HyperLPR中端到端的字符识别方法

项目主页:https://github.com/zeusees/HyperLPR

1 C++中端到端的字符识别方法

此部分C++代码在HyperLPR-master\Prj-Win中test_segmentationFree.cpp、SegmentationFreeRecognizer.h、SegmentationFreeRecognizer.cpp、Pipeline.h,模型文件是\HyperLPR-master\Prj-Linux\lpr\model中SegmenationFree-Inception.caffemodel、SegmenationFree-Inception.prototxt。

1.1 模型网络结构

C++代码中的模型是用caffe实现的,在现有代码中,没有模型网络结构和模型训练,只给出了训练好的模型文件,所以如果要重新训练,需实现模型网络结构。模型网络结构详见SegmenationFree-Inception.caffemodel,模型的输入shape为 3 * 160 *40,输出shape为1 * 84 * 20(此模型能够识别长度可变的车牌字符,且python中端到端的字符识别采用ctc loss作为损失函数,后处理过程与ctc loss也极为相似,但没看见此模型的训练代码,只能猜测此模型是用ctc los训练)。如图:

车牌字符识别HyperLPR中端到端的字符识别方法_第1张图片 车牌字符识别HyperLPR中端到端的字符识别方法_第2张图片

1.2 测试结果

经过测试,该模型能够识别蓝牌和绿牌等长度可变的车牌,性能较好。用CCPD数据集测试结果如下:

车牌字符识别HyperLPR中端到端的字符识别方法_第3张图片

2 python中端到端的字符识别方法

此部分测试的python代码在HyperLPR-master中demo.py、HyperLPRLite.py;此部分训练的python代码在hyperlpr-train-master中main.py。

2.1 模型网络结构

python代码中端到端的字符识别方法有两种:第一,ocr_plate_all_w_rnn_2.h5模型,此模型有训练代码(详见main.py,用keras实现),模型的输入shape为? * 160 * 40 * 3,输出shape为? * 16 * 1 * 84,损失函数为ctc loss。第二,ocr_plate_all_gru.h5模型,此模型是在ocr_plate_all_w_rnn_2.h5模型的基础上加入GRU单元,性能最好但无法转换成tensorRT模型。ocr_plate_all_w_rnn_2.h5模型的网络结构如下所示:

'''
功能:构建端到端车牌识别的网络结构
参数:width 输入图像宽度,模型中取160
      num_channels 通道,模型中取3
return:模型的输入和输出tensor
'''
def build_model(width, num_channels):
    input_tensor = Input(name='the_input', shape=(width, 40, num_channels), dtype='float32')
    x = input_tensor
    base_conv = 32

    for i in range(3):
        x = Conv2D(base_conv * (2 ** (i)), (3, 3), padding="same")(x)
        x = BatchNormalization()(x)
        x = Activation('relu')(x)
        x = MaxPooling2D(pool_size=(2, 2))(x)
    x = Conv2D(256, (5, 5))(x)
    x = BatchNormalization()(x)
    x = Activation('relu')(x)
    x = Conv2D(1024, (1, 1))(x)
    x = BatchNormalization()(x)
    x = Activation('relu')(x)
    x = Conv2D(NUM_CHARS+1, (1, 1))(x)
    x = Activation('softmax')(x)

    y_pred = x
    return input_tensor, y_pred

2.2 ocr_plate_all_w_rnn_2.h5模型训练

以CCPD数据集作为训练数据集,目前得到ctc loss的值为0.01,训练速度很慢。

你可能感兴趣的:(车牌识别)