当前位置:
首页 >
Win10调试ssd_tensorflow的目标检测
发布时间:2025/3/15
91
豆豆
生活随笔
收集整理的这篇文章主要介绍了
Win10调试ssd_tensorflow的目标检测
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1、环境:win10+tensorflow-gpu==1.14.0
2、下载代码:到https://github.com/balancap/SSD-Tensorflow到本地
3、解压代码,并将checkpoints下的ssd_300_vgg.ckpt.zip进行解压在checkpoints目录下。否则后果不堪设想
4、如果你的电脑装有jupyter notebook.则将此SSD-Tensorflow文件复制在jupyter文件目录下,然后启动jupyter notebook。
打开notebooks下的ssd_notebook.ipynb文件,运行每个cell。
也可以将此ipynb下的所有代码复制在SSD_Tensorflow目录新建的ssd_python.py中,运行
也可以直接搜网上教程,新建py文件,复制代码,然后运行。
这个附上我复制的代码:(切记修改路径ckpt_file)
# coding: utf-8 # In[1]:import os import math import randomimport numpy as np import tensorflow as tf import cv2slim = tf.contrib.slim# In[2]: import matplotlib.pyplot as plt import matplotlib.image as mpimg# In[3]:import syssys.path.append('./')# In[4]:from nets import ssd_vgg_300, ssd_common, np_methods from preprocessing import ssd_vgg_preprocessing from notebooks import visualization# In[5]:# TensorFlow session: grow memory when needed. TF, DO NOT USE ALL MY GPU MEMORY!!! gpu_options = tf.GPUOptions(allow_growth=True) config = tf.ConfigProto(log_device_placement=False, gpu_options=gpu_options) isess = tf.InteractiveSession(config=config)# ## SSD 300 Model # # The SSD 300 network takes 300x300 image inputs. In order to feed any image, the latter is resize to this input shape (i.e.`Resize.WARP_RESIZE`). Note that even though it may change the ratio width / height, the SSD model performs well on resized images (and it is the default behaviour in the original Caffe implementation). # # SSD anchors correspond to the default bounding boxes encoded in the network. The SSD net output provides offset on the coordinates and dimensions of these anchors.# In[6]:# Input placeholder. net_shape = (300, 300) data_format = 'NHWC' img_input = tf.placeholder(tf.uint8, shape=(None, None, 3)) # Evaluation pre-processing: resize to SSD net shape. image_pre, labels_pre, bboxes_pre, bbox_img = ssd_vgg_preprocessing.preprocess_for_eval(img_input, None, None, net_shape, data_format, resize=ssd_vgg_preprocessing.Resize.WARP_RESIZE) image_4d = tf.expand_dims(image_pre, 0)# Define the SSD model. reuse = True if 'ssd_net' in locals() else None ssd_net = ssd_vgg_300.SSDNet() with slim.arg_scope(ssd_net.arg_scope(data_format=data_format)):predictions, localisations, _, _ = ssd_net.net(image_4d, is_training=False, reuse=reuse)# Restore SSD model. ckpt_filename = 'E:\gitcode\ssd\chde222-SSD-Tensorflow-master\SSD-Tensorflow\checkpoints/ssd_300_vgg.ckpt' # ckpt_filename = '../checkpoints/VGG_VOC0712_SSD_300x300_ft_iter_120000.ckpt' isess.run(tf.global_variables_initializer()) saver = tf.train.Saver() saver.restore(isess, ckpt_filename)# SSD default anchor boxes. ssd_anchors = ssd_net.anchors(net_shape)# ## Post-processing pipeline # # The SSD outputs need to be post-processed to provide proper detections. Namely, we follow these common steps: # # * Select boxes above a classification threshold; # * Clip boxes to the image shape; # * Apply the Non-Maximum-Selection algorithm: fuse together boxes whose Jaccard score > threshold; # * If necessary, resize bounding boxes to original image shape.# In[7]:# Main image processing routine. def process_image(img, select_threshold=0.5, nms_threshold=.45, net_shape=(300, 300)):# Run SSD network.rimg, rpredictions, rlocalisations, rbbox_img = isess.run([image_4d, predictions, localisations, bbox_img],feed_dict={img_input: img})# Get classes and bboxes from the net outputs.rclasses, rscores, rbboxes = np_methods.ssd_bboxes_select(rpredictions, rlocalisations, ssd_anchors,select_threshold=select_threshold, img_shape=net_shape, num_classes=21, decode=True)rbboxes = np_methods.bboxes_clip(rbbox_img, rbboxes)rclasses, rscores, rbboxes = np_methods.bboxes_sort(rclasses, rscores, rbboxes, top_k=400)rclasses, rscores, rbboxes = np_methods.bboxes_nms(rclasses, rscores, rbboxes, nms_threshold=nms_threshold)# Resize bboxes to original image shape. Note: useless for Resize.WARP!rbboxes = np_methods.bboxes_resize(rbbox_img, rbboxes)return rclasses, rscores, rbboxes# In[21]:# Test on some demo image and visualize output. path = 'E:/gitcode/ssd/chde222-SSD-Tensorflow-master/SSD-Tensorflow/demo/' image_names = sorted(os.listdir(path))img = mpimg.imread(path + image_names[-1]) 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)运行结果:
参考自https://blog.csdn.net/hezuo1181/article/details/91380182
总结
以上是生活随笔为你收集整理的Win10调试ssd_tensorflow的目标检测的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 百度贴吧发帖软件_贴吧自动发帖软件
- 下一篇: 目标检测之YOLO V2 V3