Preferred Networks 通过其研究博客发布了深度学习计算机视觉实用库 ChainerCV,它基于
Chainer,能够简化计算机视觉的训练和应用过程,并含有用于计算机视觉研究的必备工具集。 ChainerCV
提供了目标检测和语义分割模型(Faster R-CNN、SSD 和 SegNet)的实现。 ChainerCV
具有大量的已训练权重,可在运行时自动从网络上下载,因此用户无需担心下载或者记住已训练权重的文件位置。同样,ChainerCV
提供了简单统一的界面,从而为解决相同任务的不同模型执行推理。例如,Faster R-CNN 和 SSD
都具备一个被称作「预测」的方法,它可以接收图像并返回物体检测的结果。

参考机器之心:资源 | ChainerCV:基于Chainer的深度学习计算机视觉实用库(内含工具集)

  • GitHub 地址:https://github.com/chainer/chainercv
  • 文档:http://chainercv.readthedocs.io/en/stable/

ChainerCV 包含了一组指导计算机视觉研究的工具:

为一般视觉数据集(如 PASCAL VOC 任务的目标识别数据集)而构建的数据集加载器
能用于数据预处理/数据增强的转换
可视化
一般度量方法的评估代码

.


一、基本介绍

1、安装

pip install chainercv

2、一个DEMO——SSD物体检测的案例

20分类,voc07数据集训练,VGG16为基本

from chainercv.links import FasterRCNNVGG16, SSD300
# You can use Faster R-CNN instead of SSD.
# model = FasterRCNNVGG16(pretrained_model='voc07')
model = SSD300(pretrained_model='voc0712')# `bboxes` is a list of numpy arrays containing coordinates of boundnig boxes
# around objects. `labels` and `scores` are class ids and confidence scores for
# the boxes.
bboxes, labels, scores = model.predict(imgs)  # imgs is a list of image

3、转化数据到指定训练格式

from chainer.datasets import get_mnist
from chainer.datasets import TransformDataset
from chainercv.transforms import random_rotatedataset, _ = get_mnist(ndim=3)def transform(in_data):# in_data is values returned by __getitem__ method of MNIST dataset.img, label = in_dataimg -= 0.5  # rescale to [-0.5, 0.5]img = random_rotate(img)return img, label
dataset = TransformDataset(dataset, transform)
img, label = dataset[0]

4、库中拥有的数据集

  • TransformDataset
  • CamVid
  • CUB
  • OnlineProducts
  • PASCAL VOC
    .

5、如何使用GPU

下载cupy库,pip install cupy, 当然预先需要配置好CUDNN

chainer.cuda.get_device_from_id(设备标号).use()
model.to_gpu()  # Copy the model to the GPU

.


二、用chainer实现图像分割SegNet

码云链接:https://gitee.com/mattzheng/chainercv_SegNet/tree/master
github链接:https://github.com/mattzheng/chainer_SegNet
相关code都放在上面了.

1、 图像分割SegNet

相关参考

  • github链接:https://github.com/chainer/chainercv
  • 官方文档链接:http://chainercv.readthedocs.io/en/stable/index.html
  • 预训练模型下载页面:https://github.com/yuyu2172/share-weights/releases/
  • SegNet参考的caffe实现及预训练模型:http://mi.eng.cam.ac.uk/projects/segnet/tutorial.html

由chainercv自带的预训练模型

采用的数据集为:camvid

  • 数据集类别camvid_label_names:’Sky’, ‘Building’, ‘Pole’, ‘Road’, ‘Pavement’, ‘Tree’, ‘SignSymbol’, ‘Fence’, ‘Car’, ‘Pedestrian’, ‘Bicyclist’
  • 不同类别的颜色camvid_label_colors:(128, 128, 128), (128, 0, 0), (192, 192, 128), (128, 64, 128), (60, 40, 222), (128, 128, 0), (192, 128, 128), (64, 64, 128), (64, 0, 128), (64, 64, 0), (0, 128, 192)

其中需要注意的是:

  • (1)’pip install chainercv’好像没有load进去vis_semantic_segmentation模块,所以我的做法是从github中加到:/usr/local/lib/python3.5/dist-packages/chainercv/visualizations目录下(github该模块链接:https://github.com/chainer/chainercv/tree/master/chainercv/visualizations)
  • (2)读图的时候,注意最好使用chainercv自带的读入函数utils.read_image

code展示:

import argparse
import matplotlib.pyplot as plot
import chainer
from chainercv.datasets import camvid_label_colors
from chainercv.datasets import camvid_label_names
from chainercv.links import SegNetBasic
from chainercv import utils
from chainercv.visualizations import vis_image
from chainercv.visualizations.vis_semantic_segmentation import vis_semantic_segmentation# pre-model + read picture
img = utils.read_image('../../iamge.jpg', color=True)
model = SegNetBasic(n_class = 11,pretrained_model  = 'camvid')
labels = model.predict([img])# plot
label = labels[0]  # (332, 500)
fig = plot.figure()
ax1 = fig.add_subplot(1, 2, 1)
vis_image(img, ax=ax1)
ax2 = fig.add_subplot(1, 2, 2)
vis_semantic_segmentation(label, camvid_label_names, camvid_label_colors, ax=ax2)
plot.show()

SegNetBasic函数解析(来源文档):
camvid数据是类别较少的分类。
SegNetBasic(n_class=None, pretrained_model=None, initialW=None)函数,有三个参数,n_class是预训练模型的参数,pretrained_model是预训练模型位置
predict(imgs),imgs输入array的list

.

2、自己训练segnet模型

其他的,如果你要自己训练segnet模型,请参考该页面

First, move to this directory (i.e., examples/segnet) and run:

python train.py [--gpu <gpu>]

一个使用的demo:

wget https://raw.githubusercontent.com/alexgkendall/SegNet-Tutorial/master/CamVid/test/0001TP_008550.png
python demo.py [--gpu <gpu>] [--pretrained_model <model_path>] 0001TP_008550.png

模型评估的函数:

python eval_camvid.py [--gpu <gpu>] [--pretrained_model <model_path>] [--batchsize <batchsize>]

这里有一个已经训练好的模型,可以做个案例,预训练模型的下载链接为:https://www.dropbox.com/s/exas66necaqbxyw/model_iteration-16000
评估的结果展示:

官方自带的一个预训练模型后的模型使用demo:

import argparse
import matplotlib.pyplot as plotimport chainerfrom chainercv.datasets import camvid_label_colors
from chainercv.datasets import camvid_label_names
from chainercv.links import SegNetBasic
from chainercv import utils
from chainercv.visualizations import vis_image
from chainercv.visualizations import vis_semantic_segmentationdef main():chainer.config.train = Falseparser = argparse.ArgumentParser()parser.add_argument('--gpu', type=int, default=-1)parser.add_argument('--pretrained_model', default='camvid')parser.add_argument('image')args = parser.parse_args()model = SegNetBasic(n_class=len(camvid_label_names),pretrained_model=args.pretrained_model)if args.gpu >= 0:chainer.cuda.get_device_from_id(args.gpu).use()model.to_gpu()img = utils.read_image(args.image, color=True)labels = model.predict([img])label = labels[0]fig = plot.figure()ax1 = fig.add_subplot(1, 2, 1)vis_image(img, ax=ax1)ax2 = fig.add_subplot(1, 2, 2)vis_semantic_segmentation(label, camvid_label_names, camvid_label_colors, ax=ax2)plot.show()if __name__ == '__main__':main()

ChainerCV︱堪比Opencv--深度学习工具库(Faster R-CNN、SSD 和 SegNet)相关推荐

  1. 基于PyTorch、易上手,细粒度图像识别深度学习工具库Hawkeye开源

    转载自丨机器之心 鉴于当前领域内尚缺乏该方面的深度学习开源工具库,南京理工大学魏秀参教授团队用时近一年时间,开发.打磨.完成了 Hawkeye--细粒度图像识别深度学习开源工具库,供相关领域研究人员和 ...

  2. (翻译)60分钟入门深度学习工具-PyTorch

    60分钟入门深度学习工具-PyTorch 作者:Soumith Chintala 原文翻译自: https://pytorch.org/tutorials/beginner/deep_learning ...

  3. OpenCV深度学习人脸识别示例——看大佬如何秀恩爱

    (欢迎关注"我爱计算机视觉"公众号,一个有价值有深度的公众号~) 提到OpenCV人脸识别,你是否还停留在Haar级联人脸检测+LBP特征人脸识别上?对于小规模数据库如何用Open ...

  4. 深度学习开源库tiny-dnn的使用(MNIST)

    tiny-dnn是一个基于DNN的深度学习开源库,它的License是BSD 3-Clause.之前名字是tiny-cnn是基于CNN的,tiny-dnn与tiny-cnn相关又增加了些新层.此开源库 ...

  5. 超详细!使用OpenCV深度学习模块在图像分类下的应用实践

    专注计算机视觉前沿资讯和技术干货 微信公众号:极市平台 官网:https://www.cvmart.net/ 极市导读:本文来自6月份出版的新书<OpenCV深度学习应用与性能优化实践>, ...

  6. 深度学习工具caffe详细安装指南

    转载自 深度学习工具caffe详细安装指南 前言: 在一台系统环境较好的linux机器上可以很容易的安装caffe,但是如果系统本身很旧,又没有GPU的话,安装就太麻烦了,所有都得从头做起,本文档旨在 ...

  7. opencv opencl加速_回放 | OpenCV Webinar 3:OpenCV深度学习应用与原理分析

    OpenCV DNN模块提供了深度学习的推理,支持Caffe.Tensoflow.Torch.Darknet.ONNX等格式的模型,无需用户安装对应的深度学习框架,也无需进行模型格式转换,直接调用DN ...

  8. 基于矢量成果从影像提取中深度学习样本库

    大数据之:影像提取中深度学习样本库获取的思考 话说,虾神一直是做空间统计和数据分析的,对于深度学习这个热门学科,一直以来也就停留在"了解"阶段,虽然这个平展开来,里面比较核心的技术 ...

  9. 实录分享 | 计算未来轻沙龙:深度学习工具专场(PPT下载)

    12 月 2 日(周日)下午,PaperWeekly 携手清华大学计算机系推出了计算未来轻沙龙第六期线下活动--深度学习工具专场.来自亚马逊 AWS.谷歌.英伟达.百度 PaddlePaddle 以及 ...

最新文章

  1. echarts的词云图表类型有哪些_词云图的几种制作方法评测,你pick哪款
  2. 送书福利 | 哈工大SCIR倾力打造NLP新书,详解预训练语言模型
  3. Nhibernate 3.0 cookbook学习笔记 创建事务自动包裹的访问层
  4. nginx location 匹配 多个规则_三道小练习助你弄懂 Nginx location 匹配
  5. mysql frm 恢复_mysql 从 frm 文件恢复 table 表结构的3种方法
  6. 从缓冲池命中率角度判断自己的MYSQL数据库是否需要扩容内存
  7. SpringBoot2.x(3)---基础入门
  8. 动手学深度学习Pytorch Task01
  9. python实现json文件中向量写入Excel中
  10. 创建C51工程文件疑问点---startup.A51
  11. 2020年叉车司机证考试题库及叉车司机试题解析
  12. eemd的r语言序列_EEMD详解
  13. python~运算符_python运算符
  14. 知识产权行业获客难?一招解决
  15. 解读| 支付宝催泪视频背后的反欺诈升级战
  16. Excel VBA 合并单元格适应分页打印
  17. SikuliX教程-下载与安装
  18. proteus各个版本下载
  19. 蓝桥杯 基础练习(三)字母图形 C语言
  20. 汇编指令mrs_ARM汇编指令MRS和MSR(转)

热门文章

  1. Nginx配置优化解读
  2. hdu 3221 Brute-force Algorithm(高速幂取模,矩阵高速幂求fib)
  3. TCP/IP协议学习(五) 基于C# Socket的C/S模型
  4. Travel(HDU 4284状压dp)
  5. 转:VS2005的DataGridView 多维合并标题 功能拓展
  6. 目标检测标注格式转换:labelme2yolo yolo2labelme
  7. No converter found capable of converting from type
  8. Kotlin(android)协程中文翻译
  9. 【Android Studio安装部署系列】二十二、Android studio自动生成set、get方法
  10. 数据库表的基本操作——创建一个表,索引和查询