神经网络用以变形文本矫正系列第九篇
程序员文章站
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)计算球面和直线的方程。这次逆映射主要是平面与直线的方程求解。
推荐阅读