提交 42a53f09 编写于 作者: L LutaoChu 提交者: wuzewu

add gray2psedu_color doc + adjust the place of function get_color_map (#105)

* modify label tool

* support color label
上级 762e5948
...@@ -2,6 +2,42 @@ ...@@ -2,6 +2,42 @@
## 数据标注 ## 数据标注
### 标注协议
PaddleSeg采用单通道的标注图片,每一种像素值代表一种类别,类别从0开始,例如0,1,2,3表示有4种类别。
一般的分割库使用单通道灰度图作为标注图片,往往显示出来是全黑的效果。灰度标注图的弊端:
1. 对图像标注后,无法直接观察标注是否正确。
2. 模型测试过程无法直接判断分割的实际效果。
**PaddleSeg支持伪彩色图作为标注图片,在原来的单通道图片基础上,注入调色板。在基本不增加图片大小的基础上,却可以显示出彩色的效果。**
同时PaddleSeg也兼容灰度图标注,用户原来的灰度数据集可以不做修改,直接使用。
![](./imgs/annotation/image-11.png)
### 灰度标注转换为伪彩色标注
如果用户需要转换成伪彩色标注图,可使用我们的转换工具。适用于以下两种常见的情况:
1. 从指定灰度标注所在的目录读取标注图片
```buildoutcfg
python pdseg/tools/gray2pseudo_color.py <dir_or_file> <output_dir>
```
|参数|用途|
|-|-|
|dir_or_file|指定灰度标注所在目录|
|output_dir|彩色标注图片的输出目录|
2. 从已有文件列表中读取标注图片
```buildoutcfg
python pdseg/tools/gray2pseudo_color.py <dir_or_file> <output_dir> --dataset_dir <dataset directory> --file_separator <file list separator>
```
|参数|用途|
|-|-|
|dir_or_file|指定文件列表路径|
|output_dir|彩色标注图片的输出目录|
|--dataset_dir|数据集所在根目录|
|--file_separator|文件列表分隔符|
### 标注教程
用户需预先采集好用于训练、评估和测试的图片,然后使用数据标注工具完成数据标注。 用户需预先采集好用于训练、评估和测试的图片,然后使用数据标注工具完成数据标注。
PddleSeg已支持2种标注工具:LabelMe、精灵数据标注工具。标注教程如下: PddleSeg已支持2种标注工具:LabelMe、精灵数据标注工具。标注教程如下:
......
...@@ -14,3 +14,4 @@ ...@@ -14,3 +14,4 @@
# limitations under the License. # limitations under the License.
import models import models
import utils import utils
import tools
\ No newline at end of file
...@@ -8,7 +8,6 @@ import os.path as osp ...@@ -8,7 +8,6 @@ import os.path as osp
import sys import sys
import numpy as np import numpy as np
from PIL import Image from PIL import Image
from pdseg.vis import get_color_map_list
def parse_args(): def parse_args():
...@@ -26,6 +25,28 @@ def parse_args(): ...@@ -26,6 +25,28 @@ def parse_args():
return parser.parse_args() return parser.parse_args()
def get_color_map_list(num_classes):
""" Returns the color map for visualizing the segmentation mask,
which can support arbitrary number of classes.
Args:
num_classes: Number of classes
Returns:
The color map
"""
color_map = num_classes * [0, 0, 0]
for i in range(0, num_classes):
j = 0
lab = i
while lab:
color_map[i * 3] |= (((lab >> 0) & 1) << (7 - j))
color_map[i * 3 + 1] |= (((lab >> 1) & 1) << (7 - j))
color_map[i * 3 + 2] |= (((lab >> 2) & 1) << (7 - j))
j += 1
lab >>= 3
return color_map
def gray2pseudo_color(args): def gray2pseudo_color(args):
"""将灰度标注图片转换为伪彩色图片""" """将灰度标注图片转换为伪彩色图片"""
input = args.dir_or_file input = args.dir_or_file
......
...@@ -12,7 +12,7 @@ import numpy as np ...@@ -12,7 +12,7 @@ import numpy as np
import PIL.Image import PIL.Image
import labelme import labelme
from pdseg.vis import get_color_map_list from gray2pseudo_color import get_color_map_list
def parse_args(): def parse_args():
......
...@@ -12,7 +12,7 @@ import numpy as np ...@@ -12,7 +12,7 @@ import numpy as np
import PIL.Image import PIL.Image
import labelme import labelme
from pdseg.vis import get_color_map_list from gray2pseudo_color import get_color_map_list
def parse_args(): def parse_args():
......
...@@ -34,6 +34,7 @@ from utils.config import cfg ...@@ -34,6 +34,7 @@ from utils.config import cfg
from reader import SegDataset from reader import SegDataset
from models.model_builder import build_model from models.model_builder import build_model
from models.model_builder import ModelPhase from models.model_builder import ModelPhase
from tools.gray2pseudo_color import get_color_map_list
def parse_args(): def parse_args():
...@@ -73,28 +74,6 @@ def makedirs(directory): ...@@ -73,28 +74,6 @@ def makedirs(directory):
os.makedirs(directory) os.makedirs(directory)
def get_color_map_list(num_classes):
""" Returns the color map for visualizing the segmentation mask,
which can support arbitrary number of classes.
Args:
num_classes: Number of classes
Returns:
The color map
"""
color_map = num_classes * [0, 0, 0]
for i in range(0, num_classes):
j = 0
lab = i
while lab:
color_map[i * 3] |= (((lab >> 0) & 1) << (7 - j))
color_map[i * 3 + 1] |= (((lab >> 1) & 1) << (7 - j))
color_map[i * 3 + 2] |= (((lab >> 2) & 1) << (7 - j))
j += 1
lab >>= 3
return color_map
def to_png_fn(fn): def to_png_fn(fn):
""" """
Append png as filename postfix Append png as filename postfix
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册