Supervisely 이미지 분할 데이터 세트 형식 변환
이미지 분할 데이터 집중 이미지 의 표 시 는 두 가지 기하학 적 유형 이 있 습 니 다. 비트 맵 (bitmap), 다각형 (polygon) 입 니 다.스스로 해석 하려 면 이 두 가지 유형 을 처리 하고 참고 해 야 한다. “Supervisely "이미지 분할 데이터 세트 형식 해석".사용 방법supervisely_lib 통 일 된 API 를 제공 합 니 다. 기하학 적 유형 에 관심 을 가 질 필요 가 없습니다. 같은 API 로 가 져 올 수 있 습 니 다. 마스크, 윤곽, box.
마스크 이미지 생 성 을 예 로 들 면
설치 하 다 supervisely_lib
supervisely_lib 항목 주소:https://github.com/supervisely/supervisely
설치 방법 은 프로젝트 홈 페이지 (README. md) 를 참조 합 니 다.
설치 과정 에서 제3자 라 이브 러 리 에 의존 할 수 있 습 니 다. 그 중에서 요구 합 니 다. opencv-python 버 전 은 4.0.0 보다 작다.제 Python 환경 에 설치 되 어 있 기 때 문 입 니 다. opencv-python 4.2.0 그래서 저 는... supervisely 약간의 수정, 차 이 는 다음 과 같 습 니 다.
diff --git a/setup.py b/setup.py
index dad24a3..4cc0698 100644
--- a/setup.py
+++ b/setup.py
@@ -25,7 +25,7 @@ setup(
"jsonschema>=2.6.0,<3.0.0",
"matplotlib>=3.0.0",
"numpy>=1.14.3",
- "opencv-python>=3.4.1,<4.0.0",
+ "opencv-python>=3.4.1",
"pandas>=1.0.3",
"pascal-voc-writer>=0.1.4",
"PTable>=0.9.2",
diff --git a/supervisely_lib/geometry/bitmap.py b/supervisely_lib/geometry/bitmap.py
index 30880b8..ab51919 100644
--- a/supervisely_lib/geometry/bitmap.py
+++ b/supervisely_lib/geometry/bitmap.py
@@ -117,7 +117,7 @@ class Bitmap(BitmapBase):
self.to_bbox().get_cropped_numpy_slice(bitmap)[self.data] = color
def _draw_contour_impl(self, bitmap, color, thickness=1, config=None):
- _, contours, _ = cv2.findContours(self.data.astype(np.uint8), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
+ contours, _ = cv2.findContours(self.data.astype(np.uint8), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
if contours is not None:
for cont in contours:
cont[:, :] += (self.origin.col, self.origin.row) # cont with shape (rows, ?, 2)
2. 데이터 세트 준비
데이터 세트 를 다운로드 한 후 압축 을 풀 고 이름 을 바 꿉 니 다. 여기 서 person 으로 이름 을 바 꿉 니 다.
데이터 세트 다운로드, 참고:https://blog.csdn.net/SimleCat/article/details/107021152
내 디 렉 터 리 구 조 는 다음 과 같다.
├── code
├── person
│ ├── ds#
│ │ ├── ann
│ │ └── img
│ └── meta.json
└── person_mask
주: "\ #" 취 [1, 13],code 화해시키다 person_mask 내 가 만 든 거 야.
주의: person 데이터 세트 디 렉 터 리 를 위해 서 이 디 렉 터 리 에 새 디 렉 터 리 를 만 들 수 없습니다. 그렇지 않 으 면 supervisely_lib 로드 Project 시 차 를 잘못 보고 하 다.
생 성 mask
code 디 렉 터 리 아래 새 파일 gen_mask. py, 파일 내용 은 다음 과 같 습 니 다.
import os
import numpy as np
import cv2
import tqdm
import supervisely_lib as sly
from matplotlib import pyplot as plt
def genMask(dataset_root_dir="./person",
output_dir="./person_mask",
label_color=[255,255,255]):
''' Mask
dataset_root_dir:
output_dir: mask
label_color: mask [R, G, B]
'''
project = sly.Project(dataset_root_dir, sly.OpenMode.READ)
#
print(f"Project name : {project.name}")
print(f"Project directory: {project.directory}")
print(f"Total images : {project.total_items}")
print(f"Dataset names : {project.datasets.keys()}")
print()
print(project.meta)
pbar = tqdm.tqdm(total=project.total_items)
for dataset in project:
for item_name in dataset:
#
pbar.update(1)
#
item_paths = dataset.get_item_paths(item_name)
#
ann = sly.Annotation.load_json_file(item_paths.ann_path, project.meta)
# 3 ,
ann_render = np.zeros(ann.img_size + (3,), dtype=np.uint8)
# ( )
ann.draw(ann_render, color=label_color)
# ann_render shape: (h, w, c), pixel: (R, G, B)
# RGB -> BGR, Opencv
ann_render = ann_render[..., ::-1]
# mask ,
save_dir = os.path.join(output_dir, dataset.name)
if not os.path.exists(save_dir):
os.makedirs(save_dir)
# mask
mask_path = os.path.join(save_dir, item_name)
cv2.imwrite(mask_path, ann_render)
pbar.close()
if __name__ == '__main__':
import fire
fire.Fire(genMask, name='gen_mask')
'''
Usage:
# 1.
python code/gen_mask.py
# 2. mask
python gen_mask.py --dataset_root_dir ../person --output_dir ../person_mask
'''
gen_mask. py 사용 방법 은 위 코드 의 마지막 "Usage" 부분 을 참고 하 십시오.
supervisely_lib 더 많은 사용 예시, 참고:https://github.com/supervisely/supervisely/blob/master/help/jupyterlab_scripts/src/tutorials/01_project_structure/project.ipynb
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로컬에서 가져온 jpg 파일 그룹을 npy 형식의 데이터 집합으로 설정안녕하세요. 오늘, 나는 비망록의 방법으로 현지에서 가져온 이미지 그룹의 데이터 집합을 사용하는 제작 방법을 총괄하고 싶다. 또 이번 데이터 집합은 열거했다 옥스포드 대학이 공개한 동물 이미지 데이터 집합최대 37종...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.