Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CodeCamp #139 [Feature] Support REFUGE dataset. #2420

Closed
wants to merge 71 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
f2b8d2f
doc
BLUE-coconut Nov 30, 2022
67b51b7
[Doc]Translate the 1_config.md and modify a wrong statement in 1_conf…
pofengdenihong Dec 2, 2022
4287fd2
Translate the 1_config.md and modify a wrong statement in 1_config.md
pofengdenihong Dec 2, 2022
5668182
modify part of content
BLUE-coconut Dec 3, 2022
ad470a3
Modify some expressions
pofengdenihong Dec 5, 2022
104a24d
changed parts of content
BLUE-coconut Dec 5, 2022
cc6a175
add code for convert refuge datasets
liuruiqiang Dec 5, 2022
b0e57c6
Apply suggestions from code review
MeowZheng Dec 6, 2022
9750c97
Merge pull request #2371 from pofengdenihong/dev-1.x
MeowZheng Dec 6, 2022
8a3d6cd
[Doc] Add ZN datasets.md in dev-1.x
MengzhangLI Dec 6, 2022
dc2c986
add refuge dataset in datasets
liuruiqiang Dec 6, 2022
3d1f8b7
modified
BLUE-coconut Dec 7, 2022
bdf85d8
add REFUGEdATASET in __init__.py
liuruiqiang Dec 7, 2022
addd38d
fix typo
MengzhangLI Dec 7, 2022
372a6ce
Update docs/zh_cn/user_guides/4_train_test.md
BLUE-coconut Dec 7, 2022
07462c3
delete redundant code
liuruiqiang Dec 7, 2022
dc8aa35
CodeCamp #1562 [Doc] update `overview.md`
tianleiSHI Dec 10, 2022
dddf093
Update overview.md
tianleiSHI Dec 10, 2022
44577d4
add refuge config
liuruiqiang Dec 10, 2022
5a96573
add new change for training
liuruiqiang Dec 11, 2022
ed1195a
fix bugs in config
liuruiqiang Dec 11, 2022
d179b87
fix config
liuruiqiang Dec 11, 2022
5383ea6
add init code for transforms
liuruiqiang Dec 11, 2022
e11c76f
debug
liuruiqiang Dec 12, 2022
7edb141
Merge pull request #2355 from BLUE-coconut/master
MeowZheng Dec 12, 2022
b770884
Add torch1.13 in CI
xiexinch Dec 12, 2022
02030b1
use mim install mm packages
xiexinch Dec 12, 2022
d755707
Update docs/zh_cn/overview.md
tianleiSHI Dec 12, 2022
c2042f3
Update docs/zh_cn/overview.md
tianleiSHI Dec 12, 2022
fdd1b95
install all requirements
xiexinch Dec 12, 2022
7537987
Merge pull request #2397 from tianleiSHI/dev-1.x
MeowZheng Dec 12, 2022
e2e70c3
add flip transforms
liuruiqiang Dec 12, 2022
492313b
install wheel
xiexinch Dec 13, 2022
815b24e
add ref
xiexinch Dec 13, 2022
d7b85aa
Merge pull request #2402 from xiexinch/add-torch1.13-in-ci-1.x
MeowZheng Dec 13, 2022
164fd3f
fix
MengzhangLI Dec 13, 2022
e88489e
fix
MengzhangLI Dec 13, 2022
eeee12e
Merge pull request #2387 from MengzhangLI/zn_datasets_1.x
MeowZheng Dec 13, 2022
f5b4c12
add example project
xiexinch Dec 15, 2022
81da7aa
add ci ignore
xiexinch Dec 15, 2022
69048c2
fix transforms
liuruiqiang Dec 15, 2022
adceec3
fix transforms
liuruiqiang Dec 15, 2022
532ff5b
DOC
tianleiSHI Dec 17, 2022
88945e3
train successfully
liuruiqiang Dec 18, 2022
0d59440
train successfully
liuruiqiang Dec 19, 2022
0631053
check code
liuruiqiang Dec 19, 2022
107e964
add revised code
liuruiqiang Dec 19, 2022
ab690bd
Update docs/zh_cn/get_started.md
tianleiSHI Dec 20, 2022
ca68b00
Merge pull request #2417 from tianleiSHI/get_started_doc
MeowZheng Dec 20, 2022
0529df3
fix confilcts in transforms
liuruiqiang Dec 20, 2022
534b27b
add version limits
xiexinch Dec 20, 2022
8539e22
Merge pull request #2412 from xiexinch/mmseg_projects
MeowZheng Dec 20, 2022
d6bf98c
XMerge branch 'dev-1.x' of github.com:liuruiqiang/mmsegmentation into…
MengzhangLI Dec 20, 2022
b667b60
fix code for converting data again and add notes in dataset_converter…
liuruiqiang Dec 21, 2022
6f90a93
fix code for converting data again and add notes in dataset_converter…
liuruiqiang Dec 21, 2022
2846e5a
Merge branch 'dev-1.x' of github.com:liuruiqiang/mmsegmentation into …
MengzhangLI Dec 23, 2022
df45c11
delete background in REFUGEDataset for training
liuruiqiang Dec 27, 2022
680d5e7
delete unnecessary code
liuruiqiang Dec 27, 2022
f1e74dd
Merge branch 'dev-1.x' of github.com:liuruiqiang/mmsegmentation into …
MengzhangLI Jan 5, 2023
882ceae
resolve conflicts & fix pre-commit problem
MengzhangLI Jan 5, 2023
5af7bd9
resolve conflicts
liuruiqiang Jan 6, 2023
d968cbc
Merge branch 'dev-1.x' of github.com:open-mmlab/mmsegmentation into r…
liuruiqiang Jan 6, 2023
62258f4
resolve conflicts
liuruiqiang Jan 6, 2023
b368bdd
refine refuge pr
MengzhangLI Jan 9, 2023
87c8a8d
add ut
MengzhangLI Jan 9, 2023
385a481
Merge branch 'dev-1.x' of github.com:open-mmlab/mmsegmentation into r…
liuruiqiang Jan 9, 2023
6790131
Merge branch 'dev-1.x' of github.com:liuruiqiang/mmsegmentation into …
liuruiqiang Jan 12, 2023
1cc2209
resolve conflicts
liuruiqiang Jan 12, 2023
45a8e34
update upstream dev-1.x & use smaller dataset example in ut
MengzhangLI Jan 16, 2023
fc584cd
update upstream dev-1.x & use smaller dataset example in ut
MengzhangLI Jan 16, 2023
1c16532
fix doc
MengzhangLI Feb 1, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add code for convert refuge datasets
  • Loading branch information
liuruiqiang committed Dec 5, 2022
commit cc6a1752bb215baa6737cd8144819b577760ce0c
Empty file added prepare_dataset.py
Empty file.
171 changes: 171 additions & 0 deletions tools/dataset_converters/refuge.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
# Copyright (c) OpenMMLab. All rights reserved.
import argparse
import os
from glob import glob
import os.path as osp
import tempfile
import zipfile
import numpy as np
import matplotlib.pyplot as plt

import mmcv
from mmengine.utils import mkdir_or_exist

HRF_LEN = 15
TRAINING_LEN = 5


def parse_args():
parser = argparse.ArgumentParser(
description='Convert HRF dataset to mmsegmentation format')
parser.add_argument('--raw_data_root', help='the root path of raw data')

parser.add_argument('--tmp_dir', help='path of the temporary directory')
parser.add_argument('-o', '--out_dir', help='output path')
args = parser.parse_args()
return args



def extract_img(root: str,cur_dir: str,out_dir: str,mode: str='train',file_type: str='img')-> None:
"""_summary_

Args:
Args:
root (str): root where the extracted data is saved
cur_dir (cur_dir): dir where the zip_file exists
out_dir (str): root dir where the data is saved

mode (str, optional): _description_. Defaults to 'train'.
file_type (str, optional): _description_. Defaults to 'img',else to 'mask'.
"""
print('mode',mode)
zip_file = zipfile.ZipFile(cur_dir)
zip_file.extractall(root)
for cur_dir,dirs,files in os.walk(root):
#filter child dirs and directories with "Illustration" and "MACOSX"
if len(dirs) == 0 and cur_dir.split('\\')[-1].find('Illustration') == -1 \
and cur_dir.find('MACOSX') == -1:

file_names = [file for file in files if file.endswith('.jpg') or file.endswith('.bmp') ]
for filename in sorted(file_names):
img = mmcv.imread(osp.join(cur_dir, filename))

if file_type == 'annotations':
img = img[:,:,0]
img[np.where(img==0)] = 1
img[np.where(img==128)] = 2
img[np.where(img==255)] = 0
mmcv.imwrite(
img,
osp.join(out_dir, file_type, mode,
osp.splitext(filename)[0] + '.png'))

def main():
args = parse_args()

raw_data_root = args.raw_data_root
if args.out_dir is None:
out_dir = osp.join('./data', 'REFUGE')
print('out_dir:',out_dir)
else:
out_dir = args.out_dir

print('Making directories...')
mkdir_or_exist(out_dir)
mkdir_or_exist(osp.join(out_dir, 'images'))
mkdir_or_exist(osp.join(out_dir, 'images', 'training'))
mkdir_or_exist(osp.join(out_dir, 'images', 'validation'))
mkdir_or_exist(osp.join(out_dir, 'images', 'test'))
mkdir_or_exist(osp.join(out_dir, 'annotations'))
mkdir_or_exist(osp.join(out_dir, 'annotations', 'training'))
mkdir_or_exist(osp.join(out_dir, 'annotations', 'validation'))
mkdir_or_exist(osp.join(out_dir, 'annotations', 'test'))

print('Generating images and annotations...')
cur_dir,dirs,files = list(os.walk(raw_data_root))[0]
print("====================")


files = list(filter(lambda x: x.endswith('.zip'),files))
files.remove('Disc_Cup_Masks.zip')
print(files)


with tempfile.TemporaryDirectory(dir=args.tmp_dir) as tmp_dir:
for file in files:
mode = list(filter(lambda x:file.lower().find(x)!= -1,['training','test','validation']))[0]
file_root = osp.join(tmp_dir,file[:-4])
file_type = 'images' if file.find('Anno') == -1 and file.find('GT')== -1 else 'annotations'
# if file_type == 'annotations':
extract_img(file_root,osp.join(cur_dir,file),out_dir,mode,file_type)


print('Done!')




if __name__ == '__main__':
main()
# raw_data_root = 'D:\OpenMMlab\Refuge'
# print(os.listdir('../../'))
# tmp_dir = '../mmsegmentation/data/refuge'
# print(os.listdir(tmp_dir))
# print(glob(tmp_dir))
# # for cur_dir,dirs,files in list(os.walk(raw_data_root))[:1]:
# cur_dir,dirs,files = list(os.walk(raw_data_root))[0]
# print("====================")

# # print('cur:',cur_dir,dirs,files)
# # for cur_dir,dirs,files in list(os.walk(raw_data_root)):
# # child_dir = cur_dir.split('\\')[-1]
# # if child_dir not in ['Glaucoma','Non-Glaucoma']:
# # print(child_dir)
# # print("现在的目录:" + cur_dir)
# # print("该目录下包含的子目录:" + str(dirs))
# # print("该目录下包含的文件:" + str(files))
# files = list(filter(lambda x: x.endswith('.zip'),files))
# print(files)

# # print(cur_dir)
# # print(child_dir)
# with tempfile.TemporaryDirectory(dir=tmp_dir) as tmp_dir:
# for file in files:
# mode = list(filter(lambda x:file.lower().find(x)!= -1,['training','test','validation']))[0]
# file_root = osp.join(tmp_dir,file[:-4])
# file_type = 'img' if file.find('Anno') == -1 and file.find('GT')== -1 else 'annotations'
# if file_type == 'annotations':
# extract_img(file_root,osp.join(cur_dir,file),mode,file_type)
# if file.lower().find('train') != -1:
# train_root = osp.join(tmp_dir,file[:-4])
# file_type = 'img' if file.find('Anno') == -1 and file.find('GT')== -1 else 'mask'
# zip_file = zipfile.ZipFile(osp.join(cur_dir,file))
# zip_file.extractall(train_root)


# if child_dir in ['Glaucoma','Non-Glaucoma']:
# print(child_dir)
# print("现在的目录:" + cur_dir)
# print("该目录下包含的子目录:" + str(dirs))
# print("该目录下包含的文件:" + str(files))
# mmcv.mkdir_or_exist(tmp_dir)
# print(os.listdir(tmp_dir))
# now_path = os.path.join(raw_data_root,'REFUGE-Validation400.zip')
# out_dir = osp.join('data', 'HRF')

# print('Making directories...')
# mkdir_or_exist(out_dir)
# mkdir_or_exist(osp.join(out_dir, 'images'))
# mkdir_or_exist(osp.join(out_dir, 'images', 'training'))
# mkdir_or_exist(osp.join(out_dir, 'images', 'validation'))
# mkdir_or_exist(osp.join(out_dir, 'annotations'))
# mkdir_or_exist(osp.join(out_dir, 'annotations', 'training'))
# mkdir_or_exist(osp.join(out_dir, 'annotations', 'validation'))

# with tempfile.TemporaryDirectory(dir=tmp_dir) as tmp_dir:
# print(tmp_dir)
# zip_file = zipfile.ZipFile(now_path)
# zip_file.extractall(tmp_dir)
# for filename in sorted(os.listdir(tmp_dir)):
# img = mmcv.imread(osp.join(tmp_dir, filename))