目录
前言
一、打开json_to_dataset.py文件
1、打开文件
2、编辑文件
二、相关设置
三、预调试
四、执行
最近在接触一个项目,要用到语义分割,如果大家有什么问题,都可以跟我沟通交流。除了通过博客交流外,欢迎你加入我的QQ群:326866692,一起交流有关于区块链、机器学习、深度学习、计算机视觉有关内容。我现在处于广泛涉猎阶段,希望我们能够一起沟通。下图是我的群二维码:
上一次我们说到了labelme的安装与配置,那个是数据集的第一步,包括了数据集的标注。数据集的搜集因人而异,大家可以参考我当时做YOLO时候的数据集的搜集的代码。
YOLO数据集制作
注:(1)搜集数据集好说,大不了,可以从网站上一张一张去保存,或者找人帮忙一起弄,这个不是难度最大的,所以我就不详细说明了。有具体的问题,可以评论或者加群326866692咨询。
(2)因为deeplab数据集我遇到很多坑,所有我会把步骤分的详细一些,讲解的细致一些,最后会专门做一篇博客做汇总。方便大家学习使用。
找到Anaconda的安装路径,按照如下路径打开该文件。
注意不是双击打开,而是右键使用编辑器打开:
...\Anaconda3\Lib\site-packages\labelme\cli
原文件只能一次转化一个,无法转化某文件夹下所有的json文件,一个一个转化得累死。所以我们需要修改代码:
import argparse
import json
import os
import os.path as osp
import PIL.Image
import yaml
from labelme.logger import logger
from labelme import utils
import warnings
import copy
import numpy as np
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 + '\n')
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终端,输入下面代码进入到下面这个文件夹下:
cd C:\ProgramData\Anaconda3\Scripts
当然这个是根据自己的安装路径的,找到自己的安装路径下的这个文件夹即可。
然后输入下面这条语句:
labelme_json_to_dataset.exe F:\deeplab\VOC2019\SegmentationClassRaw
注:(1)labelme_json_to_dataset.exe 是 Scripts 文件夹下的一个可执行文件;
(2)F:\deeplab\VOC2019\SegmentationClassRaw 是文件夹路径,存放的是json文件。
到这里,所有设置结束。
接下来就是预调试,点击回车就可以了。
为什么是预调试呢?因为可能会出现错误,我们需要不断地解决这些问题,如果配置正确,那只可能出现的问题如下:
解决方案如下:
Python报错:ImportError: DLL load failed: 找不到指定的模块 解决方案详解
解决完所有问题就是执行代码了,再次输入代码,或者点击键盘上的向上箭头的按键,回车执行。如下: