[Fix] Replace mmcv.fileio with mmengine (#1292)

pull/1293/head
Tong Gao 2022-08-19 16:53:14 +08:00 committed by GitHub
parent 0d9b40706c
commit c7a4298c32
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 65 additions and 46 deletions

View File

@ -5,6 +5,7 @@ import warnings
from typing import Optional
import mmcv
import mmengine
import numpy as np
from mmcv.transforms import BaseTransform
from mmcv.transforms import LoadAnnotations as MMCV_LoadAnnotations
@ -38,7 +39,7 @@ class LoadImageFromFile(MMCV_LoadImageFromFile):
See :func:``mmcv.imfrombytes`` for details.
Defaults to 'cv2'.
file_client_args (dict): Arguments to instantiate a FileClient.
See :class:`mmcv.fileio.FileClient` for details.
See :class:`mmengine.fileio.FileClient` for details.
Defaults to ``dict(backend='disk')``.
ignore_empty (bool): Whether to allow loading empty image or file path
not existent. Defaults to False.
@ -59,7 +60,7 @@ class LoadImageFromFile(MMCV_LoadImageFromFile):
self.color_type = color_type
self.imdecode_backend = imdecode_backend
self.file_client_args = file_client_args.copy()
self.file_client = mmcv.FileClient(**self.file_client_args)
self.file_client = mmengine.FileClient(**self.file_client_args)
self.min_size = min_size
def transform(self, results: dict) -> Optional[dict]:
@ -473,7 +474,7 @@ class LoadImageFromLMDB(BaseTransform):
See :func:``mmcv.imfrombytes`` for details.
Defaults to 'cv2'.
file_client_args (dict): Arguments to instantiate a FileClient.
See :class:`mmcv.fileio.FileClient` for details.
See :class:`mmengine.fileio.FileClient` for details.
Defaults to ``dict(backend='lmdb', db_path='')``.
ignore_empty (bool): Whether to allow loading empty image or file path
not existent. Defaults to False.
@ -490,7 +491,7 @@ class LoadImageFromLMDB(BaseTransform):
self.color_type = color_type
self.imdecode_backend = imdecode_backend
self.file_client_args = file_client_args.copy()
self.file_client = mmcv.FileClient(**self.file_client_args)
self.file_client = mmengine.FileClient(**self.file_client_args)
def transform(self, results: dict) -> Optional[dict]:
"""Functions to load image from LMDB file.

View File

@ -3,6 +3,7 @@ import os.path as osp
from typing import Sequence, Union
import mmcv
import mmengine
from mmengine.hooks import Hook
from mmengine.runner import Runner
from mmengine.visualization import Visualizer
@ -26,7 +27,7 @@ class VisualizationHook(Hook):
wait_time (float): The interval of show in seconds. Defaults
to 0.
file_client_args (dict): Arguments to instantiate a FileClient.
See :class:`mmcv.fileio.FileClient` for details.
See :class:`mmengine.fileio.FileClient` for details.
Defaults to ``dict(backend='disk')``.
"""
@ -72,7 +73,7 @@ class VisualizationHook(Hook):
return
if self.file_client is None:
self.file_client = mmcv.FileClient(**self.file_client_args)
self.file_client = mmengine.FileClient(**self.file_client_args)
# There is no guarantee that the same batch of images
# is visualized for each evaluation.
@ -113,7 +114,7 @@ class VisualizationHook(Hook):
return
if self.file_client is None:
self.file_client = mmcv.FileClient(**self.file_client_args)
self.file_client = mmengine.FileClient(**self.file_client_args)
for output in outputs:
img_path = output.img_path

View File

@ -2,7 +2,7 @@
import warnings
from typing import Dict, Sequence
import mmcv
import mmengine
from mmocr.utils import is_type_list
@ -122,7 +122,7 @@ def dump_ocr_data(image_infos: Sequence[Dict], out_json_name: str,
out_json['data_list'].append(single_info)
mmcv.dump(out_json, out_json_name)
mmengine.dump(out_json, out_json_name)
return out_json

View File

@ -7,6 +7,7 @@ import warnings
import cv2
import mmcv
import mmengine
import numpy as np
import torch
from matplotlib import pyplot as plt
@ -884,6 +885,6 @@ def imshow_edge(img,
'edges': result['edges'].detach().cpu(),
'metas': result['img_metas'][0]
}
mmcv.dump(res_dic, f'{out_file}_res.pkl')
mmengine.dump(res_dic, f'{out_file}_res.pkl')
return vis_img

View File

@ -3,7 +3,7 @@ import os.path as osp
import tempfile
from unittest import TestCase
import mmcv
import mmengine
from mmocr.datasets.icdar_dataset import IcdarDataset
@ -116,7 +116,7 @@ class TestIcdarDataset(TestCase):
categories
}
self.metainfo = dict(CLASSES=('text'))
mmcv.dump(fake_json, json_name)
mmengine.dump(fake_json, json_name)
def test_icdar_dataset(self):
tmp_dir = tempfile.TemporaryDirectory()

View File

@ -3,7 +3,7 @@ import os.path as osp
import tempfile
from unittest import TestCase
import mmcv
import mmengine
from mmocr.utils.data_converter_utils import (dump_ocr_data,
recog_anno_to_imginfo)
@ -127,15 +127,15 @@ class TestDataConverterUtils(TestCase):
self._create_dummy_data()
dump_ocr_data(input_data, output_path, 'textdet')
result = mmcv.load(output_path)
result = mmengine.load(output_path)
self.assertDictEqual(result, det_target)
dump_ocr_data(input_data, output_path, 'textspotter')
result = mmcv.load(output_path)
result = mmengine.load(output_path)
self.assertDictEqual(result, spotter_target)
dump_ocr_data(input_data, output_path, 'textrecog')
result = mmcv.load(output_path)
result = mmengine.load(output_path)
self.assertDictEqual(result, recog_target)
def test_recog_anno_to_imginfo(self):

View File

@ -4,6 +4,7 @@ import os.path as osp
from functools import partial
import mmcv
import mmengine
import numpy as np
from mmocr.utils import bezier_to_polygon, sort_points
@ -104,14 +105,14 @@ def main():
out_dir = args.out_dir if args.out_dir else root_path
mmcv.mkdir_or_exist(out_dir)
anns = mmcv.load(osp.join(root_path, 'train1.json'))
anns = mmengine.load(osp.join(root_path, 'train1.json'))
data1 = convert_annotations(anns, 'syntext_word_eng', args.num_sample,
args.nproc)
# Get the maximum image id from data1
start_img_id = max(data1['images'], key=lambda x: x['id'])['id'] + 1
start_ann_id = max(data1['annotations'], key=lambda x: x['id'])['id'] + 1
anns = mmcv.load(osp.join(root_path, 'train2.json'))
anns = mmengine.load(osp.join(root_path, 'train2.json'))
data2 = convert_annotations(
anns,
'emcs_imgs',
@ -122,7 +123,7 @@ def main():
data1['images'] += data2['images']
data1['annotations'] += data2['annotations']
mmcv.dump(data1, osp.join(out_dir, 'instances_training.json'))
mmengine.dump(data1, osp.join(out_dir, 'instances_training.json'))
if __name__ == '__main__':

View File

@ -7,6 +7,7 @@ import warnings
from functools import partial
import mmcv
import mmengine
from mmocr.utils import list_to_file
from mmocr.utils.img_utils import crop_img, warp_img
@ -21,7 +22,7 @@ def parse_labelme_json(json_file,
warp_flag=False):
invalid_res = [[], [], []]
json_obj = mmcv.load(json_file)
json_obj = mmengine.load(json_file)
img_file = osp.basename(json_obj['imagePath'])
img_full_path = osp.join(img_dir, img_file)

View File

@ -4,6 +4,7 @@ import math
import os.path as osp
import mmcv
import mmengine
from mmocr.utils import convert_annotations
@ -61,7 +62,7 @@ def collect_art_info(root_path, split, ratio, print_every=1000):
raise Exception(
f'{annotation_path} not exists, please check and try again.')
annotation = mmcv.load(annotation_path)
annotation = mmengine.load(annotation_path)
img_prefixes = annotation.keys()
trn_files, val_files = [], []

View File

@ -2,13 +2,13 @@
import argparse
import json
import mmcv
import mmengine
from mmocr.utils import list_to_file
def parse_coco_json(in_path):
json_obj = mmcv.load(in_path)
json_obj = mmengine.load(in_path)
image_infos = json_obj['images']
annotations = json_obj['annotations']
imgid2imgname = {}

View File

@ -3,7 +3,7 @@ import argparse
import math
import os.path as osp
import mmcv
import mmengine
from mmocr.utils import dump_ocr_data
@ -66,7 +66,7 @@ def collect_cocotext_info(root_path, split, print_every=1000):
raise Exception(
f'{annotation_path} not exists, please check and try again.')
annotation = mmcv.load(annotation_path)
annotation = mmengine.load(annotation_path)
img_infos = []
for i, img_info in enumerate(annotation['imgs'].values()):

View File

@ -4,7 +4,7 @@ from collections import defaultdict
from copy import deepcopy
from typing import Dict, List
import mmcv
import mmengine
from mmocr.utils import dump_ocr_data
@ -19,7 +19,7 @@ def parse_coco_json(in_path: str) -> List[Dict]:
list[dict]: List of image information dicts. To be used by
dump_ocr_data().
"""
json_obj = mmcv.load(in_path)
json_obj = mmengine.load(in_path)
image_infos = json_obj['images']
annotations = json_obj['annotations']
imgid2annos = defaultdict(list)

View File

@ -5,6 +5,7 @@ import os
import os.path as osp
import mmcv
import mmengine
from mmocr.utils import dump_ocr_data
@ -100,7 +101,7 @@ def load_json_info(gt_file, img_info):
img_info (dict): The dict of the img and annotation information
"""
annotation = mmcv.load(gt_file)
annotation = mmengine.load(gt_file)
anno_info = []
for form in annotation['form']:
for ann in form['words']:

View File

@ -4,6 +4,7 @@ import math
import os.path as osp
import mmcv
import mmengine
import numpy as np
from mmocr.utils import dump_ocr_data
@ -25,7 +26,7 @@ def collect_imgur_info(root_path, annotation_filename, print_every=1000):
raise Exception(
f'{annotation_path} not exists, please check and try again.')
annotation = mmcv.load(annotation_path)
annotation = mmengine.load(annotation_path)
images = annotation['index_to_ann_map'].keys()
img_infos = []
for i, img_name in enumerate(images):

View File

@ -4,6 +4,7 @@ import math
import os.path as osp
import mmcv
import mmengine
from mmocr.utils import dump_ocr_data
@ -50,7 +51,7 @@ def collect_lsvt_info(root_path, split, ratio, print_every=1000):
raise Exception(
f'{annotation_path} not exists, please check and try again.')
annotation = mmcv.load(annotation_path)
annotation = mmengine.load(annotation_path)
img_prefixes = annotation.keys()
trn_files, val_files = [], []

View File

@ -3,6 +3,7 @@ import argparse
import os.path as osp
import mmcv
import mmengine
from mmocr.utils import dump_ocr_data
@ -127,7 +128,7 @@ def load_json_info(gt_file, img_info):
assert isinstance(gt_file, str)
assert isinstance(img_info, dict)
annotation = mmcv.load(gt_file)
annotation = mmengine.load(gt_file)
anno_info = []
# 'textBBs' contains the printed texts of the table while 'fieldBBs'
@ -175,7 +176,7 @@ def parse_args():
def main():
args = parse_args()
root_path = args.root_path
split_info = mmcv.load(
split_info = mmengine.load(
osp.join(root_path, 'annotations', 'train_valid_test_split.json'))
split_info['training'] = split_info.pop('train')
split_info['val'] = split_info.pop('valid')

View File

@ -5,6 +5,7 @@ import os
import os.path as osp
import mmcv
import mmengine
from mmocr.utils import dump_ocr_data
@ -142,7 +143,7 @@ def load_json_info(gt_file, img_info):
img_info (dict): The dict of the img and annotation information
"""
annotation = mmcv.load(gt_file)
annotation = mmengine.load(gt_file)
anno_info = []
for line in annotation['lines']:
segmentation = line['points']

View File

@ -3,7 +3,7 @@ import argparse
import math
import os.path as osp
import mmcv
import mmengine
from mmocr.utils import dump_ocr_data
@ -23,7 +23,7 @@ def collect_textocr_info(root_path, annotation_filename, print_every=1000):
raise Exception(
f'{annotation_path} not exists, please check and try again.')
annotation = mmcv.load(annotation_path)
annotation = mmengine.load(annotation_path)
# img_idx = img_start_idx
img_infos = []

View File

@ -4,7 +4,7 @@ import json
import math
import os.path as osp
import mmcv
import mmengine
from mmocr.utils.fileio import list_to_file
@ -63,7 +63,7 @@ def convert_art(root_path, split, ratio, format):
raise Exception(
f'{annotation_path} not exists, please check and try again.')
annotation = mmcv.load(annotation_path)
annotation = mmengine.load(annotation_path)
# outputs
dst_label_file = osp.join(root_path, f'{split}_label.{format}')

View File

@ -6,6 +6,7 @@ import os.path as osp
from functools import partial
import mmcv
import mmengine
from mmocr.utils.fileio import list_to_file
@ -131,7 +132,7 @@ def convert_cocotext(root_path,
raise Exception(
f'{annotation_path} not exists, please check and try again.')
annotation = mmcv.load(annotation_path)
annotation = mmengine.load(annotation_path)
# outputs
dst_label_file = osp.join(root_path, f'{split}_label.{format}')
dst_image_root = osp.join(root_path, 'crops', split)

View File

@ -6,6 +6,7 @@ import os
import os.path as osp
import mmcv
import mmengine
from mmocr.utils.fileio import list_to_file
from mmocr.utils.img_utils import crop_img
@ -102,7 +103,7 @@ def load_json_info(gt_file, img_info):
img_info (dict): The dict of the img and annotation information
"""
annotation = mmcv.load(gt_file)
annotation = mmengine.load(gt_file)
anno_info = []
for form in annotation['form']:
for ann in form['words']:

View File

@ -6,6 +6,7 @@ import os
import os.path as osp
import mmcv
import mmengine
import numpy as np
from mmocr.utils.fileio import list_to_file
@ -33,7 +34,7 @@ def collect_imgur_info(root_path, annotation_filename, print_every=1000):
raise Exception(
f'{annotation_path} not exists, please check and try again.')
annotation = mmcv.load(annotation_path)
annotation = mmengine.load(annotation_path)
images = annotation['index_to_ann_map'].keys()
img_infos = []
for i, img_name in enumerate(images):

View File

@ -6,6 +6,7 @@ import os.path as osp
from functools import partial
import mmcv
import mmengine
from mmocr.utils.fileio import list_to_file
@ -114,7 +115,7 @@ def convert_lsvt(root_path,
raise Exception(
f'{annotation_path} not exists, please check and try again.')
annotation = mmcv.load(annotation_path)
annotation = mmengine.load(annotation_path)
# outputs
dst_label_file = osp.join(root_path, f'{split}_label.{format}')
dst_image_root = osp.join(root_path, 'crops', split)

View File

@ -4,6 +4,7 @@ import json
import os.path as osp
import mmcv
import mmengine
import numpy as np
from mmocr.utils.fileio import list_to_file
@ -138,7 +139,7 @@ def load_json_info(gt_file, img_info):
assert isinstance(gt_file, str)
assert isinstance(img_info, dict)
annotation = mmcv.load(gt_file)
annotation = mmengine.load(gt_file)
anno_info = []
# 'textBBs' contains the printed texts of the table while 'fieldBBs'
@ -267,7 +268,7 @@ def parse_args():
def main():
args = parse_args()
root_path = args.root_path
split_info = mmcv.load(
split_info = mmengine.load(
osp.join(root_path, 'annotations', 'train_valid_test_split.json'))
split_info['training'] = split_info.pop('train')
split_info['val'] = split_info.pop('valid')

View File

@ -6,6 +6,7 @@ from argparse import ArgumentParser
from functools import partial
import mmcv
import mmengine
from PIL import Image
from mmocr.utils.fileio import list_to_file
@ -67,7 +68,7 @@ def convert_openimages(root_path,
dst_image_root = osp.join(root_path, dst_image_path)
os.makedirs(dst_image_root, exist_ok=True)
annotation = mmcv.load(annotation_path)
annotation = mmengine.load(annotation_path)
process_img_with_path = partial(
process_img,

View File

@ -6,6 +6,7 @@ import os
import os.path as osp
import mmcv
import mmengine
from mmocr.utils.fileio import list_to_file
from mmocr.utils.img_utils import crop_img
@ -144,7 +145,7 @@ def load_json_info(gt_file, img_info):
img_info (dict): The dict of the img and annotation information
"""
annotation = mmcv.load(gt_file)
annotation = mmengine.load(gt_file)
anno_info = []
for line in annotation['lines']:
if line['ignore'] == 1:

View File

@ -6,6 +6,7 @@ import os.path as osp
from functools import partial
import mmcv
import mmengine
from mmocr.utils.fileio import list_to_file
@ -63,7 +64,7 @@ def convert_textocr(root_path,
dst_image_root = osp.join(root_path, dst_image_path)
os.makedirs(dst_image_root, exist_ok=True)
annotation = mmcv.load(annotation_path)
annotation = mmengine.load(annotation_path)
process_img_with_path = partial(
process_img,