0.前言
前面已经完成了书本模型上的透视形变工作以及网络训练和测试的相关工作,在进行逆映射的过程中发现了一些问题。困扰了很久,现已明了,记录如下。
1.逆映射失败的原因
经过研究,逆映射的思路没错,在前文中总结的原因方向是对的。因为z与x的关系并不符合z=a3*x^3+a2*x^2+a1*x+a0,所以一度陷入了僵局。
后来在老师的指点下,发现对于z的操作也是不对的,按照与x一致的改变是不对的,应该保持坐标与坐标之间相应的比例,故对z应全部乘以380.
之后,重新确定z与x的关系式,带入直线方程进行运算。
(原图已做旋转,但传上来还是这样)
按照上图中得到的公式进行运算,即可得到逆映射结果
2.逆映射结果展示
以最大样本数进行训练,网络结构是
firstLayerInputDim = 858
firstLayerOutput = 672
secondLayerOutput = 562 #572
thirdLayerOutput = 322 #335
lastLayerOutput = 6
训练日志缩略如下:
480200/486000 [============================>.] - ETA: 0s - loss: 9.8106e-04 - acc: 0.9999
481400/486000 [============================>.] - ETA: 0s - loss: 9.8089e-04 - acc: 0.9999
482600/486000 [============================>.] - ETA: 0s - loss: 9.8132e-04 - acc: 0.9999
483800/486000 [============================>.] - ETA: 0s - loss: 9.8124e-04 - acc: 0.9999
485000/486000 [============================>.] - ETA: 0s - loss: 9.8120e-04 - acc: 0.9999
486000/486000 [==============================] - 25s 52us/step - loss: 9.8107e-04 - acc: 0.9999 - val_loss: 8.9601e-04 - val_acc: 1.0000
Epoch 00025: early stopping
Testing ------------
200/121500 [..............................] - ETA: 2s
2400/121500 [..............................] - ETA: 2s
4600/121500 [>.............................] - ETA: 2s
121500/121500 [==============================] - 3s 25us/step
test cost: [0.00089601331520748975, 0.99998353911034854]
可见网络准确率还是挺高的。
值得一提的是,这个过程中,对label值中的A3,A2在写入label时进行了归一化,然后逆映射的时候在逆归一化。对z进行*380的处理。
逆映射结果如下:
可以看到,还是比较满意的。
3.接下来任务
1)对坐标进行缩放处理后,生成样本,训练网络,测试网络
2)取点,膨胀,补全,测试
4.插曲
WingIDE这几天用着用着就崩了,也不知道啥原因,重装了一次之后好了,然后又崩了。麻烦