范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

tensorflow模型导出与OpenCVDNN中使用

  OpenCV DNN模块
  Deep Neural Network - DNN 是OpenCV中的深度神经网络模块,支持基于深度学习模块前馈网络运行、实现图像与视频场景中的图像分类对象检测图像分割
  其模型导入与加载的相关API支持以下深度学习框架tensorflow - readNetFromTensorflow
  caffe - readNetFromCaffe
  pytorch - readNetFromTorch
  darknet - readNetFromDarknet
  OpenCV3.4.1以上版本支持tensorflow1.11版本以上的对象检测框架(object detetion)模型导出使用,当前支持的模型包括以下:
  也就是说通过tensorflow object detection API框架进行迁移学习训练模型,导出预测图之后,可以通过OpenCV3.4.1以上版本提供几个python脚本导出graph配置文件,然后就可以在OpenCV DNN模块中使用tensorflow相关的模型了。感觉十分方便,下面就按照操作走一波!使用tensorflow模型
  根据tensorflow中迁移学习或者下载预训练模型不同,OpenCV DNN 模块提供如下可以使用脚本生成对应的模型配置文件tf_text_graph_ssd.py
  tf_text_graph_faster_rcnn.py
  tf_text_graph_mask_rcnn.py
  这是因为,OpenCV DNN需要根据text版本的模型描述文件来解析tensorflow的pb文件,实现网络模型加载。对SSD对象检测模型,生成模型描述文件运行以下命令行即可(在一行执行 ):python tf_text_graph_ssd.py
  --input /path/to/model.pb
  --config /path/to/example.config
  --output /path/to/graph.pbtxt
  以MobileNet-SSD v2版本为例,首先下载该模型,解压缩以后会发现里面有一个frozen_inference_graph.pb文件,使用tensorflow加载预测图进行预测的代码如下:import tensorflow as tf import cv2 as cv  # Read the graph. model_dir = "D:/tensorflow/ssd_mobilenet_v2_coco_2018_03_29/frozen_inference_graph.pb" with tf.gfile.FastGFile(model_dir, "rb") as f:     graph_def = tf.GraphDef()     graph_def.ParseFromString(f.read())  with tf.Session() as sess:     # Restore session     sess.graph.as_default()     tf.import_graph_def(graph_def, name="")      # Read and preprocess an image.     img = cv.imread("D:/images/objects.jpg")     rows = img.shape[0]     cols = img.shape[1]     inp = cv.resize(img, (300, 300))     inp = inp[:, :, [2, 1, 0]]  # BGR2RGB      # Run the model     out = sess.run([sess.graph.get_tensor_by_name("num_detections:0"),                     sess.graph.get_tensor_by_name("detection_scores:0"),                     sess.graph.get_tensor_by_name("detection_boxes:0"),                     sess.graph.get_tensor_by_name("detection_classes:0")],                    feed_dict={"image_tensor:0": inp.reshape(1, inp.shape[0], inp.shape[1], 3)})      # Visualize detected bounding boxes.     num_detections = int(out[0][0])     for i in range(num_detections):         classId = int(out[3][0][i])         score = float(out[1][0][i])         bbox = [float(v) for v in out[2][0][i]]         if score > 0.3:             x = bbox[1] * cols             y = bbox[0] * rows             right = bbox[3] * cols             bottom = bbox[2] * rows             cv.rectangle(img, (int(x), int(y)), (int(right), int(bottom)), (125, 255, 51), thickness=2)  cv.imshow("TensorFlow MobileNet-SSD", img) cv.waitKey()
  运行结果如下:
  基于frozen_inference_graph.pb生成graph.pbtxt模型配置文件,命令行运行截图如下:
  使用OpenCV DNN模块加载tensorflow模型(frozen_inference_graph.pb与graph.pbtxt),实现预测图使用的代码如下(注意此时不需要依赖tensorflow):import cv2 as cv  model_path = "D:/tensorflow/ssd_mobilenet_v2_coco_2018_03_29/frozen_inference_graph.pb" config_path = "D:/tensorflow/ssd_mobilenet_v2_coco_2018_03_29/graph.pbtxt" net = cv.dnn.readNetFromTensorflow(model_path, config_path)  frame = cv.imread("D:/images/objects.jpg") rows = frame.shape[0] cols = frame.shape[1] net.setInput(cv.dnn.blobFromImage(frame, size=(300, 300), swapRB=True, crop=False)) cvOut = net.forward() print(cvOut) for detection in cvOut[0,0,:,:]:     score = float(detection[2])     if score > 0.3:         left = detection[3] * cols         top = detection[4] * rows         right = detection[5] * cols         bottom = detection[6] * rows         cv.rectangle(frame, (int(left), int(top)), (int(right), int(bottom)), (23, 230, 210), thickness=2)  cv.imshow("opencv-dnn-ssd-detect", frame) cv.waitKey()
  运行结果如下(跟tensorflow中的运行结果完全一致,OpenCV DNN果然靠谱 ):
  OpenCV DNN 行人检测
  本人尝试了基于tensorflow object detection API使用MobileNet-SSD v2迁移学习实现自定义数据集训练,导出预测图之后,使用OpenCV DNN模块的python脚本生成对象的图配置文件graph.pbtxt,通过OpenCV加载模型使用,实时预测,最后上一张运行结果图:
  OpenCV DNN调用代码如下import cv2 as cv  inference_pb = "D:/pedestrian_data/export_pb/frozen_inference_graph.pb"; graph_text = "D:/pedestrian_data/export_pb/graph.pbtxt";  # load tensorflow model net = cv.dnn.readNetFromTensorflow(inference_pb, graph_text) image = cv.imread("D:/python/Pedestrian-Detection/test_images/3600.jpg") h = image.shape[0] w = image.shape[1]  # 获得所有层名称与索引 layerNames = net.getLayerNames() lastLayerId = net.getLayerId(layerNames[-1]) lastLayer = net.getLayer(lastLayerId) print(lastLayer.type)  # 检测 net.setInput(cv.dnn.blobFromImage(image, size=(300, 300), swapRB=True, crop=False)) cvOut = net.forward() for detection in cvOut[0,0,:,:]:     score = float(detection[2])     if score > 0.5:         left = detection[3]*w         top = detection[4]*h         right = detection[5]*w         bottom = detection[6]*h          # 绘制         cv.rectangle(image, (int(left), int(top)), (int(right), int(bottom)), (0, 255, 0), thickness=2)         cv.putText(image, "Pedestrian", (int(left), int(top-10)), cv.FONT_HERSHEY_PLAIN, 1.0, (0, 0, 255), 1)  cv.imshow("pedestrain_demo", image) cv.imwrite("D:/Pedestrian.png", image) cv.waitKey(0) cv.destroyAllWindows()
  本文转自 OpenCV学堂

被美国称为核弹级制裁的SWIFT到底是什么?一文读懂西方国家决定将特定俄罗斯银行逐出环球银行金融电信协会(SWIFT)支付系统,这是俄罗斯入侵乌克兰以来最严重的金融制。何谓SWIFT,加拿大广播公司(CBC)介绍如下何谓SWIFT?高通将AI塞入基带,骁龙X70发布,还有全球首个WiFi7芯片智东西(公众号zhidxcom)作者云鹏编辑心缘智东西3月1日消息,就在昨晚,高通在巴塞罗那MWC上发布了四款重磅新品及相关技术,包括骁龙X70调制解调器及射频系统WiFi和蓝牙连一个半月价格跳水2600?网友合约机还能更便宜,就是坑太多咱就说,是不是被叫做机皇的手机都喜欢跳水这项运动?三星喜欢跳水,谷歌也喜欢跳水。其中,搭载谷歌首款定制移动芯片Tensor的谷歌Pixel6,首发一个半月价格跳水2600!全球最大小米新机海外发布,比国内推迟半年价格还更贵,老外仍称赞良心小米手机海外官网宣布,旗下子品牌POCO正式推出X4ProM4Pro两款新机,拥有超高颜值外观和极致性价比。看完配置后网友却发现,这两款手机早就在国内市场发布,价格还要比海外版本更Python语言Django框架的简化视图1我们在用Django编程时,会发现,经常需要用到列表详情修改这些操作。这些操作几乎可以满足数据编辑的大部分要求。那能不能像YII2脚手架功能一样直接提供一个通用的模板类,只需指定北京市消协调查显示超八成受访者经历过大数据杀熟中新财经3月1日电3月1日,北京市消协发布的互联网消费大数据杀熟问题调查结果显示,有八成多(86。91)受访者有过被大数据杀熟的经历。网络购物中的大数据杀熟问题最多,其次是在线旅游三星请网红痞幼代言,结果被骂到删博,冤吗?互联网时代,流量格外引人注目。可谓是成也流量,败也流量,三星就是典型的例子。这段时间,三星邀请当红网红痞幼当代理人引起广大网友不满,声称拉低了三星品牌的档次,三星也是立即做出回应,让我来告诉你,华为麒麟芯片的前世今生最近这两年的时间里,华为公司被推上了中国人民谈论的高潮,源自美国政府对一个中国民营企业的连番制裁。从上个世纪开始,美国靠着工业革命和两次世界大战,迅速崛起,从而成为了世界上唯一的一小米12系列又有新成员售价仅有2000小米12系列目前已经有两款新机上市,大家都在期待着最顶配的12Ultra,但除了这款超大杯机型之外,小米12系列的一款入门新机近日也在网上出现了。xiaomiui。net带来了一款为啥中概互联类基金现在不能抄底?中概互联股票在1820年基本都是上涨数倍,有的甚至10倍,已经走完一波运作,伴随中国互联网红利耗尽,这些公司挖掘一个新客户耗费数百元,甚至给钱给用户去拉新用户,已经很难看到增量空间2022年3月买手机,牢记三不碰原则,大概率选到满意的机器导读2022年3月买手机,牢记三不碰原则,大概率选到满意的机器2022年买手机,牢记这三不碰原则,大概率可以选到满意的机器!第一低端手机处理器不碰购买手机的时候最好要选择同时期最新
北京十四五构建集成电路产业创新高地本报记者张伟在新形势下,北京如何突破关键核心技术,加大产业投资,加快人才培养,构建人才双创投资产业基地的优良生态系统,率先探索出一条富有中国特色的集成电路产业发展的突围之路?12月BIM的发展前景如何?bim毫无疑问是未来建筑发展的导向标,建筑信息化可以帮助建筑行业从劳动力密集型产业向以建筑产业化为基础的工业化发展,另外,建筑目前现有所有专业都可以和bim结合发展随着科技的发展,2021买入提升幸福感的十二件数码好物盘点再过几天就是2022了,这2021也过得太快了点吧又到一年一度写张大妈总结的时候了这一年感觉各行各业行情都比较低迷呀,我除了买了辆车外就没买过什么大件了,算是消费降级吧,能不买的尽写给摄像头小白的选购指南随着人们安防需求的日益增加,家用的室内摄像头目前已经成为人们家庭安防不可缺少的一部分。目前市面上,家用室内智能摄像头的种类繁多。非常多不同的品牌都加入了家用智能摄像头的行列当中。产小米12成功引爆2022第一场内卷,一加realme相继发声12月21日8点21分,雷军发出冬至感言。就是在小米12与MIUI13正式发布之前,谈了这一次小米12的理念等等。雷军这一公布不要紧,随后有好几个品牌都在这一天搞事情。联想因为雷军拼夕夕为了销量无视法律?99块能买2条中华烟,在玩火吗?最低的价格买到最多的东西,拼夕夕给大家的印象就是便宜!成立于2015年,通过给消费者质优价廉的印象迅速崛起,通过这几年的发展,拼夕夕已成为全国最大的电商平台!日常的活跃粉丝用户已经IPO观察炬光科技募资近半补血,商誉埋雷,华为哈勃突击入股西安炬光科技股份有限公司(以下简称炬光科技)近日公布更新后的招股说明书,拟公开发行新股2249万股,募资约10亿元。红星资本局从招股书发现,华为旗下哈勃投资曾于2020年9月参与公全球首发1英寸徕卡主摄R6后,夏普再推世界最轻5G手机AQUOSzero6AQUOSR6与徕卡联名,全球首发1英寸徕卡主摄R6采用一颗2020万像素1英寸的主摄,支持F1。9光圈与19mm等效焦距,其进光量非常大,暗处也能拍出清晰的照片继1英寸徕卡主摄R什么是IO控制器(InputOutput)?什么是IO控制器?由于CPU无法直接控制IO设备的机械部件,因此IO设备还要有个电子部件作为CPU和IO设备机械部件之间的中介,用于实现CPU对设备的控制,这个电子部件就是IO控制芯片需求强劲,美光科技第一财季营收76。87亿美元记者彭新编辑12月20日美股盘后,存储芯片大厂美光发布2022财年第一财季报告。财报显示,在截至12月2日的2022财年的第一财季,美光营收76。87亿美元,较上一财年同期的57。科技赋能智慧服务江苏银行加速数字化转型升级导语未来呼啸而来,当前银行业正积极推动数字化转型,让客户享受到更为精准便捷的服务,客户体验不断提升。头部城商行江苏银行就是一个例证。作为全球百强银行全国19家系统重要性银行之一,江