Commit 46ac85ad authored by xmy0916's avatar xmy0916
Browse files

fix some problems

parent 141d50d6
import yaml import yaml
from argparse import ArgumentParser, RawDescriptionHelpFormatter from argparse import ArgumentParser, RawDescriptionHelpFormatter
import os.path
support_list = { support_list = {
'it':'italian', 'xi':'spanish', 'pu':'portuguese', 'ru':'russian', 'ar':'arabic', 'it':'italian', 'xi':'spanish', 'pu':'portuguese', 'ru':'russian', 'ar':'arabic',
...@@ -8,6 +9,12 @@ support_list = { ...@@ -8,6 +9,12 @@ support_list = {
'te':'telugu', 'ka':'kannada', 'chinese_cht':'chinese tradition','hi':'hindi','mr':'marathi', 'te':'telugu', 'ka':'kannada', 'chinese_cht':'chinese tradition','hi':'hindi','mr':'marathi',
'ne':'nepali', 'ne':'nepali',
} }
assert(
os.path.isfile("./rec_multi_language_lite_train.yml")
),"Loss basic configuration file rec_multi_language_lite_train.yml.\
You can download it from \
https://github.com/PaddlePaddle/PaddleOCR/tree/dygraph/configs/rec/multi_language/"
global_config = yaml.load(open("./rec_multi_language_lite_train.yml", 'rb'), Loader=yaml.Loader) global_config = yaml.load(open("./rec_multi_language_lite_train.yml", 'rb'), Loader=yaml.Loader)
class ArgsParser(ArgumentParser): class ArgsParser(ArgumentParser):
...@@ -17,18 +24,20 @@ class ArgsParser(ArgumentParser): ...@@ -17,18 +24,20 @@ class ArgsParser(ArgumentParser):
self.add_argument( self.add_argument(
"-o", "--opt", nargs='+', help="set configuration options") "-o", "--opt", nargs='+', help="set configuration options")
self.add_argument( self.add_argument(
"-t", "--type", nargs='+', help="set language type, support {}".format(support_list)) "-l", "--language", nargs='+', help="set language type, support {}".format(support_list))
self.add_argument( self.add_argument(
"--train",type=str,help="you can use this command to change the default path") "--train",type=str,help="you can use this command to change the train dataset default path")
self.add_argument( self.add_argument(
"--val",type=str,help="you can use this command to change the default path") "--val",type=str,help="you can use this command to change the eval dataset default path")
self.add_argument( self.add_argument(
"--dict",type=str,help="you can use this command to change the default path") "--dict",type=str,help="you can use this command to change the dictionary default path")
self.add_argument(
"--dataset_root_path",type=str,help="you can use this command to change the dataset default root path")
def parse_args(self, argv=None): def parse_args(self, argv=None):
args = super(ArgsParser, self).parse_args(argv) args = super(ArgsParser, self).parse_args(argv)
args.opt = self._parse_opt(args.opt) args.opt = self._parse_opt(args.opt)
args.type,args.config = self._set_language(args.type) args.language = self._set_language(args.language)
return args return args
def _parse_opt(self, opts): def _parse_opt(self, opts):
...@@ -42,33 +51,26 @@ class ArgsParser(ArgumentParser): ...@@ -42,33 +51,26 @@ class ArgsParser(ArgumentParser):
return config return config
def _set_language(self, type): def _set_language(self, type):
config={
'Global':{'character_dict_path':None,'save_model_dir':None},
'Train':{'dataset':{'label_file_list':None}},
'Eval': {'dataset': {'label_file_list': None}},
}
assert(type),"please use -t or --type to choose language type" assert(type),"please use -t or --type to choose language type"
assert( assert(
type[0] in support_list.keys() type[0] in support_list.keys()
),"the sub_keys(-t or --type) can only be one of support list: \n{},\nbut get: {}, " \ ),"the sub_keys(-t or --type) can only be one of support list: \n{},\nbut get: {}, " \
"please check your running command".format(support_list, type) "please check your running command".format(support_list, type)
config['Global']['character_dict_path'] = 'ppocr/utils/dict/{}_dict.txt'.format(type[0]) global_config['Global']['character_dict_path'] = 'ppocr/utils/dict/{}_dict.txt'.format(type[0])
config['Global']['save_model_dir'] = './output/rec_{}_lite'.format(type[0]) global_config['Global']['save_model_dir'] = './output/rec_{}_lite'.format(type[0])
config['Train']['dataset']['label_file_list'] = ["./train_data/{}_train.txt".format(type[0])] global_config['Train']['dataset']['label_file_list'] = ["train_data/{}_train.txt".format(type[0])]
config['Eval']['dataset']['label_file_list'] = ["./train_data/{}_val.txt".format(type[0])] global_config['Eval']['dataset']['label_file_list'] = ["train_data/{}_val.txt".format(type[0])]
return type[0],config return type[0]
def merge_config(global_config,new_config): def merge_config(config):
""" """
Merge config into global config. Merge config into global config.
Args: Args:
global_config: Source config config (dict): Config to be merged.
new_config (dict): Config to be merged.
Returns: global config Returns: global config
""" """
for key, value in new_config.items(): for key, value in config.items():
if "." not in key: if "." not in key:
if isinstance(value, dict) and key in global_config: if isinstance(value, dict) and key in global_config:
global_config[key].update(value) global_config[key].update(value)
...@@ -78,8 +80,7 @@ def merge_config(global_config,new_config): ...@@ -78,8 +80,7 @@ def merge_config(global_config,new_config):
sub_keys = key.split('.') sub_keys = key.split('.')
assert ( assert (
sub_keys[0] in global_config sub_keys[0] in global_config
), "the sub_keys can only be one of global_config: {}, but get: {}, " \ ), "the sub_keys can only be one of global_config: {}, but get: {}, please check your running command".format(
"please check your running command".format(
global_config.keys(), sub_keys[0]) global_config.keys(), sub_keys[0])
cur = global_config[sub_keys[0]] cur = global_config[sub_keys[0]]
for idx, sub_key in enumerate(sub_keys[1:]): for idx, sub_key in enumerate(sub_keys[1:]):
...@@ -87,22 +88,27 @@ def merge_config(global_config,new_config): ...@@ -87,22 +88,27 @@ def merge_config(global_config,new_config):
cur[sub_key] = value cur[sub_key] = value
else: else:
cur = cur[sub_key] cur = cur[sub_key]
return global_config
if __name__ == '__main__': if __name__ == '__main__':
FLAGS = ArgsParser().parse_args() FLAGS = ArgsParser().parse_args()
global_config = merge_config(global_config,FLAGS.opt) merge_config(FLAGS.opt)
global_config = merge_config(global_config, FLAGS.config)
if FLAGS.train: if FLAGS.train:
global_config['Train']['dataset']['label_file_list'] = [FLAGS.train] global_config['Train']['dataset']['label_file_list'] = [FLAGS.train]
if FLAGS.val: if FLAGS.val:
global_config['Eval']['dataset']['label_file_list'] = [FLAGS.val] global_config['Eval']['dataset']['label_file_list'] = [FLAGS.val]
if FLAGS.dict: if FLAGS.dict:
global_config['Global']['character_dict_path'] = FLAGS.dict global_config['Global']['character_dict_path'] = FLAGS.dict
if FLAGS.dataset_root_path:
global_config['Eval']['dataset']['data_dir'] = FLAGS.dataset_root_path
global_config['Train']['dataset']['data_dir'] = FLAGS.dataset_root_path
print("train list path set to:{}".format(global_config['Train']['dataset']['label_file_list'][0])) save_file_path = 'rec_{}_lite_train.yml'.format(FLAGS.language)
print("Eval list path set to :{}".format(global_config['Eval']['dataset']['label_file_list'][0])) if os.path.isfile(save_file_path):
print("dict path set to :{}".format(global_config['Global']['character_dict_path'])) os.remove(save_file_path)
with open('rec_{}_lite_train.yml'.format(FLAGS.type), 'w') as f: with open(save_file_path, 'w') as f:
yaml.dump(dict(global_config), f, default_flow_style=False, sort_keys=False) yaml.dump(dict(global_config), f, default_flow_style=False, sort_keys=False)
print("config file set to :configs/rec/multi_language/rec_{}_lite_train.yml".format(FLAGS.type)) print("Train list path set to :{}".format(global_config['Train']['dataset']['label_file_list'][0]))
print("Eval list path set to :{}".format(global_config['Eval']['dataset']['label_file_list'][0]))
print("Dataset root path set to :{}".format(global_config['Eval']['dataset']['data_dir']))
print("Dict path set to :{}".format(global_config['Global']['character_dict_path']))
print("Config file set to :configs/rec/multi_language/{}".format(save_file_path))
! !
" "
#
$ $
% %
& &
...@@ -72,7 +74,7 @@ l ...@@ -72,7 +74,7 @@ l
m m
n n
o o
p p
q q
r r
s s
...@@ -83,45 +85,59 @@ w ...@@ -83,45 +85,59 @@ w
x x
y y
z z
¡
¢
£ £
¤
¥
¦
§ §
¨
©
ª
«
¬
­ ­
®
¯
° °
±
²
³
´ ´
µ µ
· ·
¸
¹
º º
»
¼
½
¿ ¿
 Á
à Ä
Å Å
Ê É
Î Ï
Ð Ô
Ö
Ü
ß
à
á á
â â
ã
ä
å å
æ æ
ç
è
é é
ê
ë
í
ï
ñ
ò
ó
ô
ö
ø
ù
ú
û
ü
ō
Š
Ÿ
ʒ
β
δ
з
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment