目录
图像分割:将图像每一个像素分类
一、图像分割分类
- 超像素分割:少量超像素代替大量 像素,常用于图像预处理
语义分割
:逐像素分类,无法区分 个体- 实例分割:对个体目标进行分割, 像素级目标检测
- 全景分割:语义分割结合实例分割
- 超像素分割:少量超像素代替大量像素,常用于图像预处理。下图中,每一个白色的区域都是一个超像素,是由很多像素构成的,通常来说,一个超像素中的像素性质都是非常接近的,例如下面这幅图中的每个超像素中的点颜色都非常接近。超像素分割的意义在于可以用少量的超像素代替大量的超像素,这样可以加快后面的训练速度
- 语义分割:逐像素分类,无法区分个体,语义分割就是我们通常所说的图像分割, 本质上是一个分类任务,相同的类别具有相同的颜色,如下图所示
- 实例分割:对个体目标进行分割, 像素级目标检测;实例分割只对我们感兴趣的对象进行分割,如下图所示,只对人物进行了分割,而对树木和草地都没有进行任何处理
- 全景分割:语义分割结合实例分割,全景分割相当于是语义分割与实例分割结合,既拥有了对每个像素点分类的能力,又拥有了对每个个体进行区分的能力,如下图所示:
答:图像分割由模型与人类配合完成
模型:将数据映射
到特征
二、PyTorch-Hub
常用函数
PyTorch-Hub—-PyTorch模型库,有大量模型供开发者调用,下面是Hub常用的三个函数。
torch.hub.load(“pytorch/vision”,‘deeplabv3_resnet101’,pretrained=True)
model=torch.hub.load(github,model,*args,**kwargs)
功能:加载模型
主要参数:
·github: str,项目名。eg: pytorch/vision,<repo_owner/repo_name[:tag_name]>
·model: str,模型名。torch.hub.list(github,force_reload=False)
列出当前github项目下有什么模型供我们调用。torch.hub.help(github,model,force_reload=False
列出模型的参数。
更多参见:https://pytorch.org/hub
实例演示
# -*- coding: utf-8 -*-
"""
# @brief : torch.hub调用deeplab-V3进行图像分割
"""
import os
import time
import torch.nn as nn
import torch
import numpy as np
import torchvision.transforms as transforms
from PIL import Image
from matplotlib import pyplot as plt
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
if __name__ == "__main__":
# path_img = os.path.join(BASE_DIR, "demo_img1.png")
# path_img = os.path.join(BASE_DIR, "demo_img2.png")
path_img = os.path.join(BASE_DIR, "demo_img3.png")
# config
preprocess = transforms.Compose([
transforms