MXNet之CNN:自定义CNN-OCR算法训练车牌数据集(umpy.ndarray格式数据)实现车牌照片字符识别并评估模型

输出结果


gen_sample之后

MXNet之CNN:自定义CNN-OCR算法训练车牌数据集(umpy.ndarray格式数据)实现车牌照片字符识别并评估模型

MXNet之CNN:自定义CNN-OCR算法训练车牌数据集(umpy.ndarray格式数据)实现车牌照片字符识别并评估模型MXNet之CNN:自定义CNN-OCR算法训练车牌数据集(umpy.ndarray格式数据)实现车牌照片字符识别并评估模型




1、训练感悟


22:58训练记录:我勒个去,跑了半天,准确度还没上来,啊啊啊,要疯了……



相关文章:

生成图片,CV:设计自动生成汽车车牌图片算法(cv2+PIL)根据指定七个字符自动生成逼真车牌图片数据集(带各种噪声效果)

MXNet之CNN:自定义CNN-OCR算法训练车牌数据集(umpy.ndarray格式数据)实现车牌照片字符识别并评估模型



设计思路


第一次


MXNet之CNN:自定义CNN-OCR算法训练车牌数据集(umpy.ndarray格式数据)实现车牌照片字符识别并评估模型


第二次


MXNet之CNN:自定义CNN-OCR算法训练车牌数据集(umpy.ndarray格式数据)实现车牌照片字符识别并评估模型




总思路


MXNet之CNN:自定义CNN-OCR算法训练车牌数据集(umpy.ndarray格式数据)实现车牌照片字符识别并评估模型

核心代码

class GenPlate:

   def __init__(self,fontCh,fontEng,NoPlates):

       self.fontC =  ImageFont.truetype(fontCh,43,0);

       self.fontE =  ImageFont.truetype(fontEng,60,0);

       self.img=np.array(Image.new("RGB", (226,70),(255,255,255)))

……

   def draw(self,val):

       offset= 2 ;

       self.img[0:70,offset+8:offset+8+23]= GenCh(self.fontC,val[0]);    

……

       return self.img

   

   def generate(self,text):                             #generate()方法,

#         print('text', text, len(text))

       if len(text) == 7:    # 9

#             print('开始运行if语句')

           fg = self.draw(text);  

……

       

   def genPlateString(self,pos,val):  #定义genPlateString函数

……

       for unit,cpos in zip(box,range(len(box))):

           if unit == 1:

               plateStr += val

           else:

               if cpos == 0:

                   plateStr += chars[r(31)]

               elif cpos == 1:

                   plateStr += chars[41+r(24)]

               else:

                   plateStr += chars[31 + r(34)]

       return plateStr;

   def genBatch(self, batchSize,pos,charRange, outputPath,size):

       if (not os.path.exists(outputPath)):

           os.mkdir(outputPath)

       l_plateStr = []

       l_plateImg = []

       for i in range(batchSize):

           plateStr = G.genPlateString(-1,-1)

           img =  G.generate(plateStr);

           img = cv2.resize(img,size);

           l_plateStr.append(plateStr)

           l_plateImg.append(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

       return l_plateStr,l_plateImg


上一篇:从数据到代码——通过代码生成机制实现强类型编程[下篇]


下一篇:理解MapReduce数据流