def __init__(self, cfg_file='/root/tzl/text_renderer/configs/default_test.yaml'):
     """
     handle exist image
     """
     self.debug = True
     cfg = load_config(cfg_file)
     self.cfg = cfg
     self.liner = Liner(cfg)
     self.noiser = Noiser(cfg)
     self.remaper = Remaper(cfg)
     self.create_kernals()
 def __init__(self, cfg_name):
     self.cfg = load_config(cfg_name)
     self.cfg.lr_boundaries = [10000]
     self.cfg.lr_values = [
         self.cfg.lr * (self.cfg.lr_decay_rate**i)
         for i in range(len(self.cfg.lr_boundaries) + 1)
     ]
     self.sess = None
     self.graph = None
     self.converter = None
     self.dataset = None
     self.input = None
     self.output = None
     self.global_step = None
    def __init__(self, model_path):
        os.environ['CUDA_VISIBLE_DEVICES'] = '2'
        self.cfg = load_config('resnet')
        self.label_converter = LabelConverter(lexicon)

        config = tf.ConfigProto(allow_soft_placement=True)
        config.gpu_options.allow_growth = True
        config.gpu_options.per_process_gpu_memory_fraction = 0.5
        self.graph = tf.Graph()
        self.session = tf.Session(graph=self.graph, config=config)

        with self.session.as_default():
            with self.graph.as_default():
                self.net = CRNN(self.cfg, num_classes=self.label_converter.num_classes)
                saver = tf.train.Saver()
                saver.restore(self.session, model_path)

        logging.info('CRNN model initialized.')
Beispiel #4
0
    def __init__(self, args):
        self.args = args
        self.cfg = load_config(args.cfg_name)

        self.converter = LabelConverter(chars_file=args.chars_file)

        self.tr_ds = ImgDataset(args.train_dir, self.converter,
                                self.cfg.batch_size)

        self.cfg.lr_boundaries = [
            self.tr_ds.num_batches * epoch
            for epoch in self.cfg.lr_decay_epochs
        ]
        self.cfg.lr_values = [
            self.cfg.lr * (self.cfg.lr_decay_rate**i)
            for i in range(len(self.cfg.lr_boundaries) + 1)
        ]

        if args.val_dir is None:
            self.val_ds = None
        else:
            self.val_ds = ImgDataset(args.val_dir,
                                     self.converter,
                                     self.cfg.batch_size,
                                     shuffle=False)

        if args.test_dir is None:
            self.test_ds = None
        else:
            # Test images often have different size, so set batch_size to 1
            self.test_ds = ImgDataset(args.test_dir,
                                      self.converter,
                                      shuffle=False,
                                      batch_size=1)

        self.model = CRNN(self.cfg, num_classes=self.converter.num_classes)
        self.sess = tf.Session(config=tf.ConfigProto(
            allow_soft_placement=True))

        self.epoch_start_index = 0
        self.batch_start_index = 0
Beispiel #5
0
from libs.config import load_config
from libs.timer import Timer
from parse_args import parse_args
import libs.utils as utils
import libs.font_utils as font_utils
from textrenderer.corpus.corpus_utils import corpus_factory
from textrenderer.renderer import Renderer
from tenacity import retry

lock = mp.Lock()
counter = mp.Value('i', 0)
STOP_TOKEN = 'kill'

flags = parse_args()
cfg = load_config(flags.config_file)

fonts = font_utils.get_font_paths_from_list(flags.fonts_list)
bgs = utils.load_bgs(flags.bg_dir)

corpus = corpus_factory(flags.corpus_mode, flags.chars_file, flags.corpus_dir,
                        flags.length)

renderer = Renderer(corpus,
                    fonts,
                    bgs,
                    cfg,
                    height=flags.img_height,
                    width=flags.img_width,
                    clip_max_chars=flags.clip_max_chars,
                    debug=flags.debug,
    def train(self, log_dir, restore, log_step, ckpt_dir, val_step, cfg_name, chars_file, train_txt, val_txt, test_txt, result_dir):

        cfg = load_config(cfg_name)

        converter = LabelConverter(chars_file=chars_file)

        tr_ds = ImgDataset(train_txt, converter, cfg.batch_size)

        cfg.lr_boundaries = [10000]
        cfg.lr_values = [cfg.lr * (cfg.lr_decay_rate ** i) for i in
                              range(len(cfg.lr_boundaries) + 1)]

        if val_txt is None:
            val_ds = None
        else:
            val_ds = ImgDataset(val_txt, converter, cfg.batch_size, shuffle=False)

        if test_txt is None:
            test_ds = None
        else:
            # Test images often have different size, so set batch_size to 1
            test_ds = ImgDataset(test_txt, converter, shuffle=False, batch_size=1)

        model = CRNN(cfg, num_classes=converter.num_classes)

        epoch_start_index = 0
        batch_start_index = 0

        config=tf.ConfigProto(allow_soft_placement=True)
        config.gpu_options.allow_growth = True
        config.gpu_options.per_process_gpu_memory_fraction = 0.8
        sess = tf.Session(config=config)
        sess.run(tf.global_variables_initializer())

        saver = tf.train.Saver(tf.global_variables(), max_to_keep=8)
        train_writer = tf.summary.FileWriter(log_dir, sess.graph)

        if restore:
            self._restore(sess, saver, model,tr_ds, ckpt_dir)

        print('Begin training...')
        for epoch in range(epoch_start_index, cfg.epochs):
            sess.run(tr_ds.init_op)

            for batch in range(batch_start_index, tr_ds.num_batches):
                batch_start_time = time.time()

                if batch != 0 and (batch %  log_step == 0):
                    batch_cost, global_step, lr = self._train_with_summary( model, tr_ds, sess, train_writer, converter)
                else:
                    batch_cost, global_step, lr = self._train(model, tr_ds, sess)

                print("epoch: {}, batch: {}/{}, step: {}, time: {:.02f}s, loss: {:.05}, lr: {:.05}"
                      .format(epoch, batch, tr_ds.num_batches, global_step, time.time() - batch_start_time,
                              batch_cost, lr))

                if global_step != 0 and (global_step % val_step == 0):
                    val_acc = self._do_val(val_ds, epoch, global_step, "val", sess, model, converter,  train_writer, cfg, result_dir)
                    test_acc = self._do_val(test_ds, epoch, global_step, "test", sess, model, converter, train_writer, cfg, result_dir)
                    self._save_checkpoint(ckpt_dir, global_step, saver, sess, val_acc, test_acc)

            batch_start_index = 0
Beispiel #7
0
            self.embedding: embedding features
            self.char_label: 和 embedding features 对应的标签
            self.char_pos: 和 embedding features 对应的字符位置

        """
        with tf.variable_scope('pos'):
            # 判断是否为预测的字符
            is_char = tf.less(raw_pred, self.num_classes - 1)

            # 错位比较法,找到重复字符
            char_rep = tf.equal(raw_pred[:, :-1], raw_pred[:, 1:])
            tail = tf.greater(raw_pred[:, :1], self.num_classes - 1)
            char_rep = tf.concat([char_rep, tail], axis=1)

            # 去掉重复字符之后的字符位置,重复字符取其 最后一次 出现的位置
            char_no_rep = tf.math.logical_and(is_char,
                                              tf.math.logical_not(char_rep))

            # 得到字符位置 和 相应的标签,如果某张图片 预测出来的字符数量 和gt不一致则跳过
            self.char_pos, self.char_label = self.get_char_pos_and_label(
                preds=char_no_rep, label=label, char_num=char_num, poses=poses)
            # 根据字符位置得到字符的 embedding
            self.embedding = self.get_features(self.char_pos, embedding)


if __name__ == '__main__':
    from libs.label_converter import LabelConverter

    cfg = load_config('raw')
    converter = LabelConverter(chars_file='./data/chars/lexicon.txt')
    model = CRNN(cfg, num_classes=converter.num_classes)
Beispiel #8
0
    async def on_ready(self):
        print(f'We have logged in as {self.bot.user}')
        await self.bot.change_presence(activity=discord.Game(name=config.special_event))
        config.load_config(self.bot)

        print("Session started.")