tensorflow_PSENet icon indicating copy to clipboard operation
tensorflow_PSENet copied to clipboard

请问一下模型最后输出节点名称是什么?

Open float123 opened this issue 5 years ago • 18 comments

作者你好,我需要将模型转为pb格式,但是转化过程中需要设置output node names,然而我的电脑没办法对模型进行可视化,阅读代码也没找到哪里有设置输出节点,所以想请问一下模型最后输出节点的名称是什么?谢谢了

float123 avatar Jul 02 '19 05:07 float123

这个算法我没有转pb,你可以自己打印节点名

liuheng92 avatar Jul 03 '19 02:07 liuheng92

@float123 Did you ever find the output node names? I'm able to print all nodes in the graph, but I can't tell which nodes are input and output.

dsandii avatar Jul 22 '19 12:07 dsandii

@dsandii @liuheng92 input_key = 'input_images:0';output_key = 'resnet_v1_50/conv1/BatchNorm/moving_mean:0' I think maybe these two are input and output and successfully save the pb file, but i stucked at the following code when i evaluate the pb model: meta_graph_def = tf.saved_model.loader.load(sess, [tag_constants.SERVING],'saved_model_transed/6') Any help?

li10141110 avatar Oct 23 '19 02:10 li10141110

def main_eval_1(argv=None): import os os.environ['CUDA_VISIBLE_DEVICES'] = FLAGS.gpu_list

try:
    os.makedirs(FLAGS.output_dir)
except OSError as e:
    if e.errno != 17:
        raise

from tensorflow.python.saved_model import tag_constants
signature_key = tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY
input_key = 'input_images:0';output_key = 'resnet_v1_50/conv1/BatchNorm/moving_mean:0'
with tf.get_default_graph().as_default():
    signature_key = tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY

    input_images = tf.placeholder(tf.float32, shape=[None, None, None, 3], name='input_images')
    global_step = tf.get_variable('global_step', [], initializer=tf.constant_initializer(0), trainable=False)
    seg_maps_pred = model.model(input_images, is_training=False)

    variable_averages = tf.train.ExponentialMovingAverage(0.997, global_step)
    saver = tf.train.Saver(variable_averages.variables_to_restore())
    with tf.Session(config=tf.ConfigProto(allow_soft_placement=True)) as sess:

        # build model from check_point
        # ckpt_state = tf.train.get_checkpoint_state(FLAGS.checkpoint_path)
        # model_path = os.path.join(FLAGS.checkpoint_path, os.path.basename(ckpt_state.model_checkpoint_path))
        # logger.info('Restore from {}'.format(model_path))
        # saver.restore(sess, model_path)
        # build model from saved
        meta_graph_def = tf.saved_model.loader.load(sess, [tag_constants.SERVING],'saved_model_transed/6')


        #tf.saved_model.loader.load(sess, ["serve"], "./model")
        signature = meta_graph_def.signature_def  # 保存了模型中所有的服务函数
        graph = tf.get_default_graph()
        x_tensor_name = signature[signature_key].inputs[input_key].name
        y_tensor_name = signature[signature_key].outputs[output_key].name
        x = sess.graph.get_tensor_by_name(x_tensor_name)
        y = sess.graph.get_tensor_by_name(y_tensor_name)
        im_fn_list = get_images()
        for im_fn in im_fn_list:
            im = cv2.imread(im_fn)[:, :, ::-1]
            logger.debug('image file:{}'.format(im_fn))

            start_time = time.time()
            im_resized, (ratio_h, ratio_w) = resize_image(im)
            h, w, _ = im_resized.shape
            # options = tf.RunOptions(trace_level = tf.RunOptions.FULL_TRACE)
            # run_metadata = tf.RunMetadata()
            timer = {'net': 0, 'pse': 0}
            start = time.time()
            seg_maps = sess.run(y, feed_dict={x: [im_resized]})
            print('seg_maps',seg_maps)
            seg_maps = sess.run(seg_maps_pred, feed_dict={input_images: [im_resized]})
            timer['net'] = time.time() - start
            # fetched_timeline = timeline.Timeline(run_metadata.step_stats)
            # chrome_trace = fetched_timeline.generate_chrome_trace_format()
            # with open(os.path.join(FLAGS.output_dir, os.path.basename(im_fn).split('.')[0]+'.json'), 'w') as f:
            #     f.write(chrome_trace)

            boxes, kernels, timer = detect(seg_maps=seg_maps, timer=timer, image_w=w, image_h=h)
            logger.info('{} : net {:.0f}ms, pse {:.0f}ms'.format(
                im_fn, timer['net'] * 1000, timer['pse'] * 1000))

            if boxes is not None:
                boxes = boxes.reshape((-1, 4, 2))
                boxes[:, :, 0] /= ratio_w
                boxes[:, :, 1] /= ratio_h
                h, w, _ = im.shape
                boxes[:, :, 0] = np.clip(boxes[:, :, 0], 0, w)
                boxes[:, :, 1] = np.clip(boxes[:, :, 1], 0, h)

            duration = time.time() - start_time
            logger.info('[timing] {}'.format(duration))

            # save to file
            if boxes is not None:
                res_file = os.path.join(
                    FLAGS.output_dir,
                    '{}.txt'.format(os.path.splitext(
                        os.path.basename(im_fn))[0]))

                with open(res_file, 'w') as f:
                    num = 0
                    for i in xrange(len(boxes)):
                        # to avoid submitting errors
                        box = boxes[i]
                        if np.linalg.norm(box[0] - box[1]) < 5 or np.linalg.norm(box[3] - box[0]) < 5:
                            continue

                        num += 1

                        f.write('{},{},{},{},{},{},{},{}\r\n'.format(
                            box[0, 0], box[0, 1], box[1, 0], box[1, 1], box[2, 0], box[2, 1], box[3, 0], box[3, 1]))
                        cv2.polylines(im[:, :, ::-1], [box.astype(np.int32).reshape((-1, 1, 2))], True,
                                      color=(255, 255, 0), thickness=2)
            if not FLAGS.no_write_images:
                img_path = os.path.join(FLAGS.output_dir, os.path.basename(im_fn))
                cv2.imwrite(img_path, im[:, :, ::-1])

li10141110 avatar Oct 23 '19 02:10 li10141110

这个模型我down下来跑过,里面的多进程会导致内存溢出,每次step内存持续变大,初步估计自动回收机制无法实现实时回收,手动gc也失效。我将generator去掉,单进程跑,不会出现溢出,目前还没完美的解决办法

linhaibo123 avatar Nov 15 '19 08:11 linhaibo123

我是这么处理多线程转单线程的,不知道对否,大神请指点。 在data_util.py文件里面,注释掉下面几句话,然后再补充了三句话,请问大神这样做对否。
( 请问如果写成 workers=1, max_queue_size =2 , 这个是表示什么意思呢, ) (好像线程thread的增加是这句话self._threads.append(thread) 作用的吗?)

多谢指点。

 #去除多线程
        '''
        for _ in range(workers):
            if self._use_multiprocessing:
                # Reset random seed else all children processes
                # share the same seed
                np.random.seed(self.random_seed)
                thread = multiprocessing.Process(target=data_generator_task)
                thread.daemon = True
                if self.random_seed is not None:
                    self.random_seed += 1
            else:
                thread = threading.Thread(target=data_generator_task)
            self._threads.append(thread)
            thread.start()
        '''
        thread = multiprocessing.Process(target=data_generator_task)
        thread.daemon = True
        thread.start()

Asuna88 avatar Nov 19 '19 01:11 Asuna88

这个模型我down下来跑过,里面的多进程会导致内存溢出,每次step内存持续变大,初步估计自动回收机制无法实现实时回收,手动gc也失效。我将generator去掉,单进程跑,不会出现溢出,目前还没完美的解决办法

你好

Asuna88 avatar Nov 19 '19 01:11 Asuna88

这个模型我down下来跑过,里面的多进程会导致内存溢出,每次step内存持续变大,初步估计自动回收机制无法实现实时回收,手动gc也失效。我将generator去掉,单进程跑,不会出现溢出,目前还没完美的解决办法

你好,,我是这么处理多线程转单线程的,不知道对否,大神请指点。 在data_util.py文件里面,注释掉下面几句话,然后再补充了三句话,请问大神这样做对否。 ( 请问如果写成 workers=1, max_queue_size =2 , 这个是表示什么意思呢, ) (好像线程thread的增加是这句话self._threads.append(thread) 作用的吗?)

多谢指点。

#去除多线程 ''' for _ in range(workers): if self._use_multiprocessing: # Reset random seed else all children processes # share the same seed np.random.seed(self.random_seed) thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True if self.random_seed is not None: self.random_seed += 1 else: thread = threading.Thread(target=data_generator_task) self._threads.append(thread) thread.start() ''' thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True thread.start()

Asuna88 avatar Nov 19 '19 01:11 Asuna88

这个模型我down下来跑过,里面的多进程会导致内存溢出,每次step内存持续变大,初步估计自动回收机制无法实现实时回收,手动gc也失效。我将generator去掉,单进程跑,不会出现溢出,目前还没完美的解决办法

你好,,我是这么处理多线程转单线程的,不知道对否,大神请指点。 在data_util.py文件里面,注释掉下面几句话,然后再补充了三句话,请问大神这样做对否。 ( 请问如果写成 workers=1, max_queue_size =2 , 这个是表示什么意思呢, ) (好像线程thread的增加是这句话self._threads.append(thread) 作用的吗?)

多谢指点。

#去除多线程 ''' for _ in range(workers): if self._use_multiprocessing:

Reset random seed else all children processes

share the same seed

np.random.seed(self.random_seed) thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True if self.random_seed is not None: self.random_seed += 1 else: thread = threading.Thread(target=data_generator_task) self._threads.append(thread) thread.start() ''' thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True thread.start()

我没有这么麻烦,在train.py 里面直接注释掉dataloader 中multiprocess获取数据的部分,然后改成直接调用获取数据数据,就改了一行代码、 #data_generator = data_provider.get_batch(num_workers=FLAGS.num_readers, input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus)) data_generator = data_provider.generator(input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus))

linhaibo123 avatar Nov 19 '19 02:11 linhaibo123

这个模型我down下来跑过,里面的多进程会导致内存溢出,每次step内存持续变大,初步估计自动回收机制无法实现实时回收,手动gc也失效。我将generator去掉,单进程跑,不会出现溢出,目前还没完美的解决办法

你好,,我是这么处理多线程转单线程的,不知道对否,大神请指点。 在data_util.py文件里面,注释掉下面几句话,然后再补充了三句话,请问大神这样做对否。 ( 请问如果写成 workers=1, max_queue_size =2 , 这个是表示什么意思呢, ) (好像线程thread的增加是这句话self._threads.append(thread) 作用的吗?) 多谢指点。 #去除多线程 ''' for _ in range(workers): if self._use_multiprocessing:

Reset random seed else all children processes

share the same seed

np.random.seed(self.random_seed) thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True if self.random_seed is not None: self.random_seed += 1 else: thread = threading.Thread(target=data_generator_task) self._threads.append(thread) thread.start() ''' thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True thread.start()

我没有这么麻烦,在train.py 里面直接注释掉dataloader 中multiprocess获取数据的部分,然后改成直接调用获取数据数据,就改了一行代码、 #data_generator = data_provider.get_batch(num_workers=FLAGS.num_readers, input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus)) data_generator = data_provider.generator(input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus))

恩恩,好的,非常谢谢你啊。

可以再请请教下,它的这个数据集格式是按照icidar2017来的吧,就是图片和相应的标注文件要在同一个文件夹里面, 例如001.jpg和001.txt,然后001.txt里面的内容是 :275,809,427,804,427,858,286,858,"文本" 请问是这样的么? 4个点的坐标值后面 需要加么?

就是说,下面格式是哪个对呢? 275,809,427,804,427,858,286,858,"文本" 275,809,427,804,427,858,286,858, 0, "文本"

Asuna88 avatar Nov 19 '19 06:11 Asuna88

刚才有漏打了,就是想请问下, 4个点的坐标值后面 需要加difficult这个数值不? 我看icdar2017的数据集里面好像都有这个difficult选项,但是博主的code主页上面举的一个例子是没有这个difficult的,不知道会不会影响训练。

Asuna88 avatar Nov 19 '19 06:11 Asuna88

楼主请问下,pse.cpp 这个在win10环境下要怎样才能正常使用啊?

apple2333cream avatar Nov 20 '19 08:11 apple2333cream

八个数字后面加文本string,因为是训练检测模型,这个string我写的是null(随便写都可以),可以正常训练。

On Tue, Nov 19, 2019 at 2:11 PM Asuna88 [email protected] wrote:

这个模型我down下来跑过,里面的多进程会导致内存溢出,每次step内存持续变大,初步估计自动回收机制无法实现实时回收,手动gc也失效。我将generator去掉,单进程跑,不会出现溢出,目前还没完美的解决办法

你好,,我是这么处理多线程转单线程的,不知道对否,大神请指点。 在data_util.py文件里面,注释掉下面几句话,然后再补充了三句话,请问大神这样做对否。 ( 请问如果写成 workers=1, max_queue_size =2 , 这个是表示什么意思呢, ) (好像线程thread的增加是这句话self._threads.append(thread) 作用的吗?) 多谢指点。 #去除多线程 ''' for _ in range(workers): if self._use_multiprocessing: Reset random seed else all children processes share the same seed

np.random.seed(self.random_seed) thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True if self.random_seed is not None: self.random_seed += 1 else: thread = threading.Thread(target=data_generator_task) self._threads.append(thread) thread.start() ''' thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True thread.start()

我没有这么麻烦,在train.py 里面直接注释掉dataloader 中multiprocess获取数据的部分,然后改成直接调用获取数据数据,就改了一行代码、 #data_generator = data_provider.get_batch(num_workers=FLAGS.num_readers, input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus)) data_generator = data_provider.generator(input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus))

恩恩,好的,非常谢谢你啊。

可以再请请教下,它的这个数据集格式是按照icidar2017来的吧,就是图片和相应的标注文件要在同一个文件夹里面, 例如001.jpg和001.txt,然后001.txt里面的内容是 :275,809,427,804,427,858,286,858,"文本" 请问是这样的么? 4个点的坐标值后面 需要加么?

就是说,下面格式是哪个对呢? 275,809,427,804,427,858,286,858,"文本" 275,809,427,804,427,858,286,858, 0, "文本"

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/liuheng92/tensorflow_PSENet/issues/35?email_source=notifications&email_token=AGJPJAZTGQTVHEJB5E7YGYTQUN7P7A5CNFSM4H4YEID2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEEM7POY#issuecomment-555349947, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGJPJA5OOQLKJU3WNLAKGDDQUN7P7ANCNFSM4H4YEIDQ .

li10141110 avatar Nov 20 '19 13:11 li10141110

八个数字后面加文本string,因为是训练检测模型,这个string我写的是null(随便写都可以),可以正常训练。 On Tue, Nov 19, 2019 at 2:11 PM Asuna88 @.***> wrote: 这个模型我down下来跑过,里面的多进程会导致内存溢出,每次step内存持续变大,初步估计自动回收机制无法实现实时回收,手动gc也失效。我将generator去掉,单进程跑,不会出现溢出,目前还没完美的解决办法 你好,,我是这么处理多线程转单线程的,不知道对否,大神请指点。 在data_util.py文件里面,注释掉下面几句话,然后再补充了三句话,请问大神这样做对否。 ( 请问如果写成 workers=1, max_queue_size =2 , 这个是表示什么意思呢, ) (好像线程thread的增加是这句话self._threads.append(thread) 作用的吗?) 多谢指点。 #去除多线程 ''' for _ in range(workers): if self._use_multiprocessing: Reset random seed else all children processes share the same seed np.random.seed(self.random_seed) thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True if self.random_seed is not None: self.random_seed += 1 else: thread = threading.Thread(target=data_generator_task) self._threads.append(thread) thread.start() ''' thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True thread.start() 我没有这么麻烦,在train.py 里面直接注释掉dataloader 中multiprocess获取数据的部分,然后改成直接调用获取数据数据,就改了一行代码、 #data_generator = data_provider.get_batch(num_workers=FLAGS.num_readers, input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus)) data_generator = data_provider.generator(input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus)) 恩恩,好的,非常谢谢你啊。 可以再请请教下,它的这个数据集格式是按照icidar2017来的吧,就是图片和相应的标注文件要在同一个文件夹里面, 例如001.jpg和001.txt,然后001.txt里面的内容是 :275,809,427,804,427,858,286,858,"文本" 请问是这样的么? 4个点的坐标值后面 需要加么? 就是说,下面格式是哪个对呢? 275,809,427,804,427,858,286,858,"文本" 275,809,427,804,427,858,286,858, 0, "文本" — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#35?email_source=notifications&email_token=AGJPJAZTGQTVHEJB5E7YGYTQUN7P7A5CNFSM4H4YEID2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEEM7POY#issuecomment-555349947>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGJPJA5OOQLKJU3WNLAKGDDQUN7P7ANCNFSM4H4YEIDQ .

随便写什么都可以,就不要写###的,比如 0,1,2,3,4,5,6,7,xxx ###会过滤掉,

linhaibo123 avatar Nov 20 '19 14:11 linhaibo123

八个数字后面加文本string,因为是训练检测模型,这个string我写的是null(随便写都可以),可以正常训练。 On Tue, Nov 19, 2019 at 2:11 PM Asuna88 @.***> wrote: 这个模型我down下来跑过,里面的多进程会导致内存溢出,每次step内存持续变大,初步估计自动回收机制无法实现实时回收,手动gc也失效。我将generator去掉,单进程跑,不会出现溢出,目前还没完美的解决办法 你好,,我是这么处理多线程转单线程的,不知道对否,大神请指点。 在data_util.py文件里面,注释掉下面几句话,然后再补充了三句话,请问大神这样做对否。 ( 请问如果写成 workers=1, max_queue_size =2 , 这个是表示什么意思呢, ) (好像线程thread的增加是这句话self._threads.append(thread) 作用的吗?) 多谢指点。 #去除多线程 ''' for _ in range(workers): if self._use_multiprocessing: Reset random seed else all children processes share the same seed np.random.seed(self.random_seed) thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True if self.random_seed is not None: self.random_seed += 1 else: thread = threading.Thread(target=data_generator_task) self._threads.append(thread) thread.start() ''' thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True thread.start() 我没有这么麻烦,在train.py 里面直接注释掉dataloader 中multiprocess获取数据的部分,然后改成直接调用获取数据数据,就改了一行代码、 #data_generator = data_provider.get_batch(num_workers=FLAGS.num_readers, input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus)) data_generator = data_provider.generator(input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus)) 恩恩,好的,非常谢谢你啊。 可以再请请教下,它的这个数据集格式是按照icidar2017来的吧,就是图片和相应的标注文件要在同一个文件夹里面, 例如001.jpg和001.txt,然后001.txt里面的内容是 :275,809,427,804,427,858,286,858,"文本" 请问是这样的么? 4个点的坐标值后面 需要加么? 就是说,下面格式是哪个对呢? 275,809,427,804,427,858,286,858,"文本" 275,809,427,804,427,858,286,858, 0, "文本" — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#35?email_source=notifications&email_token=AGJPJAZTGQTVHEJB5E7YGYTQUN7P7A5CNFSM4H4YEID2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEEM7POY#issuecomment-555349947>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGJPJA5OOQLKJU3WNLAKGDDQUN7P7ANCNFSM4H4YEIDQ .

随便写什么都可以,就不要写###的,比如 0,1,2,3,4,5,6,7,xxx ###会过滤掉,

恩恩好的额,明白了,多谢啊

Asuna88 avatar Nov 21 '19 00:11 Asuna88

八个数字后面加文本string,因为是训练检测模型,这个string我写的是null(随便写都可以),可以正常训练。 On Tue, Nov 19, 2019 at 2:11 PM Asuna88 @.***> wrote: 这个模型我down下来跑过,里面的多进程会导致内存溢出,每次step内存持续变大,初步估计自动回收机制无法实现实时回收,手动gc也失效。我将generator去掉,单进程跑,不会出现溢出,目前还没完美的解决办法 你好,,我是这么处理多线程转单线程的,不知道对否,大神请指点。 在data_util.py文件里面,注释掉下面几句话,然后再补充了三句话,请问大神这样做对否。 ( 请问如果写成 workers=1, max_queue_size =2 , 这个是表示什么意思呢, ) (好像线程thread的增加是这句话self._threads.append(thread) 作用的吗?) 多谢指点。 #去除多线程 ''' for _ in range(workers): if self._use_multiprocessing: Reset random seed else all children processes share the same seed np.random.seed(self.random_seed) thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True if self.random_seed is not None: self.random_seed += 1 else: thread = threading.Thread(target=data_generator_task) self._threads.append(thread) thread.start() ''' thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True thread.start() 我没有这么麻烦,在train.py 里面直接注释掉dataloader 中multiprocess获取数据的部分,然后改成直接调用获取数据数据,就改了一行代码、 #data_generator = data_provider.get_batch(num_workers=FLAGS.num_readers, input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus)) data_generator = data_provider.generator(input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus)) 恩恩,好的,非常谢谢你啊。 可以再请请教下,它的这个数据集格式是按照icidar2017来的吧,就是图片和相应的标注文件要在同一个文件夹里面, 例如001.jpg和001.txt,然后001.txt里面的内容是 :275,809,427,804,427,858,286,858,"文本" 请问是这样的么? 4个点的坐标值后面 需要加么? 就是说,下面格式是哪个对呢? 275,809,427,804,427,858,286,858,"文本" 275,809,427,804,427,858,286,858, 0, "文本" — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#35?email_source=notifications&email_token=AGJPJAZTGQTVHEJB5E7YGYTQUN7P7A5CNFSM4H4YEID2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEEM7POY#issuecomment-555349947>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGJPJA5OOQLKJU3WNLAKGDDQUN7P7ANCNFSM4H4YEIDQ .

恩恩,多谢啊, 另外再请教下,这个PSENet有没有测试 recall, precision的脚本,(类似fater 的那种eval.py脚本),我想了解下,怎么评估召回率和精准率呢, 多谢~

Asuna88 avatar Nov 21 '19 00:11 Asuna88

八个数字后面加文本string,因为是训练检测模型,这个string我写的是null(随便写都可以),可以正常训练。 On Tue, Nov 19, 2019 at 2:11 PM Asuna88 @.***> wrote: 这个模型我down下来跑过,里面的多进程会导致内存溢出,每次step内存持续变大,初步估计自动回收机制无法实现实时回收,手动gc也失效。我将generator去掉,单进程跑,不会出现溢出,目前还没完美的解决办法 你好,,我是这么处理多线程转单线程的,不知道对否,大神请指点。 在data_util.py文件里面,注释掉下面几句话,然后再补充了三句话,请问大神这样做对否。 ( 请问如果写成 workers=1, max_queue_size =2 , 这个是表示什么意思呢, ) (好像线程thread的增加是这句话self._threads.append(thread) 作用的吗?) 多谢指点。 #去除多线程 ''' for _ in range(workers): if self._use_multiprocessing: Reset random seed else all children processes share the same seed np.random.seed(self.random_seed) thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True if self.random_seed is not None: self.random_seed += 1 else: thread = threading.Thread(target=data_generator_task) self._threads.append(thread) thread.start() ''' thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True thread.start() 我没有这么麻烦,在train.py 里面直接注释掉dataloader 中multiprocess获取数据的部分,然后改成直接调用获取数据数据,就改了一行代码、 #data_generator = data_provider.get_batch(num_workers=FLAGS.num_readers, input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus)) data_generator = data_provider.generator(input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus)) 恩恩,好的,非常谢谢你啊。 可以再请请教下,它的这个数据集格式是按照icidar2017来的吧,就是图片和相应的标注文件要在同一个文件夹里面, 例如001.jpg和001.txt,然后001.txt里面的内容是 :275,809,427,804,427,858,286,858,"文本" 请问是这样的么? 4个点的坐标值后面 需要加么? 就是说,下面格式是哪个对呢? 275,809,427,804,427,858,286,858,"文本" 275,809,427,804,427,858,286,858, 0, "文本" — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#35?email_source=notifications&email_token=AGJPJAZTGQTVHEJB5E7YGYTQUN7P7A5CNFSM4H4YEID2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEEM7POY#issuecomment-555349947>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGJPJA5OOQLKJU3WNLAKGDDQUN7P7ANCNFSM4H4YEIDQ .

随便写什么都可以,就不要写###的,比如 0,1,2,3,4,5,6,7,xxx ###会过滤掉,

对了,还想再请教下目前 PSENet有没有测试 recall, precision的脚本呢?(类似fater 的那种eval.py) 非常谢谢

Asuna88 avatar Nov 21 '19 00:11 Asuna88

八个数字后面加文本string,因为是训练检测模型,这个string我写的是null(随便写都可以),可以正常训练。 On Tue, Nov 19, 2019 at 2:11 PM Asuna88 @.***> wrote: 这个模型我down下来跑过,里面的多进程会导致内存溢出,每次step内存持续变大,初步估计自动回收机制无法实现实时回收,手动gc也失效。我将generator去掉,单进程跑,不会出现溢出,目前还没完美的解决办法 你好,,我是这么处理多线程转单线程的,不知道对否,大神请指点。 在data_util.py文件里面,注释掉下面几句话,然后再补充了三句话,请问大神这样做对否。 ( 请问如果写成 workers=1, max_queue_size =2 , 这个是表示什么意思呢, ) (好像线程thread的增加是这句话self._threads.append(thread) 作用的吗?) 多谢指点。 #去除多线程 ''' for _ in range(workers): if self._use_multiprocessing: Reset random seed else all children processes share the same seed np.random.seed(self.random_seed) thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True if self.random_seed is not None: self.random_seed += 1 else: thread = threading.Thread(target=data_generator_task) self._threads.append(thread) thread.start() ''' thread = multiprocessing.Process(target=data_generator_task) thread.daemon = True thread.start() 我没有这么麻烦,在train.py 里面直接注释掉dataloader 中multiprocess获取数据的部分,然后改成直接调用获取数据数据,就改了一行代码、 #data_generator = data_provider.get_batch(num_workers=FLAGS.num_readers, input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus)) data_generator = data_provider.generator(input_size=FLAGS.input_size, batch_size=FLAGS.batch_size_per_gpu * len(gpus)) 恩恩,好的,非常谢谢你啊。 可以再请请教下,它的这个数据集格式是按照icidar2017来的吧,就是图片和相应的标注文件要在同一个文件夹里面, 例如001.jpg和001.txt,然后001.txt里面的内容是 :275,809,427,804,427,858,286,858,"文本" 请问是这样的么? 4个点的坐标值后面 需要加么? 就是说,下面格式是哪个对呢? 275,809,427,804,427,858,286,858,"文本" 275,809,427,804,427,858,286,858, 0, "文本" — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#35?email_source=notifications&email_token=AGJPJAZTGQTVHEJB5E7YGYTQUN7P7A5CNFSM4H4YEID2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEEM7POY#issuecomment-555349947>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGJPJA5OOQLKJU3WNLAKGDDQUN7P7ANCNFSM4H4YEIDQ .

随便写什么都可以,就不要写###的,比如 0,1,2,3,4,5,6,7,xxx ###会过滤掉,

对了,还想再请教下目前 PSENet有没有测试 recall, precision的脚本呢?(类似fater 的那种eval.py) 非常谢谢

我的仓库里有,但是不同的问题最好重新开一个issue,方便别人查看,谢谢

liuheng92 avatar Dec 17 '19 03:12 liuheng92