import tensorflow as tf
import cv2
from PIL import Image
import numpy as np
import colorsys
import os
import matplotlib.pyplot as pltdef resize_image(image, size):""" 等比例resize """iw, ih  = image.sizew, h    = sizescale   = min(w/iw, h/ih)nw      = int(iw*scale)nh      = int(ih*scale)image   = image.resize((nw,nh), Image.BICUBIC)new_image = Image.new('RGB', size, (128,128,128))new_image.paste(image, ((w-nw)//2, (h-nh)//2))return new_image, nw, nhdef preprocess_input(image):image = image / 127.5 - 1return imageinput_shape = (512,512) # 与训练的时候一致
num_classes = 2 # 类别+1def preProcessing(filepath):inputs = cv2.imread(filepath)old_img = Image.open(filepath)h,w = inputs.shape[0],inputs.shape[1]# print(f'初始图像size: {h},{w}')""" 数据预处理 """image_data, nw, nh  = resize_image(old_img, (input_shape[1], input_shape[0]))image_data  = np.expand_dims(preprocess_input(np.array(image_data, np.float32)), 0)return old_img,(h,w),(nw,nh),image_datadef postProcessing():""" 对预测结果进行后处理 """# resize回图像原始的大小pr = cv2.resize(pr_arrays, (w, h), interpolation = cv2.INTER_LINEAR)pr = pr.argmax(axis=-1) # 取出每一个像素点的种类seg_img = np.zeros((np.shape(pr)[0], np.shape(pr)[1], 3))if num_classes <= 21:colors = [ (0, 0, 0), (128, 0, 0), (0, 128, 0), (128, 128, 0), (0, 0, 128), (128, 0, 128), (0, 128, 128), (128, 128, 128), (64, 0, 0), (192, 0, 0), (64, 128, 0), (192, 128, 0), (64, 0, 128), (192, 0, 128), (64, 128, 128), (192, 128, 128), (0, 64, 0), (128, 64, 0), (0, 192, 0), (128, 192, 0), (0, 64, 128), (128, 64, 12)]else:hsv_tuples = [(x / num_classes, 1., 1.) for x in range(num_classes)]colors = list(map(lambda x: colorsys.hsv_to_rgb(*x), hsv_tuples))colors = list(map(lambda x: (int(x[0] * 255), int(x[1] * 255), int(x[2] * 255)), colors))for c in range(num_classes):seg_img[:,:,0] += ((pr[:,: ] == c )*(colors[c][0] )).astype('uint8')seg_img[:,:,1] += ((pr[:,: ] == c )*(colors[c][1] )).astype('uint8')seg_img[:,:,2] += ((pr[:,: ] == c )*(colors[c][2] )).astype('uint8')resultImage = Image.fromarray(np.uint8(seg_img))image = Image.blend(old_img,resultImage,0.5)return imagedef saveAndShow(image):savename = os.path.basename(filepath)[:-4]+"httpResult.jpg"savePath = 'servingOut/'if not os.path.exists(savePath):os.mkdir(savePath)image.save(savePath+savename)plt.title(os.path.basename(filepath))plt.imshow(image)plt.show()if __name__ == '__main__':mymodel = tf.saved_model.load("test/1")while True:try:filepath = input('请输入待预测图像路径(输入c退出): ')if filepath == 'c':break        old_img,(h,w),(nw,nh),image_data = preProcessing(filepath=filepath)            pr = mymodel(image_data)[0]pr_arrays = pr.numpy()image = postProcessing()saveAndShow(image)except Exception as e:print(e)continue

是在httpClient.py(参考文章)的基础上改的,主要是导入模型和输入data进行推理:

mymodel = tf.saved_model.load("test/1")
pr = mymodel(image_data)[0]

这个pr目前是tensor类型,需要转成numpy,然后才可以进行后处理

pr_arrays = pr.numpy()

使用tf2的saved_model进行推理相关推荐

  1. 【TensorflowTTS 中文语音生成 Win10】

    原创,如需转转请著名出处. 安装或下载官方demo https://github.com/TensorSpeech/TensorFlowTTS 这里如果我们直接pip install .它会直接直接给 ...

  2. tensorlfow.saved_model的使用

    import tensorflow as tf from tensorflow import saved_model as sm model_dir = '/home/test/070807_mode ...

  3. 【小白学PyTorch】15.TF2实现一个简单的服装分类任务

    <<小白学PyTorch>> 小白学PyTorch | 14 tensorboardX可视化教程 小白学PyTorch | 13 EfficientNet详解及PyTorch实 ...

  4. 手把手教你在Modelarts平台上进行视频推理

    摘要:为了方便小伙伴们进行视频场景的AI应用开发,Modelarts推理平台将视频推理场景中一些通用的流程抽取出来预置在基础镜像中,小伙伴们只需要简单地编写预处理及后处理脚本,便可以像开发图片类型的A ...

  5. TF2.0 subclass存储及读取模型

    Tensorflow Subclass存储问题 问题描述:项目中通过tf.keras.layer.Layers及f.keras.layer.Model进行构建模型,在存储的过程中能够存储自己的模型,但 ...

  6. Java / Tensorflow - API 调用 pb 模型使用 GPU 推理

    目录 一.引言 二.Java / Tensorflow 代码配置 1.代码配置 2.Maven 配置 三.环境检测 1.显卡检测 2.显卡监控 四.推理踩坑 1.异常现象 2.异常日志 五.安装 cu ...

  7. Jetson TX2实现EfficientDet推理加速(二)

    一.参考资料 TensorRT实现EfficientDet推理加速(一) 二.可能出现的问题 infer推理错误 [TensorRT] ERROR: 2: [pluginV2DynamicExtRun ...

  8. tf2 + keras学习

    静动态图 搭建静态图 Tensorflow1.x主要都是搭建的静态图,需要手动创建一个图然后在session里执行 图结构就相当于先定义好所有的 数据节点 (op,用以存储所有的中间以及最后的结果te ...

  9. Jetson TX2实现EfficientDet推理加速(一)

    一.参考资料 EfficientDet tensorrt Jetson TX2实现EfficientDet推理加速(二) 二.相关环境 系统环境 Environment Operating Syste ...

  10. onnx标准 onnxRuntime加速推理引擎

    onnx标准 & onnxRuntime加速推理引擎 文章目录 onnx标准 & onnxRuntime加速推理引擎 一.onnx简介 二.pytorch转onnx 三.tf1.0 / ...

最新文章

  1. 01-移动端开发教程-CSS3新特性(上)
  2. 测试服务器最大链接数_JMeter压力测试集合点教程
  3. IIS Log的位置
  4. Google、Facebook等不可错过的 AI 开源工具,你想要的都在这里!
  5. js中判断数组中是否含有某个字符串方法
  6. 西门子1200 PLC程序 通讯对象:PLC、CNC、机械手、RFID标签读写器、打标机、分布式远程IO模块、MES中控系统、AGV光通讯
  7. block的名词形式_block是什么意思_block在线翻译_英语_读音_用法_例句_海词词典
  8. html模块开发模板引擎,给开发者10款最佳的 JavaScript 模板引擎
  9. 什么是数据库存储过程?
  10. 页面关键词密度 和布局 ,内页
  11. 周日报名截止,翼支付杯大数据建模大赛16万大奖邀你来!!
  12. histogram loss笔记
  13. es6---Promise
  14. 亚马逊FBA箱子贴标有哪些要求
  15. XCode14 iOS16适配 pod签名
  16. C# MD5加密 解密
  17. HTML怎么像是下划线、穿越文字的横线以及上划线
  18. kstest 检验数据是否符合正态分布
  19. 220928工作日志
  20. android 软键盘的从属关系,Android控件属性大全

热门文章

  1. C++的引用一,求二次方根
  2. mybatis与spring集成
  3. 基于协同过滤算法的旅游推荐系统
  4. css 实现三个 div 等分排在一行
  5. hiberfil.sys和swapfile.sys文件的删除
  6. 关于debug调试在Controller中形参PageWeb<T>(即分页封装泛型)的pageNum,pageSize赋值问题
  7. 适合游戏视频剪辑CPU排行榜,cpu天梯图
  8. android模拟拍照,Android调用系统相机拍照,并且模仿实现水印相机简单功能
  9. 若依ruoyi框架整合magic-api快速开发
  10. java工程师考试要求_java初级工程师考试内容