SSD-Tensorflow学习
来源:互联网 发布:java 网店系统 手机 编辑:程序博客网 时间:2024/06/05 08:41
SSD简单相关介绍
对于SSD,SSD(SSD: Single Shot MultiBox Detector)是采用单个深度神经网络模型实现目标检测和识别的方法。该方法是综合了Faster R-CNN的anchor box和YOLO单个神经网络检测思路,从而既有Faster R-CNN的准确率又有YOLO的检测速度,可以实现高准确率实时检测。本文解析的是SSD的tensorflow实现源码,来源balancap/SSD-Tensorflow
其性能表现如下:
Model Training data Testing data mAP FPS
SSD-300 VGG-based VOC07+12 trainval VOC07 test 0.778 -
SSD-300 VGG-based VOC07+12+COCO trainval VOC07 test 0.817 -
SSD-512 VGG-based VOC07+12+COCO trainval VOC07 test 0.837 -
更多关于SSD网络关键源码解析
本文目标
1、可以将github上SSD-Tensorflow作者源码例子跑起来。
2、对SSD-Tensorflow加深认识
1、开始配置环境
博主大人所用环境:
- ubuntu 16.04
- python3.5
- opencv3.3
- tensorflow1.3
- cuda8.0
- cudnn6
- 等等
Tensorflow的安装有点麻烦,安装方法官网有详细介绍。
这里想简单说一下:
1、先按官网要求安装好依赖环境,如
$ sudo apt-get install python-pip python-dev python-virtualenv # for Python 2.7 $ sudo apt-get install python3-pip python3-dev python-virtualenv # for Python 3.n
基本上就是需要啥安装啥。
2、通过pip安装
$ pip install tensorflow # Python 2.7; CPU support (no GPU support)$ pip3 install tensorflow # Python 3.n; CPU support (no GPU support)$ pip install tensorflow-gpu # Python 2.7; GPU support$ pip3 install tensorflow-gpu # Python 3.n; GPU support
这个安装方法一般都是漫长的,而且本人在安装过程中中断几次(网络原因),所以我采用了其他方法。
3、通过源码安装
$ git clone https://github.com/tensorflow/tensorflow
接下来按照官网给出的步骤进行安装。
4、是的,还有一种方法,先将tensorflow的pip安装包下载下来,安装包地址
下载下来再进行安装就快多了。
其他环境的配置就不提了。
2、跑起来
如果一切都准备好了,那么就可以开始下载SSD-Tensorflow源码了。
官网Readme上提的SSD minimal example是用jupyter 写的,我们可以将其转为python,最简单的方法就是复制过来就可以了。
路径:
/notebooks/ssd_notebook.ipynb
上图是直接用简单编辑器(gedit)打开,崩溃了,很乱,怎么办,安装一个jupyer编辑器(或者在官网上打开该文件),打开就好看了,既然已经可以在jupyer上打开为什么还要转成.py文件呢?
当然因为python文件方便我们改写,jupyer需要一块一块执行。
官网直接查看ssd_notebook.ipynb:
代码块:
# Test on some demo image and visualize output.path = '../demo/'image_names = sorted(os.listdir(path))img = mpimg.imread(path + image_names[-5])rclasses, rscores, rbboxes = process_image(img)# visualization.bboxes_draw_on_img(img, rclasses, rscores, rbboxes, visualization.colors_plasma)visualization.plt_bboxes(img, rclasses, rscores, rbboxes)
从路径path中读取一张进行识别。结果如下:
识别结果对应的类名为:
class_lable = [ 'none', 'aeroplane', 'bicycle',#2 'bird', 'boat', 'bottle', 'bus', 'car',#7 'cat', 'chair', 'cow', 'diningtable', 'dog',#12 'horse', 'motorbike', 'person',#15 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor', 'total',]
这张图片原图是
如果想测试其他图片,可以改一下图片路径。
如果想实时检测视频(做了跳帧)中的物体。可以做如下修改:
t = 0cap = cv2.VideoCapture("../demo/nomal.avi")while(1): t = t+1 # get a frame ret, frame = cap.read() # show a frame #cv2.imshow("capture", frame) #img = mpimg.imread(path + image_names[-2]) if t <= 5: continue t = 0 b, g, r = cv2.split(frame) img = cv2.merge([r,g,b]) #img = frame rclasses, rscores, rbboxes = process_image(img) visualization.bboxes_draw_on_img(img, rclasses, rscores, rbboxes, visualization.colors_plasma) r, g, b = cv2.split(img) img2 = cv2.merge([b,g,r]) cv2.imshow("capture", img2) #visualization.plt_bboxes(img, rclasses, rscores, rbboxes) if cv2.waitKey(100) & 0xFF == ord('q'): breakcap.release()cv2.destroyAllWindows()
这是识别已经录制好的视频,如果是实时拍摄的画面,则需要再改改。
- SSD-Tensorflow学习
- ssd-tensorflow实现
- SSD-Tensorflow训练总结
- tensorflow版SSD使用经验
- tensorflow ssd mobilenet模型训练
- Mac跑tensorflow版SSD
- SSD:TensorFlow中的单次多重检测器
- SSD Tensorflow:InvalidArgumentError: about bounding box coordinates
- JETSON TX2安装caffe-SSD、tensorflow
- SSD的学习笔记
- 深度学习SSD学习记录
- SSD MultiBoxLossLayer代码学习记录
- 深度学习论文笔记:SSD
- SSD论文学习总结一
- 深度学习caffe-SSD配置
- SSD: Single Shot MultiBox Detector in TensorFlow(翻译)
- 转载SSD和yolo代码解析(tensorflow版)
- Tensorflow-SSD测试及训练自己的数据集
- 一篇文章解读提速、降费黑科技:PCDN定义、功能、架构、场景和优势
- Logstash学习总结(二) INPUT应用实例1
- 解决Servlet存在却报ClassNotFound问题——jar包放入WEB/INF/lib 与 userLibrary引入的区别
- iOS 多次请求只执行一次
- 自定义view onLayout
- SSD-Tensorflow学习
- uSens凌感推出基于SLAM的移动端Inside-out位置追踪技术
- 大牛给计算机专业学生的7个建议
- Python起步之面向对象程序设计
- MMU和cache详解(TLB机制)
- 运算符重载(C++)2
- 2017(二)软件安装
- BZOJ 3732 Network —— 最小生成树 + 倍增LCA
- Java 结构体之 JavaStruct 使用教程<二> JavaStruct 用例分析