tensorflow2.0入门实例一(数据下载)

  做东西,最重要的就是动手了,所以这篇文章动手跑了一个fcn32s和fcn8s以及deeplab v3+的例子,这个例子的数据集选用自动驾驶相关竞赛的kitti数据集, FCN8s在训练过程中用tensorflow2.0自带的评估能达到91%精确率, deeplab v3+能达到97%的准确率。
  这篇文章适合入门级选手,在文章中不再讲述fcn的结构,直接百度就可以搜到。
  文章使用的是tensorflow2.0框架,该框架集成了keras,在模型的训练方面极其简洁,不像tf1.x那么复杂,综合其他深度学习框架,发现这个是最适合新手使用的一种。
  文章中用到的库函数,参数等均可在tensorflow2.0 api中查找到。
  文章的代码在github可以获取,地址:https://github.com/fengshilin/tf2.0-FCN

文章的结构如下:

  1. 数据下载与分析
  2. 数据预处理(重点在label的预处理)
  3. 模型加载
  4. 模型建立(FCN与Deeplab)
  5. 模型训练与测试

1.数据的下载与分析

  一般深度学习的教程都使用官方的数据集进行训练,这样省去很多步骤,训练过程很简单,易于初学者的学习。对于CNN等分类算法也不无不可,但是对于语义分割这一类像素级别的分类,用官方的例子,就不便于对模型的输入与输出的理解,像素级别的算法需要输入的label为类别,而往往拿到的label都是像素值。所以文章中用kitti竞赛的未做过处理数据集来做训练。
  在做模型训练的时候一般需要对数据集进行分析,查看label的结构,以及影像的特点,以此确定对影像做哪些数据增强。(数据增强可以用python的库imgaug,现在可以先不看这个库怎么用,先跑通模型再研究imgaug的使用)

数据的下载

  测试使用的是kitti数据集(https://pan.baidu.com/s/1n46UXqpl2-Yc_DaXSrj7XA
, 提取码:3s6k ),数据下载好后可以看一下数据结构,在dataroad/training目录下有一个gt_image2与image2目录,分别存放标签与图片。
  查看training中的文件可以发现,gt_image2中命名规则为*_road_.png*或者*_lane_.png*。
其中lane表示自己车道,road表示所有车道。所以对一张图可能同时又road与lane两张label。跑模型时先忽略lane的数据。
  其中um表示只有一条道路分割线的道路,umm表示有多个道路分割线的道路,uu表示无道路分割线的道路。

注意: 图片的大小是不一致的,在训练模型时需要将其resize到一致的大小再进行训练。
可以看到影像与road lable的一一对应如下:
tensorflow2.0入门实例一(数据下载)_第1张图片
tensorflow2.0入门实例一(数据下载)_第2张图片

模型结果展示

用deeplab的模型在测试集上的结果:
tensorflow2.0入门实例一(数据下载)_第3张图片

tensorflow2.0入门实例一(数据下载)_第4张图片
准确率
tensorflow2.0入门实例一(数据下载)_第5张图片

开始

  建议用python3.6版本,至少需要python3.x版本。
  安装好python并配置好环境后,安装需要的库。

anaconda版本
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow==2.0.0
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple scipy==1.0.0

python版本
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow==2.0.0
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple scipy==1.0.0

使用gpu跑模型会快很多,所以推荐用GPU,安装gpu的步骤可以参看博客。

点击文章开头,文章结构中的连接可跳至其他章节。

你可能感兴趣的:(python,深度学习)