语义分割:基于openCV和深度学习(一)
语义分割:基于openCV和深度学习(一)
Semantic segmentation with OpenCV and deep learning
介绍如何使用OpenCV、深度学习和ENet架构执行语义分段。阅读完今天的文章后,能够使用OpenCV对图像和视频应用语义分割。深度学习有助于提高计算机视觉的前所未有的准确性,包括图像分类、目标检测,现在甚至分割。
传统的分割方法是将图像分割为若干部分(标准化切割、图形切割、抓取切割、超像素等);然而,算法并没有真正理解这些部分所代表的内容。
另一方面,语义分割算法试图:
把图像分成有意义的部分,同时,将输入图像中的每个像素与类标签(即人、路、车、公共汽车等)相关联,语义分割算法非常强大,有很多用例,包括自动驾驶汽车——展示如何将语义分割应用于道路场景图像/视频!要学习如何使用OpenCV和深度学习应用语义分割,请继续阅读!
寻找这篇文章的源代码?直接跳到下载部分。OpenCV语义分割与深度学习 在文章的第一部分,将讨论ENet深度学习体系结构。
在这里,将演示如何使用ENet对图像和视频流应用语义分割。在这一过程中,将分享来自分段的示例输出,将语义分段应用于项目时感受到预期的结果。
The ENet semantic segmentation architecture
Figure 1: The ENet deep learning semantic segmentation architecture.
ENet的一个主要优点是它的速度比大型模型快18倍,需要的参数比大型模型少79倍,具有相似或更好的精度。型号本身只有3.2兆! 在的计算机上,一次CPU转发需要0.2秒——如果使用GPU,这个分段网络可以运行得更快。Paszke等人。在Cityscapes数据集上训练该数据集,这是一个语义的、实例化的、密集的像素注释,包含20-30个类(取决于使用的模型)。顾名思义,城市景观数据集包括可用于城市场景理解的图像示例,包括自动驾驶车辆。
使用的特定模型在20个课题中进行了训练,包括:
如何应用语义分割来提取图像和视频流中每个类的密集像素映射。如果有兴趣,在自定义数据集上训练自己的ENet模型进行分段。
Semantic segmentation with OpenCV and deep learning
$ tree --dirsfirst
.
├── enet-cityscapes
│ ├── enet-classes.txt
│ ├── enet-colors.txt
│ └── enet-model.net
├── images
│ ├── example_01.png
│ ├── example_02.jpg
│ ├── example_03.jpg
│ └── example_04.png
├── videos
│ ├── massachusetts.mp4
│ └── toronto.mp4
├── output
├── segment.py
└── segment_video.py
4
directories, 11 files
项目有四个目录:
enet cityscapes/:包含预先训练的深度学习模型、项目列表和与项目对应的颜色标签。 images/:选择四个样本图像来测试图像分割脚本。
videos/:包括两个用于测试深度学习分段视频脚本的示例视频。这些视频的点数列在“视频分割结果”部分。
output/:出于组织目的,喜欢让脚本将处理过的视频保存到output文件夹中。不包括在下载的输出图像/视频,因为文件的大小相当大。需要使用的代码自行生成它们。 回顾两个Python脚本:
segment.py:对单个图像执行深度学习语义分割。将通过这个脚本来学习分割的工作原理,然后在转到视频之前对单个图像进行测试。
segment_video.py:顾名思义,此脚本将对视频执行语义分割。
语义分割:基于openCV和深度学习(一)相关推荐
- 语义分割:基于openCV和深度学习(二)
语义分割:基于openCV和深度学习(二) Semantic segmentation in images with OpenCV 开始吧-打开segment.py归档并插入以下代码: Semanti ...
- python实现人脸口罩检测(基于opencv和深度学习两种方法)
人脸口罩检测GUI系统(基于opencv和深度学习两种方法对比) 由于疫情的影响,人脸口罩检测系统的开发成为很多人争相开发的一种算法.很多公司或者个人都开源了他们很多的代码或者SDK.大家在GitHu ...
- 基于OpenCV和深度学习的自动驾驶遥控小车
阅读原文 项目中使用的技术 Python + OpenCV Neural Network + Haar-Cascade Classifiers 项目目标 改装后遥控小车完成三个任务:自动驾驶,识别信号 ...
- OpenCV进阶(6)基于OpenCV的深度学习人体姿态估计之多人篇
在之前的文章中,我们使用OpenPose模型对一个人进行人体姿势估计.在这篇文章中,我们将讨论如何进行多人姿势估计. 当一张照片中有多个人时,姿态估计会产生多个独立的关键点.我们需要找出哪组关键点属于 ...
- tensorflow 语义slam_研究《视觉SLAM十四讲从理论到实践第2版》PDF代码+《OpenCV+TensorFlow深度学习与计算机视觉实战》PDF代码笔记...
我们知道随着人工神经网络和深度学习的发展,通过模拟视觉所构建的卷积神经网络模型在图像识别和分类上取得了非常好的效果,借助于深度学习技术的发展,使用人工智能去处理常规劳动,理解语音语义,帮助医学诊断和支 ...
- 在基于图像的深度学习中如何做数据的自动标注以及自动标注的等级介绍
作者:Tobias Schaffrath Rosario 编译:ronghuaiyang 原文:在基于图像的深度学习中如何做数据的自动标注以及自动标注的等级介绍_ronghuaiyang的博客-CSD ...
- 用OpenCV和深度学习进行年龄识别
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|机器学习算法那些事 在本教程中,您将学习如何使用OpenC ...
- 【技术综述】基于弱监督深度学习的图像分割方法综述
文章首发于微信公众号<有三AI> [技术综述]基于弱监督深度学习的图像分割方法综述 本文是基于弱监督的深度学习的图像分割方法的综述,阐述了弱监督方法的原理以及相对于全监督方法的优势,首发 ...
- Pytorch:图像语义分割-基于VGG19的FCN8s实现
Pytorch: 图像语义分割-基于VGG19的FCN8s语义分割网络实现 Copyright: Jingmin Wei, Pattern Recognition and Intelligent Sy ...
最新文章
- Go的协程与Swoole的协程的区别:环境支持 线程
- 利用CGLib实现动态代理实现Spring的AOP
- 如何处理Angular应用的错误消息: No pipe found with name async
- hadoop 运行java类_hadoop运行java类
- Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句梳理
- 计算机跳转列表常用组合框,2015计算机二级VB考点复习指导:列表框和组合框
- 最初语音识别率只有60%,如今坐拥5亿用户,这款AI产品是怎么做到的?
- Wireshark 常用过滤
- 用c#语言制作ktv点歌系统,KTV点歌系统的设计与实现的设计和实现(C#,C/S,Access)
- Redis Zadd 命令 Redis 有序集合(sorted set)Redis Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中。如果某个成员已经是有序集的成员,那么更新
- 软考高级,信息系统项目管理师(高项)经验分享
- java开发中索引越界异常怎么办?
- 不会吧不会吧!不会还有人用破解版origin吧——免费使用OriginPro学习版方法
- 【斯坦福公开课-机器学习】1.机器学习的动机和应用(吴恩达 Andrew Ng)
- POJ - 3264
- 神经网络与深度学习(一):神经网络与数字识别
- 使iis支持php的方法简介
- 《MongoDB》 数组操作
- Chipyard BOOM环境搭建
- fcpx如何用光流法_熟悉这些fcpx剪辑技巧 快速提高你的剪辑效率