1 技术可行性分析:

Mask_RCNN是目前表现最好的模型之一,和GAN系列的vidvid 和NLP的BERT在我的经验里都是最好用的模型之一,但是今日碰到了一个问题就是生产环境没有GPU,面临怎么去部署的问题.. 备注:在训练环境中已经训练成功了~~能做到用640张样本达到可接受的分割效果.但是线上使用阿里云服务,GPU太贵了.需要尝试一下cpu,如果能达到1000ms内,就帮公司省点钱呗.毕竟不是实时性要求很高的应用.

1.1创建生产环境的日志:

下载了conda, 在.bashrc 添加conda.sh

conda create -n py3cpu python=3.6.2

pip install  numpy scipy Pillow cython matplotlib scikit-image keras==2.0.8   h5py  IPython
       pip install opencv-python imgaug

pip install tensorflow==1.4.0

conda和pip兼容性还是不错的.

进行model的推断模式.果然报错

Processing 1 images
image                    shape: (512, 512, 3)         min:    0.00000  max:  255.00000  uint8
molded_images            shape: (1, 512, 512, 3)      min: -123.70000  max:  151.10000  float64
image_metas              shape: (1, 15)               min:    0.00000  max:  512.00000  int64
anchors                  shape: (1, 65280, 4)         min:   -0.17712  max:    1.11450  float32
Traceback (most recent call last):
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1323, in _do_call
    return fn(*args)
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1302, in _run_fn
    status, run_metadata)
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/tensorflow/python/framework/errors_impl.py", line 473, in __exit__
    c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.InvalidArgumentError: indices[1] = 65343 is not in [0, 65280)
     [[Node: ROI/Gather_2 = Gather[Tindices=DT_INT32, Tparams=DT_FLOAT, validate_indices=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](ROI/strided_slice_6, ROI/strided_slice_7)]]

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/ubuntu/Documents/Mask_RCNN-master/samples/dish_food/test_model.py", line 118, in <module>
    ma.test(start_id=0, stop=632)
  File "/home/ubuntu/Documents/Mask_RCNN-master/samples/dish_food/test_model.py", line 90, in test
    results = model.detect(patch_resized_images, verbose=1)
  File "/home/ubuntu/Documents/Mask_RCNN-master/mrcnn/model.py", line 2479, in detect
    self.keras_model.predict([molded_images, image_metas, anchors], verbose=0)
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/keras/engine/training.py", line 1713, in predict
    verbose=verbose, steps=steps)
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/keras/engine/training.py", line 1269, in _predict_loop
    batch_outs = f(ins_batch)
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py", line 2273, in __call__
    **self.session_kwargs)
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 889, in run
    run_metadata_ptr)
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1120, in _run
    feed_dict_tensor, options, run_metadata)
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1317, in _do_run
    options, run_metadata)
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1336, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InvalidArgumentError: indices[1] = 65343 is not in [0, 65280)
     [[Node: ROI/Gather_2 = Gather[Tindices=DT_INT32, Tparams=DT_FLOAT, validate_indices=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](ROI/strided_slice_6, ROI/strided_slice_7)]]

Caused by op 'ROI/Gather_2', defined at:
  File "/home/ubuntu/Documents/Mask_RCNN-master/samples/dish_food/test_model.py", line 29, in <module>
    model_dir=MODEL_DIR)
  File "/home/ubuntu/Documents/Mask_RCNN-master/mrcnn/model.py", line 1824, in __init__
    self.keras_model = self.build(mode=mode, config=config)
  File "/home/ubuntu/Documents/Mask_RCNN-master/mrcnn/model.py", line 1948, in build
    config=config)([rpn_class, rpn_bbox, anchors])
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/keras/engine/topology.py", line 602, in __call__
    output = self.call(inputs, **kwargs)
  File "/home/ubuntu/Documents/Mask_RCNN-master/mrcnn/model.py", line 294, in call
    names=["pre_nms_anchors"])
  File "/home/ubuntu/Documents/Mask_RCNN-master/mrcnn/utils.py", line 826, in batch_slice
    output_slice = graph_fn(*inputs_slice)
  File "/home/ubuntu/Documents/Mask_RCNN-master/mrcnn/model.py", line 292, in <lambda>
    pre_nms_anchors = utils.batch_slice([anchors, ix], lambda a, x: tf.gather(a, x),
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/tensorflow/python/ops/array_ops.py", line 2486, in gather
    params, indices, validate_indices=validate_indices, name=name)
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/tensorflow/python/ops/gen_array_ops.py", line 1834, in gather
    validate_indices=validate_indices, name=name)
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper
    op_def=op_def)
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 2956, in create_op
    op_def=op_def)
  File "/home/ubuntu/anaconda3/envs/py3cpu/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 1470, in __init__
    self._traceback = self._graph._extract_stack()  # pylint: disable=protected-access

InvalidArgumentError (see above for traceback): indices[1] = 65343 is not in [0, 65280)
     [[Node: ROI/Gather_2 = Gather[Tindices=DT_INT32, Tparams=DT_FLOAT, validate_indices=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](ROI/strided_slice_6, ROI/strided_slice_7)]]

报错的是names=["pre_nms_anchors"]的tensor, 查api,知道了tf.gather是按照indices 获取数组新集合的.但是scores的top 6000的indices应该和anchors的indices的范围应该是一致的才对.

需要进一步进行tensor的debug.

关于Mask_RCNN的工程化应用cpu服务器部署日记(一)相关推荐

  1. 【20210402期AI简报】TensorFlow-YOLOv3 从本地训练到服务器部署全过程

    导读:本期为 AI 简报 20210402 期,将为您带来 8 条相关新闻,明日寒食节~ 记得有一期有小伙伴留言说需要手势识别相关,本期它来啦~ 本文一共 2200 字,通篇阅读结束需要 5~7 分钟 ...

  2. MED-V服务器部署,MED-V服务器系列之一

    MED-V服务器部署 [IT168  专稿]微软在2009年4月份发布的MDOP2009中终于提供了MED-V的正式版本.MED-V是 Microsoft  Enterprise Desktop Vi ...

  3. 一步步实现SDDC--多角色服务器部署

    实验摘要: 1>创建一台虚拟机 2>虚拟机安装VMware Tools(针对Windows操作系统) 正文: 通过之前的两篇文字,相信各位已经了解ESXI服务器的部署和基本配置. 在今天的 ...

  4. HappyAA服务器部署笔记1(nginx+tomcat的安装与配置)

    这是本人的服务器部署笔记.文章名称叫"部署笔记1"的原因是之后我对这个进行了改进之后,会有"部署笔记2","部署笔记3"...循序渐进,估计 ...

  5. Linux服务器部署常用命令

    Linux命令大全 前言 在日常开发中我们会做一些服务器部署的工作,对于开发来说,运维部署并不是我们的专项:有些命令不是经常使用,很快就会忘记:在这总结一下日常部署时常用的一些运维命令. 文件操作 t ...

  6. 国内首款 FPGA 云服务器,性能是通用 CPU 服务器 30 倍以上

    2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文由薛梁 原创文章,转载请注明出处:  文章原文链接:https://www.qcloud.com/communi ...

  7. Linux 时间一致性环境NTP/Chrony服务器部署配置

    一.背景 生产环境中,一个业务系统往往涉及几十台甚至上百台主机或云主机构成,有些管理系统对整个环境时间一致性由强要求,即使没有,保证环境中时间的一致性,有利于业务交互时时间匹配,保证事务的一致性,甚至 ...

  8. 华为云鲲鹏服务器部署文档--java微服务

    华为云鲲鹏服务器部署文档 河南中电高科计算机技术有限公司 2020.5.9 适用于java微服务技术栈. CentOS 7.6 64bit ISO 适用于鲲鹏服务器arm架构的CentOS 7.6.1 ...

  9. 华为云鲲鹏服务器部署文档-修正版-CentOS+java微服务开发

    华为云鲲鹏服务器部署文档 河南中电高科计算机技术有限公司 http://www.ceht.com.cn 2020.5.12 适用于java微服务开发运行基础软件环境部署,实测通过. CentOS 7. ...

最新文章

  1. python windows错误码
  2. java ror框架搭建_ROR 环境的 搭建
  3. python知识:几个排序算法的python实现
  4. Android分享功能,微博、QQ、QQ空间等社交平台分享之入门与进阶
  5. ELF Format 笔记(七)—— 符号表
  6. 转-《高性能mysql》并不是一本好书——SQL笔记
  7. 数据库2.1.1mysql的特点
  8. 粤嵌gec6818项目设计_西安市幸福林带景观及亮化设计国际竞赛终期评审会顺利举行...
  9. 俞敏洪:新东方业务调整 为农村孩子捐献近八万套课桌椅
  10. JavaScript学习(十五)—内部样式与外部样式的修改与设置
  11. 行为型设计模式(4)—— 观察者模式(Observer Pattern)
  12. LightSpeed ORM .NET简单运用
  13. 关于rtx 2009 远程控制插件 下载的问题
  14. 线性方程组(四)- 矩阵方程
  15. html怎么设置img样式,css默认样式 css中img默认样式问题
  16. 基于单片机的条形码扫描系统设计
  17. DataPipeline丨LinkedIn元数据之旅的最新进展—Data Hub
  18. 知网的html查重报告看不了,知网查重报告单怎么看
  19. 瞎姬霸写之为什么我的生活越来越没意思
  20. 关于上拉电阻和下拉电阻的作用

热门文章

  1. Android 下载不同版本的platform-tools
  2. 如何使用vue-cli来搭建vue项目?详细步骤跟着我来吧!
  3. {我喜欢你,就像喜欢当时的自己。}---《那些年,我们一起追的女孩》影评。(By:Janice)
  4. Nice, 我用AI给表情包分门别类
  5. 几款语音转文字神器,玩转录音转文字,工作学习效率提升300%
  6. 使用Three.js的炫酷无限管道特效
  7. iproute2工具详解
  8. 直播触及天花板,营收超预期的陌陌可能到了最危险的时刻
  9. Ubuntu系统命令行查看环境变量
  10. JAVA仓库管理系统