tensorflow_PSENet
tensorflow_PSENet copied to clipboard
请问一下模型最后输出节点名称是什么?
作者你好,我需要将模型转为pb格式,但是转化过程中需要设置output node names,然而我的电脑没办法对模型进行可视化,阅读代码也没找到哪里有设置输出节点,所以想请问一下模型最后输出节点的名称是什么?谢谢了
这个算法我没有转pb,你可以自己打印节点名
@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 @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?
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])
这个模型我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()
这个模型我down下来跑过,里面的多进程会导致内存溢出,每次step内存持续变大,初步估计自动回收机制无法实现实时回收,手动gc也失效。我将generator去掉,单进程跑,不会出现溢出,目前还没完美的解决办法
你好
这个模型我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()
这个模型我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))
这个模型我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, "文本"
刚才有漏打了,就是想请问下, 4个点的坐标值后面 需要加difficult这个数值不? 我看icdar2017的数据集里面好像都有这个difficult选项,但是博主的code主页上面举的一个例子是没有这个difficult的,不知道会不会影响训练。
楼主请问下,pse.cpp 这个在win10环境下要怎样才能正常使用啊?
八个数字后面加文本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 .
八个数字后面加文本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 ###会过滤掉,
八个数字后面加文本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 ###会过滤掉,
恩恩好的额,明白了,多谢啊
八个数字后面加文本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脚本),我想了解下,怎么评估召回率和精准率呢, 多谢~
八个数字后面加文本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) 非常谢谢
八个数字后面加文本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,方便别人查看,谢谢