tensorflow C++ 调用maskrcnn和opencv4.11 调用maskrcnn

第一次写博客,主要想赚点积分(开篇点题,不好意思哈,不过你们不会亏的,有问题可以联系我,非常热心)

先说个大概,opencv是intel的所以不支持竞争对手的功能(nvidia的gpu),那个OPENCL选项其实是intel的核显,比cpu调用还慢,加速功能要自己写,没有gpu的可以用一下,速度在2s左右一张图片(1920x1200)。因为速度慢后期使用了tensorflow-gpu c++版,gtx1070 速度在0.18s左右一张图片(1920x1200)。

一、先说opencv调用的问题吧

    网上看了很多资料,很多最后都是调用官方模型(成功),为什么呢,因为调用自己的模型不成功,我开始也遇到这样的问题,一直以为是自己没按步骤或者疏漏了什么,最后发现是opencv自带的tf_text_graph_mask_rcnn.py不行,网上重新找了一个,在这之前还要对生成的pb模型转一下格式(ssd,faster,maskrcnn都需要),opencv 自带的tf_graph_**.py对ssd和faster有用,但对maskrcnn没用。

转格式的代码如下:

import tensorflow as tf
from tensorflow.tools.graph_transforms import TransformGraph

with tf.gfile.FastGFile(r'D:\train\train_cell_json\1028\pb\frozen_inference_graph.pb', 'rb') as f:
    graph_def = tf.GraphDef()
    graph_def.ParseFromString(f.read())
    #print(graph_def)
    graph_def = TransformGraph(graph_def, ['image_tensor'], ['detection_boxes', 'detection_classes', 'detection_scores', 'num_detections'], ['sort_by_execution_order'])
    with tf.gfile.FastGFile(r'D:\train\train_cell_json\1028\pb\data\frozen_inference_graph.pb', 'wb') as f:
        f.write(graph_def.SerializeToString())

print('finished')

前面的pb是训练后的模型,后一个pb是转格式后的模型

转换后就要生成pbtxt文件,opencv必备这里提供下载,使用方式与opencv自带转格式方式一致(出问题可以联系我,一般晚上有时间)下载地址:tf_text_graph_rcnn.py

总之第一步:对训练生成的pb模型又上面已贴出的代码,转形式。

       第二步:对转换形式后的pb调用   tf_text_graph_rcnn.py生成pbtxt,就可以使用opencv调用了   

tensorflow-gpu  c++调用在另一篇文章中https://blog.csdn.net/qq_39731633/article/details/104634507,后面都提供免费下载

发布了2 篇原创文章 · 获赞 0 · 访问量 120

猜你喜欢

转载自blog.csdn.net/qq_39731633/article/details/102794319