From 643b84ad63e7c6e442518c9a9a9a247ecc67bcbf Mon Sep 17 00:00:00 2001 From: akagawaryotaro Date: Fri, 24 Mar 2023 14:41:50 +0900 Subject: [PATCH 1/2] :sparkles: add format_convert.py --- script/script/format_convert.py | 60 +++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 script/script/format_convert.py diff --git a/script/script/format_convert.py b/script/script/format_convert.py new file mode 100644 index 0000000..3dc8de7 --- /dev/null +++ b/script/script/format_convert.py @@ -0,0 +1,60 @@ +import json + +TARGET_FILES = ['/Users/ryotaroakagawa/PearOpenDataProject_Ver2/script/data/train_annotations_multi.json', + '/Users/ryotaroakagawa/PearOpenDataProject_Ver2/script/data/validation_annotations_multi.json'] +ANNOTATION_FILE = '/Users/ryotaroakagawa/PearOpenDataProject_Ver2/script/data/annotation.json' + + +def main(): + json_data = {"images": []} + for file in TARGET_FILES: + with open(file) as f: + multi_data = json.load(f) + for image in multi_data["images"]: + json_data['images'].append(image) + + with open(ANNOTATION_FILE) as f: + data = json.load(f) + + # print(data) + + pear_list = [] + id_list1 = [] + id_list2 = [] + + for pears in data['pears']: + anno_id = pears['id'] + str_anno_id = str(anno_id) + if not str_anno_id in id_list1: + id_list1.append(str_anno_id) + pear_list.append(pears) + + for jsn_image in json_data['images']: + filename = jsn_image['file_name'] + filename_split = filename.strip().split('_') + + # pear_id のフォーマットが year . ripe . image_id + pear_id = multi_data['info']['year'] + '00' + filename_split[0].zfill(3) + + if not pear_id in id_list1: + id_list2.append(pear_id) + + pear_list.append( + {'id': int(pear_id), 'year': multi_data['info']['year'], 'shape_type_id': 10, + 'grading_id_deterioration': 0, + 'grading_id': 0, 'images': [], 'comment': "等級判定の実施なし"}) + + if id_list2 == []: + pass + else: + pear_list[id_list2.index(pear_id)]['images'].append(jsn_image) + + pear_dict = {'pears': pear_list} + + with open('/Users/ryotaroakagawa/PearOpenDataProject_Ver2/script/data/annotation_original.json', + 'w') as f: + json.dump(pear_dict, f, indent=4, ensure_ascii=False) + + +if __name__ == '__main__': + main() From 2e6ee0bd733e11e2adc9b00993fbbfcadf7d2f86 Mon Sep 17 00:00:00 2001 From: akagawaryotaro Date: Fri, 31 Mar 2023 03:59:56 +0900 Subject: [PATCH 2/2] :sparkles: add format_coco.py --- script/script/format_coco.py | 40 ++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 script/script/format_coco.py diff --git a/script/script/format_coco.py b/script/script/format_coco.py new file mode 100644 index 0000000..e52ea12 --- /dev/null +++ b/script/script/format_coco.py @@ -0,0 +1,40 @@ +import json + +ANNOTATION_FILE = '/Users/ryotaroakagawa/PearOpenDataProject_Ver2/script/data/annotation.json' + + +def main(): + with open(ANNOTATION_FILE) as f: + data = json.load(f) + + img_list = [] + anno_list = [] + pear_id_list = [] + + for pears in data['pears']: + img_id = pears['id'] + images = pears['images'] + str_img_id = str(img_id) + if not str_img_id in pear_id_list: + pear_id_list.append(str_img_id) + img_list.append(images) + + new_img_list = [item for sublist in img_list for item in sublist] + + id_list = [item['id'] for item in new_img_list] + + for annotations in data['annotations']: + anno_id = annotations['image_id'] + + if anno_id in id_list: + anno_list.append(annotations) + + coco_dict = {'images': new_img_list, 'annotations': anno_list, 'categories': data['categories']} + + with open('/Users/ryotaroakagawa/PearOpenDataProject_Ver2/script/data/annotation_coco.json', + 'w') as f: + json.dump(coco_dict, f, indent=4, ensure_ascii=False) + + +if __name__ == '__main__': + main()