欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

神经网络用以变形文本矫正系列第九篇

程序员文章站 2023-12-27 09:10:27
...

0.前言

上一篇通过实验确定了针对于本研究课题的网络结构,选择四层网络结构,网络节点数为(852,572, 225,5);但是在进行逆映射的时候,发现结果并不如意。所以本篇着重于实验是三个角度对于逆映射结果的影响。

1.实验结果

1.1 只改变pitch,采用预测的值

结果如下:

神经网络用以变形文本矫正系列第九篇

神经网络用以变形文本矫正系列第九篇

可以看到基本上和真实点保持一致

=============

这几天做的工作,总结一下。

1)重新生成实验样本,在刚开始的世界坐标里,加入缩放因子,而不是在得到图像像素坐标后加上缩放

2)训练以上样本,测试结果尚可,得到的结果都是近似矩形

2.1重新生成样本

在数据准备刚开始阶段加上缩放,代码如下:

 worldPositionArray = getWorldPositionArray()
    oneArray = np.ones((1, rowColNum))
    for scaleRatio in scaleRatioLst:
        scaleIndex = scaleRatioLst.index(scaleRatio)
        scaleResultWorldPosArray[scaleIndex] = scaleRatio*worldPositionArray[:-1, :]
        scaleResultWorldPosArray[scaleIndex] = np.vstack((scaleResultWorldPosArray[scaleIndex], oneArray))

2.2 生成样本

代码如下:

for scaleResultIndex in range(len(scaleResultWorldPosArray)):
        worldPosArray = scaleResultWorldPosArray[scaleResultIndex]
        #angle 
        samplesIndex = 0
        
        for pitchIndex in range(len(pitchAngleList)):
            for rollIndex in range(len(rollAngleList)):
                for headingIndex in range(len(headingAngleList)):
                    fileIndex = str(scaleResultIndex)+"_"+str(samplesIndex)
                    pitch_generate = pitchAngleList[pitchIndex]
                    roll_generate = rollAngleList[rollIndex]
                    heading_generate = headingAngleList[headingIndex]
                    #get result
                    #realWorldPositionTransform(samplesIndex, worldPositionArray, pitch_generate, roll_generate, heading_generate) 
                    totalGenerateResult(fileIndex, worldPosArray, pitch_generate, roll_generate, heading_generate)
                    #generate correspoding Zc Value
                    #generateZcFileAndData(samplesIndex, worldPositionArray, pitch_generate, roll_generate, heading_generate)
                    samplesIndex = samplesIndex + 1

2.3 训练网络实际结果

训练过程缩略如下:

483600/486000 [============================>.] - ETA: 0s - loss: 4.7297e-04 - acc: 0.9883
484800/486000 [============================>.] - ETA: 0s - loss: 4.7285e-04 - acc: 0.9883
486000/486000 [==============================] - 22s 45us/step - loss: 4.7224e-04 - acc: 0.9883
Epoch 00026: early stopping

Testing ------------

   200/121500 [..............................] - ETA: 10s
121500/121500 [==============================] - 3s 25us/step
test cost: [0.00039522304519598464, 0.98873252083735208]

可以看到准确率为98.83%。

之前做了很多无用功,依然是在图像像素坐标系加上缩放因子,生成样本,进行训练和测试,结果并不理想,都是误区。训练过程文件名是

netL4sampleNums607500DataFormat1Random0_0603-18_56
netL4sampleNums607500DataFormat1Random1_0603-21_12

中途还试了一下能否预测一下tz值,发现还是不行。

最后再次训练原始数据加上缩放的样本,结果如下:

485800/486000 [============================>.] - ETA: 0s - loss: 4.9058e-04 - acc: 0.9886
486000/486000 [==============================] - 23s 48us/step - loss: 4.9041e-04 - acc: 0.9886
Epoch 00026: early stopping

Testing ------------

   200/121500 [..............................] - ETA: 10s
121500/121500 [==============================] - 3s 28us/step
test cost: [0.00043568653173705393, 0.98842799379011237]

准确率是98.86%;

2.4测试结果

神经网络用以变形文本矫正系列第九篇

结果还是可以的

3.下期任务

目前工作可以完成整个过程,传入一张图片,纠正其变形,变成四正四方的标准模式。所以接下来的任务有以下:

1)提高网络预测的准确率

2)加上书本变形的因素,拟合书本的曲线

3)计算球面和直线的方程。这次逆映射主要是平面与直线的方程求解。

相关标签: 透视变换

上一篇:

下一篇: