분할 데이터 세트 만 들 기
5987 단어 딥 러 닝
(1) labelme 를 사용 하여 데 이 터 를 표시 하고 해당 그림 의 json 형식 을 생 성 합 니 다.
(2) json 파일 을 단일 채널 로 대량으로 전환 하 는 png 파일 은 생 성 된 폴 더 에 따라 의미 그림 을 생 성 합 니 다.
(3) 의미 그림 을 그 레이스 케 일 로 전환한다.
1. labelme 로 표 시 된 샘플 을 사용 하여 그림 과 json 형식의 샘플 이름 을 대량으로 바 꿉 니 다.
import os
path = "D:\\tu"
filelist = os.listdir(path) # ( )
i=1
for file in filelist: #
if file.endswith('.jpg'):
Olddir=os.path.join(path,file) #
if os.path.isdir(Olddir): #
continue
filename=os.path.splitext(file)[0] #
filetype=os.path.splitext(file)[1] #
Newdir=os.path.join(path,str(i).zfill(6)+filetype) # zfill 0
os.rename(Olddir,Newdir)#
if file.endswith('.json'):
Olddir=os.path.join(path,file) #
if os.path.isdir(Olddir): #
continue
filename=os.path.splitext(file)[0] #
filetype=os.path.splitext(file)[1] #
Newdir=os.path.join(path,str(i).zfill(6)+filetype) # zfill 0
os.rename(Olddir,Newdir)#
i = i + 1
: , copy
d:\tupian\*.json d:\yangben 2. json 파일 을 단일 채널 로 일괄 변환 하 는 png 파일
2.1 제 이 슨 파일 의 대량 전환
C: \ \ Users \ ss \ Anaconda 3 \ \ envs \ labelme \ Lib \ \ site - packages \ labelme \ \ cli 아래 jsonto_dataset. py 파일 의 코드 교 체 는 다음 과 같 습 니 다.
import json
import os
import os.path as osp
import warnings
import copy
import numpy as np
import PIL.Image
import yaml
from labelme import utils
def main():
parser = argparse.ArgumentParser()
parser.add_argument('json_file')
parser.add_argument('-o', '--out', default=None)
args = parser.parse_args()
json_file = args.json_file
list = os.listdir(json_file)
for i in range(0, len(list)):
path = os.path.join(json_file, list[i])
filename = list[i][:-5] # .json
if os.path.isfile(path):
data = json.load(open(path))
img = utils.image.img_b64_to_arr(data['imageData'])
lbl, lbl_names = utils.shape.labelme_shapes_to_label(img.shape, data['shapes']) # labelme_shapes_to_label
captions = ['%d: %s' % (l, name) for l, name in enumerate(lbl_names)]
lbl_viz = utils.draw.draw_label(lbl, img, captions)
out_dir = osp.basename(list[i]).replace('.', '_')
out_dir = osp.join(osp.dirname(list[i]), out_dir)
if not osp.exists(out_dir):
os.mkdir(out_dir)
PIL.Image.fromarray(img).save(osp.join(out_dir, '{}.png'.format(filename)))
PIL.Image.fromarray(lbl).save(osp.join(out_dir, '{}_gt.png'.format(filename)))
PIL.Image.fromarray(lbl_viz).save(osp.join(out_dir, '{}_viz.png'.format(filename)))
with open(osp.join(out_dir, 'label_names.txt'), 'w') as f:
for lbl_name in lbl_names:
f.write(lbl_name + '
')
warnings.warn('info.yaml is being replaced by label_names.txt')
info = dict(label_names=lbl_names)
with open(osp.join(out_dir, 'info.yaml'), 'w') as f:
yaml.safe_dump(info, f, default_flow_style=False)
print('Saved to: %s' % out_dir)
if __name__ == '__main__':
main()
cmd 환경 을 열 고 activate labelme 활성화 labelme 를 입력 하 십시오.
labelme 입력json_to_dataset D:/yangben json 파일 을 대량으로 변환 합 니 다. 그 중에서 D: / yangben 은 json 이 있 는 폴 더 이 고 전 환 된 파일 은 c / usrs / ss 에 저 장 됩 니 다.
2.2 폴 더 에서 label. png 파일 대량 가 져 오기
실행 후 결 과 는 그림 에 해당 하 는 폴 더 를 생 성 합 니 다. 그 안에 네 개의 파일 이 포함 되 어 있 습 니 다: img, info, label, labelviz。labelme_json_dataset 에서 생 성 된 레이 블 이미지 파일 은 json 마다 하나의 폴 더 에 대응 하 는 것 으로 다음 코드 를 써 서 label. png 파일 을 대량으로 가 져 옵 니 다.
GTfrom_PATH 를
json
로 설정 하면 된다. import os
import random
import shutil
import re
GT_from_PATH = "D:/jsons"
GT_to_PATH = "./gts"
def copy_file(from_dir, to_dir, Name_list):
if not os.path.isdir(to_dir):
os.mkdir(to_dir)
for name in Name_list:
try:
# print(name)
if not os.path.isfile(os.path.join(from_dir, name)):
print("{} is not existed".format(os.path.join(from_dir, name)))
shutil.copy(os.path.join(from_dir, name), os.path.join(to_dir, name))
# print("{} has copied to {}".format(os.path.join(from_dir, name), os.path.join(to_dir, name)))
except:
# print("failed to move {}".format(from_dir + name))
pass
# shutil.copyfile(fileDir+name, tarDir+name)
print("{} has copied to {}".format(from_dir, to_dir))
if __name__ == '__main__':
filepath_list = os.listdir(GT_from_PATH)
# print(name_list)
for i, file_path in enumerate(filepath_list):
gt_path = "{}/{}_gt.png".format(os.path.join(GT_from_PATH, filepath_list[i]), file_path[:-5])
print("copy {} to ...".format(gt_path))
gt_name = ["{}_gt.png".format(file_path[:-5])]
gt_file_path = os.path.join(GT_from_PATH, file_path)
copy_file(gt_file_path, GT_to_PATH, gt_name)
2.3 24 비트 의미 그림 생 성
import os
import PIL.Image
import numpy as np
from skimage import io, color
path = "D:\\gts"
filelist = os.listdir(path)
i = 1
for file in filelist:
filename = os.path.join(path, 'label'+str(i)+'.png')
img = PIL.Image.open(filename)#
img = np.array(img)
img24 = color.label2rgb(img, bg_label=0, bg_color=(0, 0, 0))
#img8 = PIL.Image.fromarray(np.uint8(img24))
dstName = os.path.join("D:\\transform", 'label' + str(i) + '.png')
io.imsave(dstName, img8)
i = i+1
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
caffe 데이터 구조 깊이 학습 (4) - blob 데이터 구조 blob. hpp 파일 상세 해석이 줄 은 shape 벡터 를 통 해 Blob 의 모양 을 바 꾸 는 또 다른 변형 함 수 를 정의 합 니 다. 이 줄 은 Blob 모양 의 함 수 를 읽 고 구성원 변수 shape 로 돌아 가 는 것 을 정의 합 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.