【CV项目实战】纯新手如何从零开始完成一个工业级图像分割任务的整个流程?...
大家好,欢迎来到专栏《CV项目实战》,在这个专栏中我们会讲述计算机视觉相关的项目实战,有大型的完整项目,也有精炼的核心算法实战。
本次主要讲述一个完整的图像分割项目的标准流程,涉及数据标注,模型训练,模型测试。
作者&编辑 | 言有三
本文资源与图像分割结果展示
本文篇幅:4300字
背景要求:会使用Python和Pytorch深度学习开源框架
附带资料:Pytorch完整工程和标注工具可以从本文末公众号获取
同步平台:有三AI知识星球(一周内同步全文和Pytorch+Caffe代码,数据集)
1 项目背景
图像处理中,研究者往往只对图像中的某些区域感兴趣,在此基础上才有可能对目标进行后续的处理与分析。图像分割技术就是把图像中属于目标区域的感兴趣区域进行半自动或者自动地提取分离出来,属于计算机视觉领域中最基础的任务之一。
为了让新手们能够一次性体验一个图像分割任务的完整流程,本次我们选择带领大家完成一个天空背景图像分割任务,包括数据集的获取与标注,模型的训练和测试,同时也将这次的实验与上一期内容结合起来,完成嘴唇部位的分割。
2 准备工作
2.1 环境搭建
本次项目开发需要以下环境:
(1) Linux系统,推荐ubuntu16.04或者ubuntu18.04。使用windows系统也可以完成,但是使用Linux效率更高。
(2) 最好拥有一块显存不低于6G的GPU显卡,如果没有使用CPU进行训练速度较慢。
(3) 安装好的Pytorch(或Caffe)
2.2 数据获取
由于没有开源的数据集,我们首先要学会使用爬虫爬取图像,然后对获得的图片数据进行整理,包括重命名,格式统一,如果不清楚整个流程,可以参考我们上一次《【CV项目实战】纯新手如何从零开始完成一个工业级的图像分类任务?》,获得到的图像如下:
2.3 数据标注
接下来,我们需要对数据进行标注。图像分割任务要求对每一个像素进行预测,所以需要像素级别的标注结果,当然我们实际标注的时候往往是通过画轮廓形成闭合区域,下面使用我们自己开发的工具进行标注,步骤包括:
(1) 选择图片。
(2) 导入配置文件。
(3) 标注。
操作指导视频如下,工具获取方式请阅读至本文末尾。
如果要标注多个类别,可以配置多个类和对应的颜色,标注完之后的样本和结果如下:
需要注意的是,标注的结果并不是我们用于训练的标签,因为图像分割本身是对每一个图像像素进行分类,在当前的开源框架中,每一个像素的类别也是从0,1,2,3这样依次增加的。
所以需要把上面的彩色图,转换为单通道图,其中每一个像素值等于它的类别,如果上图中白色作为背景,类别为0,红色作为背景,类别为1,则可以用matlab或者python opencv遍历图像进行转换,python的代码如下。
import cv2
import sys
import os
import numpy as np
imagepaths = os.listdir(sys.argv[1])
for imagepath in imagepaths:
img = cv2.imread(os.path.join(sys.argv[1],imagepath))
mask = (img == (0,0,255)).astype(np.uint8)
cv2.imwrite(os.path.join(sys.argv[2],imagepath),mask)
【CV项目实战】纯新手如何从零开始完成一个工业级图像分割任务的整个流程?...相关推荐
- 【CV项目实战】纯新手如何从零开始完成一个工业级的图像分类任务?
大家好,欢迎来到专栏<CV项目实战>,在这个专栏中我们会讲述计算机视觉相关的项目实战,有大型的完整项目,也有精炼的核心算法实战. 本次主要讲述一个完整的工业级别图像分类项目的标准流程,涉及 ...
- GoWeb 项目实战:使用 Iris 框架构建一个安全可靠的 API 服务(附 JWT 认证实现)
1.前言 我们知道,http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再一次进行用户认证才行,因为根据http协议,我们并 ...
- 【项目实战】用 Java 写了一个类QQ界面聊天小项目,可在线聊天!
1.功能实现 1.修改功能(密码.昵称.个性签名) 2.添加好友.删除好友 3.单聊功能 4.判断好友是否在线 2.模块划分 == 3.使用的知识 netty swing 集合等同步阻塞队列synch ...
- 【Golang项目实战】手把手教你写一个备忘录程序|附源码——建议收藏
博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作.目前在学习和分享:数据结构.Go,Java等相关知识. 博主主页: @是瑶瑶子啦 所属专栏: Go语言核心编程 近期目标:写好专栏的每一篇文 ...
- 从零开始做一个工业级别的实时换脸程序
人像处理技术,是当前大多数人工智能公司很重要的一个卖点,可以运用于各种领域:如美颜相机.安防等领域.不少 App(比如天天 P 图)以及人工智能开放平台(比如 Face++.腾讯优图.百度)都提供付费 ...
- Python 小白从零开始 PyQt5 项目实战(4)基本控件
本系列面向 Python 小白,从零开始实战解说应用 QtDesigner 进行 PyQt5 的项目实战. 什么叫从零开始?从软件安装.环境配置开始.不跳过一个细节,不漏掉一行代码,不省略一个例图. ...
- Python 小白从零开始 PyQt5 项目实战(5)布局管理
本系列面向 Python 小白,从零开始实战解说应用 QtDesigner 进行 PyQt5 的项目实战. 什么叫从零开始?从软件安装.环境配置开始.不跳过一个细节,不漏掉一行代码,不省略一个例图. ...
- Python 小白从零开始 PyQt5 项目实战(3)信号与槽的连接
本系列面向 Python 小白,从零开始实战解说应用 QtDesigner 进行 PyQt5 的项目实战. 什么叫从零开始?从软件安装.环境配置开始.不跳过一个细节,不漏掉一行代码,不省略一个例图. ...
- Python 小白从零开始 PyQt5 项目实战(2)菜单和工具栏
本系列面向 Python 小白,从零开始实战解说应用 QtDesigner 进行 PyQt5 的项目实战. 什么叫从零开始?从软件安装.环境配置开始.不跳过一个细节,不漏掉一行代码,不省略一个例图. ...
最新文章
- php 多人游戏_「谁会是下一个王者农药」云服务器如何搭建游戏服务器?
- Java 调用Oracle的存储过程
- leetcode------Subsets
- web报表工具FineReport的JS编辑框和URL地址栏语法简介
- 收藏jquery兼容浏览器的ctrl+enter动作代码
- java结构控制break和continue
- 如何将图片转换成PCBLogo
- ACM MM ECCV 2022 | 美团视觉8篇论文揭秘内容领域的智能科技
- java 去掉图片水印文字_Java实现图片水印工具类
- pta c语言作业,C语言PTA平台习题与答案
- Linux之创建、删除文件及目录命令touch、echo、mkdir、rm、rmdir
- python 修改PE文件头
- 计算机更换配件导致系统,旧电脑怎么升级 旧电脑要换哪些配件
- 官方:2056名广西考生未按规定上传“软考报考材料”,逾期将取消资格
- 登录界面——渗你千千万万遍
- 【博弈论】bzoj1022[SHOI2008]小约翰的游戏John
- BIG DATA 神奇的大数据 - Hadoop(Linux)环境搭建与部署
- js bug: Origin 'null' is therefore not allowed access.
- 实现海康监控视频播放(实时预览)(抓拍,录像,对讲等功能)
- 追求卓越之--arm MMU详解
热门文章
- 400 多页的 Java 面试笔记,各个公司面试真题!
- 史上最全SQL优化方案
- 回溯算法的题目,这样做,秒杀!!
- matplotlib绘图入门详解
- 信息系统项目管理知识--项目范围管理
- 动态规划--连续子序列的最大和
- HashMap中提到的散列是什么?
- arcgis中欧氏距离操作_ArcGIS空间统计工具—平均中心与中位数中心
- 两个形状不同的长方形周长_“解决问题——怎样围周长最短”教学思考与设计...
- aop对请求后端的参数修改_Spring Aop 修改目标方法参数和返回值