利用tensorFlow api 识别手术器械
目录
- 前言
- 一、下载coco-trained models:
- 二、数据集的处理
- 三、修改pipeline.config文件
- 四、训练
- 五、保存节点pb
- 六、生成pbtxt文件,opencv调用需要
- 七、测试图片
数据集来源:18岁NIPS Workshop一作,用目标检测评估手术技能点
Tensorflow-model:(选中master,点击tag选择和自己tensorflow适配的版本)
https://github.com/tensorflow/models/
包含手术器械数据集及tensorflow-model所需文件
链接: https://pan.baidu.com/s/1eaUsVQEz0-SK_ADJDhw2Ng
提取码:nj4x
文件目录:
dataset\├─ssd_mobilenet_v1_coco_2018_01_28├─faster_rcnn_resnet101_coco_2018_01_28├── checkpoint├── frozen_inference_graph.pb├── model.ckpt.data-00000-of-00001├── model.ckpt.index├── model.ckpt.meta├── pipeline.config├─output├─tf_text_data├─dataset_test.record├─dataset_train.record└─dataset_val.record├─tf_text_graph├─tf_text_graph_common.py├─tf_text_graph_faster_rcnn.py└─tf_text_graph_ssd.py└─VOCdevkit└─VOC2007├─Annotations├─ImageSets│ └─Main├─JPEGImages└─classfier.py
然后将其解压到tensorflow-model文件下即可。
前言
识别手术器械效果:
tensorflow-model的配置可自行百度。
一、下载coco-trained models:
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf1_detection_zoo.md
把下载的模型放到dataset文件夹中,例如:
faster_rcnn_resnet101_coco_2018_01_28.tar.gz
然后解压:
tar -vxf faster_rcnn_resnet101_coco_2018_01_28.tar.gz -C .
生成faster_rcnn_resnet101_coco_2018_01_28文件夹目录
faster_rcnn_resnet101_coco_2018_01_28/
├── checkpoint
├── frozen_inference_graph.pb
├── model.ckpt.data-00000-of-00001
├── model.ckpt.index
├── model.ckpt.meta
├── pipeline.config
└── saved_model├── saved_model.pb└── variables
将里面的pipeline.config复制到dataset文件夹中,并按照本文件夹的名字重新命名(这样的目的是为了规范,当你拥有很多个模型时就不会乱)
二、数据集的处理
1.将数据集放到JPEGImages文件夹中,xml标签文件放到Annotations文件夹中
2.执行:
python classfier.py
生成ImageSets/Main文件夹下的三个文件:test.txt ,train.txt,val.txt以及一个trainval.txt
3.修改dataset_label_map.pbtxt,有几类写几类,里面的标签必须和xml文件中的一致
4.cd到dataset目录,生成tfrecord,包括验证集,测试集和训练集
python ./create_dataset_tf_record.py --data_dir=./VOCdevkit --year=VOC2007 --label_map_path=./dataset_label_map.pbtxt --set=val --output_path=./tf_text_data/dataset_val.record
python ./create_dataset_tf_record.py --data_dir=./VOCdevkit --year=VOC2007 --label_map_path=./dataset_label_map.pbtxt --set=val --output_path=./tf_text_data/dataset_test.record
python ./create_dataset_tf_record.py --data_dir=./VOCdevkit --year=VOC2007 --label_map_path=./dataset_label_map.pbtxt --set=train --output_path=./tf_text_data/dataset_train.record
三、修改pipeline.config文件
cd到下载模型文件中,可以看到pipeline.config
总共包括五个部分:
1.model:
主要修改:num_classes(分类的类别数)image_resizer {fixed_shape_resizer {height: 300width: 300 (输入网络图像的大小尺寸,一般默认)}
}
2.train_config:
主要修改:
batch_size: 64(按照电脑的配置来定)##################################################################################### 如果使用faster-rcnn,batch_size只能设为1 ##########################################################################################initial_learning_rate: 0.0023(初始学习率,可以自己调节)
decay_steps: 600(每多少个steps变化一次学习率)
decay_factor: 0.96(每次变化的学习率:current_learning_rate = decay_factor*initial_learning_rate)
num_steps: 50000(训练的次数)
fine_tune_checkpoint: "#####/output/model.ckpt-18508"(迁移学习的模型文件)
3.train_input_reader:
tf_record_input_reader {input_path: "#####/tf_text_data/dataset_train.record"(训练集的位置)
}
label_map_path: "#####/dataset_label_map.pbtxt"(标签的定义文件)
4.eval_config:
metrics_set:"coco_detection_metrics"(测量的方式,主要是用mAP来度量)num_examples: 300(验证集的数量)max_evals: 1(验证的循环次数)use_moving_averages:false(采用滑动平均)
5.eval_input_reader:
tf_record_input_reader {input_path: "#####/tf_text_data/dataset_val.record"(验证集的位置)}label_map_path: "#####/dataset_label_map.pbtxt"(标签的定义文件)
四、训练
对于ssd:
python ../research/object_detection/legacy/train.py --logtostderr --train_dir=./output --pipeline_config_path=./ssd_mobilenet_v1_coco_2018_01_28/pipeline.config
对于faster-rcnn:
python ../research/object_detection/legacy/train.py --logtostderr --train_dir=./output --pipeline_config_path=./faster_rcnn_resnet101_coco_2018_01_28/pipeline.config
五、保存节点pb
ssd算法:
python ../research/object_detection/export_inference_graph.py input_type image_tensor --pipeline_config_path ./ssd_mobilenet_v1_coco_2018_01_28/pipeline.config --trained_checkpoint_prefix ./output/model.ckpt-50000 --output_directory ./output
faster-rcnn算法:
python ../research/object_detection/export_inference_graph.py input_type image_tensor --pipeline_config_path ./faster_rcnn_resnet101_coco_2018_01_28/pipeline.config --trained_checkpoint_prefix ./output/model.ckpt-0 --output_directory ./output
六、生成pbtxt文件,opencv调用需要
生成pbtxt的py文件位于opencv源码文件/samples/dnn中
地址:
https://github.com/opencv/opencv/tree/4.5.2/samples/dnn/tf_text_graph_ssd.py
OpenCV调用示例:https://github.com/opencv/opencv/blob/4.5.2/samples/dnn/object_detection.cpp
python ./tf_text_graph/tf_text_graph_ssd.py --input=./output/frozen_inference_graph.pb --output=./output/frozen_inference_graph.pbtxt --config=./ssd_mobilenet_v1_coco_2018_01_28/pipeline.config
七、测试图片
打开object_detection_test.py
文件,修改:
模型位置:
MODEL_NAME = './output'
模型名
PATH_TO_CKPT = MODEL_NAME + '/frozen_inference_graph.pb'
模型标签文件
PATH_TO_LABELS = './dataset_label_map.pbtxt'
类别数
NUM_CLASSES = 7
python ./object_detection_test.py --image ./VOCdevkit/VOC2007/JPEGImages/v03_062250.jpg
或者:
python ./object_detection_test.py --data ./VOCdevkit/VOC2007/ImageSets/Main/val.txt
利用tensorFlow api 识别手术器械相关推荐
- python识别图像中的物体_python爬虫-利用百度api识别照片中的物体
我会了,您呢 开门见山,我直接开始了,这真的只是体验课,不值得我体验一整天的时间,我花了半小时. 基础不需要,会认字就行.软件:pycharm,py3.x/py2.x,两个都行,我用的3. 需要自己有 ...
- 利用tensorflow.js在线实现图像要素识别提取
什么是Tensorflow.js? TensorFlow.js是一个开源的基于硬件加速的JavaScript库,用于训练和部署机器学习模型.谷歌推出的第一个基于TensorFlow的前端深度学习框架T ...
- 利用百度人脸识别API,实现人脸登陆JavaWeb
JavaWeb利用百度API实现人脸登陆功能 笔者的完整项目 1,在百度云注册人脸库 2,引入必要的包 3,编写java代码 4,介绍对人脸库的增删改查功能 5,该功能加入到我的项目 (1),界面展示 ...
- 利用TensorFlow搭建CNN,DNN网络实现图像手写识别,总结。
利用TensorFlow搭建CNN,DNN网络实现图像手写识别,总结. 摘要 一.神经网络与卷积网络的对比 1.数据处理 2.对获取到的数据进行归一化和独热编码 二.开始我们的tensorflow神经 ...
- 利用百度人脸识别API和pyqt5实现基于人脸识别的可视化课堂签到管理系统
利用百度人脸识别API和pyqt5实现基于人脸识别的可视化课堂签到管理系统 一.项目介绍 基于人脸识别的课堂签到管理系统 二.概要设计 工程项目:基于人脸识别的课堂签到管理系统 分为:三个阶段 1.定 ...
- Python 利用百度文字识别 API 识别并提取图片中文字
Python 利用百度文字识别 API 识别并提取图片中文字 利用百度 AI 开发平台的 OCR 文字识别 API 识别并提取图片中的文字.首先需注册获取 API 调用的 ID 和 key,步骤如下: ...
- TensorFlow笔记(3)——利用TensorFlow和MNIST数据集训练一个最简单的手写数字识别模型...
前言 当我们开始学习编程的时候,第一件事往往是学习打印"Hello World".就好比编程入门有Hello World,机器学习入门有MNIST. MNIST是一个入门级的计算机 ...
- 动动手,用TensorFlow API训练出自己的目标检测模型
TensorFlow内包含了一个强大的物体检测API,我们可以利用这API来训练自己的数据集实现特殊的目标检测. Dat Tran就分享了自己实现可爱的浣熊检测器的经历,在文章中作者把检测器的训练流程 ...
- 利用Tensorflow构建RNN并对序列数据进行建模
利用Tensorflow构建RNN并对序列数据进行建模 对文本处理处理任务的方法中,一般将TF-IDF向量作为特征输入.显然的缺陷是:这种方法丢失了输入的文本序列中每个单词的顺序. 对一般的前馈神经网 ...
- 利用TensorFlow和神经网络来处理文本分类问题
利用TensorFlow和神经网络来处理文本分类问题 By 机器之心2017年8月23日 10:33 在这篇文章中,机器之心海外分析师对Medium(链接见文后)上的一篇热门博客进行了介绍,讨论了六个 ...
最新文章
- HTML5开发 桌面提醒功能
- jQueryHTMLCSS3实现垂直手风琴折叠菜单方法讲解
- django批量修改table_django-formset实现数据表的批量操作
- html中图片路径的几种使用方式
- 手动实现一门图灵完备的编程语言——Brainfuck
- AutoRunner自动化测试工具下载地址及安装步骤-泽众云测试
- x-code中蓝色文件夹和绿色文件夹的区别
- delphi低级键盘钩子(delphi2009测试通过)
- ︰【】奥立诚生物科技 奥立诚生物科技研发的华龙6号蜈蚣 成养殖行业的亮点
- JAVA API (application programming interface)
- 循环神经网络--RNN GRU LSTM 对比分析
- 软件工程师考试(中级)大纲
- 改用Hamibot-艳云脚本云控系统
- 福特汉姆大学计算机科学专业,Fordham的Computer and Information Science「福特汉姆大学计算机与信息科学系」...
- 解析rosbag数据并使用websocket发送到客户端
- 网易互娱动效设计师 | 游戏动效与美术特效的区别
- 解决Keepalived主备都含有VIP
- python并发编程_《Python》并发编程
- 解决[W pthreadpool-cpp.cc:90] Warning: Leaking Caffe2 thread-pool after fork. (function pthreadpool)
- java case 的错误_关于java:switch case语句错误:case表达式必须是常量表达式
热门文章
- 面试被问如何保证缓存与数据库的双写一致性?这篇帮你搞定
- IDEA拉取GitLab代码出现Git Pull failed remote: HTTP Basic: Access denied
- window2008 、 oracle11.2g 无法imp,dmp。
- 安卓开发学习笔记—————《Anroid编程权威指南》第六章 Android编程与兼容性问题...
- SpringMVC环境搭建——HelloWorld
- 全球网速最快的地方在哪里?中国固定宽带网速增长超美国!
- vue插件开发练习--实用弹窗
- zabbix3.0.4导入中文模板后乱码问题处理
- 2013=726 整合,优化,利用自身资源。 让自己的时间更有意义,最大化利用
- nullnullvc中加花