TF之p2p:基于TF利用p2p模型部分代码实现提高图像的分辨率

举报
一个处女座的程序猿 发表于 2021/03/30 23:56:15 2021/03/30
【摘要】 TF之p2p:基于TF利用p2p模型部分代码实现提高图像的分辨率       目录 一、tfimage.py文件功能解释 二、process.py添加一个新操作       一、tfimage.py文件功能解释 1、此处的create_op就调用了tf.get_default_session().run()方法,可以将Tensor 操作的函数转变为对N...

TF之p2p:基于TF利用p2p模型部分代码实现提高图像的分辨率

 

 

 

目录

一、tfimage.py文件功能解释

二、process.py添加一个新操作


 

 

 

一、tfimage.py文件功能解释

1、此处的create_op就调用了tf.get_default_session().run()方法,可以将Tensor 操作的函数转变为对Numpy 数组操作的函数,转换后的函数输出为Numpy的数组,而不是Tensor。例如,下面的decode_jpeg和decode_png。


  
  1. def create_op(func, **placeholders):
  2. op = func(**placeholders)
  3. def f(**kwargs):
  4. feed_dict = {}
  5. for argname, argvalue in kwargs.items():
  6. placeholder = placeholders[argname]
  7. feed_dict[placeholder] = argvalue
  8. return tf.get_default_session().run(op, feed_dict=feed_dict)
  9. return f
  10. decode_jpeg = create_op(
  11. func=tf.image.decode_jpeg,
  12. contents=tf.placeholder(tf.string),
  13. )
  14. decode_png = create_op(
  15. func=tf.image.decode_png,
  16. contents=tf.placeholder(tf.string),
  17. )

2、tfimage.py里使用decode_jpeg和deco de_png定义了一个load函数。load函数的输入是一个图片文件路径,返回的是numpy. ndarray 形式的图像数据。


  
  1. def load(path):
  2. with open(path, "rb") as f:
  3. contents = f.read()
  4. _, ext = os.path.splitext(path.lower())
  5. if ext == ".jpg":
  6. image = decode_jpeg(contents=contents)
  7. elif ext == ".png":
  8. image = decode_png(contents=contents)
  9. else:
  10. raise Exception("invalid image suffix")
  11. return to_float32(image=image)

3、还利用create_op函数定义了若干函数


  
  1. rgb_to_grayscale = create_op(
  2. func=tf.image.rgb_to_grayscale,
  3. images=tf.placeholder(tf.float32),
  4. )
  5. ……
  6. crop = create_op(
  7. func=tf.image.crop_to_bounding_box,
  8. image=tf.placeholder(tf.float32),
  9. offset_height=tf.placeholder(tf.int32, []),
  10. offset_width=tf.placeholder(tf.int32, []),
  11. target_height=tf.placeholder(tf.int32, []),
  12. target_width=tf.placeholder(tf.int32, []),
  13. )
  14. pad = create_op(
  15. func=tf.image.pad_to_bounding_box,
  16. image=tf.placeholder(tf.float32),
  17. offset_height=tf.placeholder(tf.int32, []),
  18. offset_width=tf.placeholder(tf.int32, []),
  19. target_height=tf.placeholder(tf.int32, []),
  20. target_width=tf.placeholder(tf.int32, []),
  21. )

 

二、process.py添加一个新操作

1、process.py 的主处理函数process 使用了上述load 函数读入图片,接着做了一些处理后保存。


  
  1. def process(src_path, dst_path):
  2. src = im.load(src_path)
  3. if a.operation == "grayscale":
  4. dst = grayscale(src)
  5. elif a.operation == "resize":
  6. dst = resize(src)
  7. elif a.operation == "blank":
  8. dst = blank(src)
  9. elif a.operation == "combine":
  10. dst = combine(src, src_path)
  11. elif a.operation == "edges":
  12. dst = edges(src)
  13. elif a.operation == "blur":
  14. dst = blur(src)
  15. else:
  16. raise Exception("invalid operation")
  17. im.save(dst, dst_path)

2、添加新的函数

 

 

 

 

 

 

 

 

文章来源: yunyaniu.blog.csdn.net,作者:一个处女座的程序猿,版权归原作者所有,如需转载,请联系作者。

原文链接:yunyaniu.blog.csdn.net/article/details/82974884

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。