SSD-Tensorflow学习

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编辑器打开图
上图是直接用简单编辑器(gedit)打开,崩溃了,很乱,怎么办,安装一个jupyer编辑器(或者在官网上打开该文件),打开就好看了,既然已经可以在jupyer上打开为什么还要转成.py文件呢?
当然因为python文件方便我们改写,jupyer需要一块一块执行。
官网直接查看ssd_notebook.ipynb:
jupyer编辑器打开图
代码块:

# 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 = 0

cap = 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'):
        break
cap.release()
cv2.destroyAllWindows() 

这是识别已经录制好的视频,如果是实时拍摄的画面,则需要再改改。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

blacklong28

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值