目录

  • 前言
  • 一、下载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 识别手术器械相关推荐

  1. python识别图像中的物体_python爬虫-利用百度api识别照片中的物体

    我会了,您呢 开门见山,我直接开始了,这真的只是体验课,不值得我体验一整天的时间,我花了半小时. 基础不需要,会认字就行.软件:pycharm,py3.x/py2.x,两个都行,我用的3. 需要自己有 ...

  2. 利用tensorflow.js在线实现图像要素识别提取

    什么是Tensorflow.js? TensorFlow.js是一个开源的基于硬件加速的JavaScript库,用于训练和部署机器学习模型.谷歌推出的第一个基于TensorFlow的前端深度学习框架T ...

  3. 利用百度人脸识别API,实现人脸登陆JavaWeb

    JavaWeb利用百度API实现人脸登陆功能 笔者的完整项目 1,在百度云注册人脸库 2,引入必要的包 3,编写java代码 4,介绍对人脸库的增删改查功能 5,该功能加入到我的项目 (1),界面展示 ...

  4. 利用TensorFlow搭建CNN,DNN网络实现图像手写识别,总结。

    利用TensorFlow搭建CNN,DNN网络实现图像手写识别,总结. 摘要 一.神经网络与卷积网络的对比 1.数据处理 2.对获取到的数据进行归一化和独热编码 二.开始我们的tensorflow神经 ...

  5. 利用百度人脸识别API和pyqt5实现基于人脸识别的可视化课堂签到管理系统

    利用百度人脸识别API和pyqt5实现基于人脸识别的可视化课堂签到管理系统 一.项目介绍 基于人脸识别的课堂签到管理系统 二.概要设计 工程项目:基于人脸识别的课堂签到管理系统 分为:三个阶段 1.定 ...

  6. Python 利用百度文字识别 API 识别并提取图片中文字

    Python 利用百度文字识别 API 识别并提取图片中文字 利用百度 AI 开发平台的 OCR 文字识别 API 识别并提取图片中的文字.首先需注册获取 API 调用的 ID 和 key,步骤如下: ...

  7. TensorFlow笔记(3)——利用TensorFlow和MNIST数据集训练一个最简单的手写数字识别模型...

    前言 当我们开始学习编程的时候,第一件事往往是学习打印"Hello World".就好比编程入门有Hello World,机器学习入门有MNIST. MNIST是一个入门级的计算机 ...

  8. 动动手,用TensorFlow API训练出自己的目标检测模型

    TensorFlow内包含了一个强大的物体检测API,我们可以利用这API来训练自己的数据集实现特殊的目标检测. Dat Tran就分享了自己实现可爱的浣熊检测器的经历,在文章中作者把检测器的训练流程 ...

  9. 利用Tensorflow构建RNN并对序列数据进行建模

    利用Tensorflow构建RNN并对序列数据进行建模 对文本处理处理任务的方法中,一般将TF-IDF向量作为特征输入.显然的缺陷是:这种方法丢失了输入的文本序列中每个单词的顺序. 对一般的前馈神经网 ...

  10. 利用TensorFlow和神经网络来处理文本分类问题

    利用TensorFlow和神经网络来处理文本分类问题 By 机器之心2017年8月23日 10:33 在这篇文章中,机器之心海外分析师对Medium(链接见文后)上的一篇热门博客进行了介绍,讨论了六个 ...

最新文章

  1. HTML5开发 桌面提醒功能
  2. jQueryHTMLCSS3实现垂直手风琴折叠菜单方法讲解
  3. django批量修改table_django-formset实现数据表的批量操作
  4. html中图片路径的几种使用方式
  5. 手动实现一门图灵完备的编程语言——Brainfuck
  6. AutoRunner自动化测试工具下载地址及安装步骤-泽众云测试
  7. x-code中蓝色文件夹和绿色文件夹的区别
  8. delphi低级键盘钩子(delphi2009测试通过)
  9. ︰【】奥立诚生物科技 奥立诚生物科技研发的华龙6号蜈蚣 成养殖行业的亮点
  10. JAVA API (application programming interface)
  11. 循环神经网络--RNN GRU LSTM 对比分析
  12. 软件工程师考试(中级)大纲
  13. 改用Hamibot-艳云脚本云控系统
  14. 福特汉姆大学计算机科学专业,Fordham的Computer and Information Science「福特汉姆大学计算机与信息科学系」...
  15. 解析rosbag数据并使用websocket发送到客户端
  16. 网易互娱动效设计师 | 游戏动效与美术特效的区别
  17. 解决Keepalived主备都含有VIP
  18. python并发编程_《Python》并发编程
  19. 解决[W pthreadpool-cpp.cc:90] Warning: Leaking Caffe2 thread-pool after fork. (function pthreadpool)
  20. java case 的错误_关于java:switch case语句错误:case表达式必须是常量表达式

热门文章

  1. 面试被问如何保证缓存与数据库的双写一致性?这篇帮你搞定
  2. IDEA拉取GitLab代码出现Git Pull failed remote: HTTP Basic: Access denied
  3. window2008 、 oracle11.2g 无法imp,dmp。
  4. 安卓开发学习笔记—————《Anroid编程权威指南》第六章 Android编程与兼容性问题...
  5. SpringMVC环境搭建——HelloWorld
  6. 全球网速最快的地方在哪里?中国固定宽带网速增长超美国!
  7. vue插件开发练习--实用弹窗
  8. zabbix3.0.4导入中文模板后乱码问题处理
  9. 2013=726 整合,优化,利用自身资源。 让自己的时间更有意义,最大化利用
  10. nullnullvc中加花