zoukankan      html  css  js  c++  java
  • keras 的 Deeplabv3+ 实现遇到的问题

    代码大佬都已经写好了,具体参考:https://github.com/bonlime/keras-deeplab-v3-plus

    git clone 下来以后,按照指南要训练自己的数据集,只要设置好自己的数据大小和类别就可以了

    from model import Deeplabv3
    deeplab_model = Deeplabv3(input_shape=(384, 384, 3), classes=4)

    问题1:我的数据集不是一张张小图片,而是一个大的遥感影像tif,如何训练这个数据

    解决:用 gdal 读取得到它的 np.array,再通过生成器一小块一小块输入

    问题2:但是这样的生成器无法打乱顺序,把多景影像标签和图像 zip 起来后也无法用 random.shuffle 打乱图片顺序

    解决:现在只能每次都按顺序读入,应该对训练影响不大

    设想:后续想法是设置一个随机数列,根据这个随机数列读取指定大小范围,这样是把步长变为了1,会有好多样本

    问题3:验证集和训练集只能按 tif 分,如何能随机取

    设想:随机数列解决

    问题4:运行一直报错,各种错,先后有 

      module 'tensorflow._api.v1.compat' has no attribute 'v1'

      unsupported operand type(s) for /: 'Dimension' and 'float'

    解决:直接 git clone 下来的是用最新版 tf2.0 写的,需要升级自己的 tf 或者用作者之前版本的实现,在这里用了之前版本的 keras 实现,在命令行输入一下代码

    git clone https://github.com/bonlime/keras-deeplab-v3-plus/
    cd keras-deeplab-v3-plus/
    git checkout 714a6b7d1a069a07547c5c08282f1a706db92e20

    问题5:写的生成器生成的标签最后一维是1,导致运行一直报错,维度不匹配

    解决:这个写的是用了 one-hot 编码的,需要把标签转换成 one-hot,用 “ from keras.utils import to_categorical ”,to_categorical(x, num_classes=n)把 x 里从 0 到 n-1的值根据大小扩展到 n 维,若最大值和类别数目不同会报错

    问题6:评价指标 loss 和各种系数不在正常范围内

    解决:一开始以为是 one-hot 编码问题,一直尝试用 k.argmax 去得到1维的 tensor,死活弄不出来,报错有:数据类型不对,用 K.cast 强制转换解决,tensor 不能和数值相加,用argmax导致梯度无法回流等。睡了一觉想想不能用 argmax,他就是要在每一个维度上计算出相应指标再求平均,原来在不是 one-hot 编码里用的函数都还是对的,那问题出在老版本里最后没有用激活函数,给他加个激活函数以后一切都正常了。

    问题7:作者说没有实现 weight_decay,需要的自己加

    还未解决:不知道去哪加

    ---------------- 坚持每天学习一点点
  • 相关阅读:
    IntelliJ IDEA 2016.2 配置Tomcat 运行Web项目
    关于Windows Server 服务器 安装tomcat部署Java Web 项母
    Oracle 数据库 回滚
    Oracle创建表空间、创建用户以及授权
    Kivy 简单尝试
    用qpython3写一个发送短信的程序
    PHP高效率写法
    上班时能不能戴耳机?V
    OPNsense防火墙搭建实验环境,MSF与SSH进行流量转发
    OWASP Hakcing Lab在线漏洞环境
  • 原文地址:https://www.cnblogs.com/tccbj/p/10728316.html
Copyright © 2011-2022 走看看