语义分割算法–地表建筑物识别学习
赛题任务:赛题以计算机视觉为背景,要求选手使用给定的航拍图像训练模型并完成地表建筑物识
在赛题数据中像素属于 2 类(无建筑物和有建筑物),因此标签为有建筑物的像素。赛题原始图片为 jpg 格式,标签为 RLE 编码的字符串。
RLE 全称(run-length encoding),翻译为游程编码或行程长度编码,对连续的黑、白像素数以不同的码字进行编码。RLE 是一种简单的非破坏性资料压缩法,经常用在在语义分割比赛中对标签进行编码
转换代码:
import numpy as np
import pandas as pd
import cv2
#将图片编码为rle格式 - def rle_encode(im):
’’’ im: numpy array, 1 - mask, 0 - background
Returns run length as string formated10 ’’’
pixels = im.flatten(order = ’F’) - pixels = np.concatenate([[0], pixels, [0]])
runs = np.where(pixels[1:] != pixels[:-1])[0] + 1
runs[1::2] -= runs[::2]
return ’ ’.join(str(x) for x in runs)
#将rle格式进行解码为图片 - def rle_decode(mask_rle, shape=(512, 512)):
’’’20 mask_rle: run-length as string formated (start length) - shape: (height,width) of arra