有哪些模型可以实现图像语义分割任务
有哪些模型可以实现图像语义分割任务?
实现图像语义分割任务的模型有很多,本文重点介绍其中来自Github项目中的一个模型。这个Github项目通过结合CNN和CRF-RNN模型实现图像的语义分割,读者可以跟随该项目利用 Keras/Tensorflow 实现这一过程。
展示地址:http://crfasrnn.torr.vision
项目地址:https://github.com/sadeepj/crfasrnn_keras
该Github项目包含使用Keras/TensorFlow代码实现“CRF-RNN”图像语义分割的方法,论文《Conditional Random Fields as Recurrent Neural Networks》最先发表在 ICCV2015 中。本项目的展示同样获得了当年最佳展示奖,本文在下面给出了该项目最初的Caffe代码。本项目提供的Keras/TensorFlow代码和其效果基本和Caffe版本的是一样的。下面让我们跟随安装向导实现语义分割。
Caffe版本的代码:https://github.com/torrvision/crfasrnn
安装向导1.1 安装依赖项
安装TensorFlow和Keras,然后分别跟随以下的安装向导。如果我们计划使用预训练模型,那么我们需要安装Keras和HDF5/h5py。在安装这两个包之后,运行以下的命令行以确保它们都得到了正确的安装:
安装TensorFlow:https://www.tensorflow.org/install/
安装Keras:https://keras.io/#installation
# First, activate the correct Python virtualenv if you used one during Tensorflow/Keras installation
$ source /home/user/tensorflow_virtualenv/bin/activate
$ python
> > > import tensorflow
> > > import keras
如果安装正确了,那我们在如上导入库的时候不会看到任何报错。
1.2 构建CRF-RNN 定制的C++代码
检验本项目的代码,并激活Tensorflow/Keras virtualenv,然后在cpp目录下运行 compile.sh脚本。即运行以下命令行:
$ git clone https://github.com/sadeepj/crfasrnn_keras.git
$ cd crfasrnn_keras/cpp
$ source /home/user/tensorflow_virtualenv/bin/activate
$ ./compile.sh
如果构建成功,我们就能看到一个名为high_dim_filter.so的新文件(扩展名可能会根据我们的系统而不同)。如果构建失败,请查看compile.sh文件下的命令,我们同样可以参看TensorFlow构建定制化操作的官方向导。
官方构建向导地址:https://www.tensorflow.org/extend/adding_an_op#build_the_op_library
1.3 下载预训练模型权重
下载模型权重后放在srfasrnn_keras目录下,并且命名为 crfrnn_keras_model.h5。
预训练权重下载地址:https://goo.gl/ciEYZi
1.4 运行演示
$ cd crfasrnn_keras
$ python run_demo.py # Make sure that the correct virtualenv is already activated
如果以上运行顺利,我们就可以在文件“labels.png”看到语义分割的结果。
目前版本的局限性目前,在CRF-RNN层的一些操作只能在CPU中运行。GPU版本的训练方法将很快发布。
crfrnn_keras_model.h5模型是直接从Caffe模型转换来的,但是从Keras直接完全训练一个模型也是可行的。
论文:Conditional Random Fields as Recurrent Neural Networks
论文地址:http://www.robots.ox.ac.uk/~szheng/papers/CRFasRNN.pdf
像语义分割任务那样的像素级标注任务在图像理解任务中起到了关键作用。最近的方法都在尝试将用于图像识别的深度学习技术应用于像素级的标注任务。这种方法的关键问题是深度学习技术在描绘视觉对象时的有限能力。为了解决这个问题,我们引进了一种新式卷积神经网络,该网络是由卷积神经网络(CNN)和基于条件随机场(CRF)的概率图模型所组成。为此,我们通过Gaussian pairwise potential为条件随机场制定了平均场近似推断,并将其作为作为循环神经网络。我们称该网络为CRF-RNN,然后我们就可以把它嵌入作为CNN的一部分,并获得同时拥有CNN和CRF性质的深度网络。重要的是,我们的系统完全可以在CNN中集成CRF建模,这就令该模型能通过反向传播算法端到端地训练整个深度网络,且避免了为目标描述使用离线后处理方法。
我们应用该提出的方法解决图像语义分割问题,它在Pascal VOC 2012 挑战赛语义分割基准上获得了最好的结果。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 有哪些模型可以实现图像语义分割任务
本文地址: https://pptw.com/jishu/64533.html
