图像分割
分类
- 图像分割
- 图像语义分割
- 图像实例分割
- 图像全景分割
- 视频目标分割
- 视频实例分割
语义分割
目的
语义分割算法的基本流程
- 输入:图像(RGB)
- 算法:深度学习模型
- 输出:分类结果(与输入大小一致的单通道图)
- 训练过程 :
- 输入: image + label
- 前向:out = model(image)
- 计算损失 :loss = loss_func(out,label)
- 反向:loss.backward()
- 更新权重:optimizer.minimize(loss)
分割网络的评价指标
mIoU
mAcc
代码
环境:Paddle 1.8.4,Python 3.7
BasicModel
import paddle
import paddle.fluid as fluid
from paddle.fluid.dygraph import to_variable
from paddle.fluid.dygraph import Conv2D
from paddle.fluid.dygraph import Pool2D
import numpy as np
np.set_printoptions(precision=2)
class BasicModel(fluid.dygraph.Layer):
def __init__(self, num_classes=59):
super(BasicModel, self).__init__()
self.pool = Pool2D(pool_size=2, pool_stride=2)
self.conv = Conv2D(num_channels=3, num_filters=num_classes, filter_size=1)
def forward(self, inputs):
x = self.pool(inputs)
x = fluid.layers.interpolate(x, out_shape=inputs.shape[2::])
x = self.conv(x