pix2pix提供的示例是使用tensorflow,我我参考着来做了一个keras的实现,原项目中使用的是生成网络加上判别网络来提升生成网络,而我观察实际在训练中判别部分起到的作用比较小,所以我先尝试只使用生成网络来做训练.
具体的项目代码在:pix2pix-keras
下图为迭代了80次之后在训练下的一个效果,纹理上是逐渐变清晰的.
但是问题是左上部分的几乎没到训练出效果.
此问题的根本是在最后一层时左上部分的输出值过大.
为了定位解决此问题我尝试了几个角度的优化:
- 将所有layer的输出绘制成图像打出,用于观察在那一层开始出现的偏差
- 将所有layer的weight输出,用于观察是如何滚最后一层的时候出现过大数值.
- 将训练过程中每次样本产生梯度更新是的输入输出画出来观察是从那些步骤开始出现问题.

工具类代码均更新在git上.
最终定位到是是部分样本上由于光照和裁剪的问题
如遇到以下的样本,对训练引起的偏差较大.
图片中最下层是容易一起训练跑偏的样本,分析如,周边有几个黑色三角型的剪裁.将建筑物遮挡过多,但输入是未处理这些遮挡
为了更好训练,我重新审核了一次训练样本,将其中比较差的样本剔除,然后调整loss从mse到mae,之前使用平方是为了加大对误差的灵敏度,后来发现最后输出的数值过小平方反而降低了训练效率.另外为了提高训练速度吧batch该为了2,这个是我的内存能够加载的上限.
loss曲线如下:
不同epho下测试数据上效果:
总的来说相对于之前的效果好了不少.
我把测试集所有的建筑物全部过了一遍发现以下问题:
本文发布于:2024-01-27 23:58:40,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063711253422.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |