DL之SSD:基于tensorflow利用SSD算法实现目标检测(21类)

目录

输出结果

SSD代码


输出结果

VOC_LABELS = {'none': (0, 'Background'),'aeroplane': (1, 'Vehicle'),'bicycle': (2, 'Vehicle'),'bird': (3, 'Animal'),'boat': (4, 'Vehicle'),'bottle': (5, 'Indoor'),'bus': (6, 'Vehicle'),'car': (7, 'Vehicle'),'cat': (8, 'Animal'),'chair': (9, 'Indoor'),'cow': (10, 'Animal'),'diningtable': (11, 'Indoor'),'dog': (12, 'Animal'),'horse': (13, 'Animal'),'motorbike': (14, 'Vehicle'),'person': (15, 'Person'),'pottedplant': (16, 'Indoor'),'sheep': (17, 'Animal'),'sofa': (18, 'Indoor'),'train': (19, 'Vehicle'),'tvmonitor': (20, 'Indoor'),
}

SSD代码


class SSDNet(object):"""Implementation of the SSD VGG-based 300 network.The default features layers with 300x300 image input are:conv4 ==> 38 x 38conv7 ==> 19 x 19conv8 ==> 10 x 10conv9 ==> 5 x 5conv10 ==> 3 x 3conv11 ==> 1 x 1The default image size used to train this network is 300x300."""default_params = SSDParams(img_shape=(300, 300),num_classes=21,no_annotation_label=21,feat_layers=['block4', 'block7', 'block8', 'block9', 'block10', 'block11'],feat_shapes=[(38, 38), (19, 19), (10, 10), (5, 5), (3, 3), (1, 1)],anchor_size_bounds=[0.15, 0.90],# anchor_size_bounds=[0.20, 0.90],anchor_sizes=[(21., 45.),(45., 99.),(99., 153.),(153., 207.),(207., 261.),(261., 315.)],# anchor_sizes=[(30., 60.),#               (60., 111.),#               (111., 162.),#               (162., 213.),#               (213., 264.),#               (264., 315.)],anchor_ratios=[[2, .5],[2, .5, 3, 1./3],[2, .5, 3, 1./3],[2, .5, 3, 1./3],[2, .5],[2, .5]],anchor_steps=[8, 16, 32, 64, 100, 300],anchor_offset=0.5,normalizations=[20, -1, -1, -1, -1, -1],prior_scaling=[0.1, 0.1, 0.2, 0.2])def __init__(self, params=None):"""Init the SSD net with some parameters. Use the default onesif none provided."""if isinstance(params, SSDParams):self.params = paramselse:self.params = SSDNet.default_params# ======================================================================= #def net(self, inputs,is_training=True,update_feat_shapes=True,dropout_keep_prob=0.5,prediction_fn=slim.softmax,reuse=None,scope='ssd_300_vgg'):"""SSD network definition."""r = ssd_net(inputs,num_classes=self.params.num_classes,feat_layers=self.params.feat_layers,anchor_sizes=self.params.anchor_sizes,anchor_ratios=self.params.anchor_ratios,normalizations=self.params.normalizations,is_training=is_training,dropout_keep_prob=dropout_keep_prob,prediction_fn=prediction_fn,reuse=reuse,scope=scope)# Update feature shapes (try at least!)if update_feat_shapes:shapes = ssd_feat_shapes_from_net(r[0], self.params.feat_shapes)self.params = self.params._replace(feat_shapes=shapes)return rdef arg_scope(self, weight_decay=0.0005, data_format='NHWC'):"""Network arg_scope."""return ssd_arg_scope(weight_decay, data_format=data_format)def arg_scope_caffe(self, caffe_scope):"""Caffe arg_scope used for weights importing."""return ssd_arg_scope_caffe(caffe_scope)# ======================================================================= #def update_feature_shapes(self, predictions):"""Update feature shapes from predictions collection (Tensor or Numpyarray)."""shapes = ssd_feat_shapes_from_net(predictions, self.params.feat_shapes)self.params = self.params._replace(feat_shapes=shapes)def anchors(self, img_shape, dtype=np.float32):"""Compute the default anchor boxes, given an image shape."""return ssd_anchors_all_layers(img_shape,self.params.feat_shapes,self.params.anchor_sizes,self.params.anchor_ratios,self.params.anchor_steps,self.params.anchor_offset,dtype)def bboxes_encode(self, labels, bboxes, anchors,scope=None):"""Encode labels and bounding boxes."""return ssd_common.tf_ssd_bboxes_encode(labels, bboxes, anchors,self.params.num_classes,self.params.no_annotation_label,ignore_threshold=0.5,prior_scaling=self.params.prior_scaling,scope=scope)def bboxes_decode(self, feat_localizations, anchors,scope='ssd_bboxes_decode'):"""Encode labels and bounding boxes."""return ssd_common.tf_ssd_bboxes_decode(feat_localizations, anchors,prior_scaling=self.params.prior_scaling,scope=scope)def detected_bboxes(self, predictions, localisations,select_threshold=None, nms_threshold=0.5,clipping_bbox=None, top_k=400, keep_top_k=200):"""Get the detected bounding boxes from the SSD network output."""# Select top_k bboxes from predictions, and cliprscores, rbboxes = \ssd_common.tf_ssd_bboxes_select(predictions, localisations,select_threshold=select_threshold,num_classes=self.params.num_classes)rscores, rbboxes = \tfe.bboxes_sort(rscores, rbboxes, top_k=top_k)# Apply NMS algorithm.rscores, rbboxes = \tfe.bboxes_nms_batch(rscores, rbboxes,nms_threshold=nms_threshold,keep_top_k=keep_top_k)if clipping_bbox is not None:rbboxes = tfe.bboxes_clip(clipping_bbox, rbboxes)return rscores, rbboxesdef losses(self, logits, localisations,gclasses, glocalisations, gscores,match_threshold=0.5,negative_ratio=3.,alpha=1.,label_smoothing=0.,scope='ssd_losses'):"""Define the SSD network losses."""return ssd_losses(logits, localisations,gclasses, glocalisations, gscores,match_threshold=match_threshold,negative_ratio=negative_ratio,alpha=alpha,label_smoothing=label_smoothing,scope=scope)

DL之SSD:基于tensorflow利用SSD算法实现目标检测(21类)相关推荐

  1. DL之CNN可视化:利用SimpleConvNet算法【3层,im2col优化】基于mnist数据集训练并对卷积层输出进行可视化

    DL之CNN可视化:利用SimpleConvNet算法[3层,im2col优化]基于mnist数据集训练并对卷积层输出进行可视化 导读 利用SimpleConvNet算法基于mnist数据集训练并对卷 ...

  2. DL之RNN:人工智能为你写代码——基于TF利用RNN算法实现生成编程语言代码(C++语言)、训练测试过程全记录

    DL之RNN:基于TF利用RNN算法实现生成编程语言代码(C语言).训练&测试过程全记录 目录 输出结果 监控模型 训练&测试过程全记录 训练的数据集展示 输出结果 1.test01 ...

  3. DL之RNN:人工智能为你写周董歌词——基于TF利用RNN算法实现【机器为你作词】、训练测试过程全记录

    DL之RNN:人工智能为你写周董歌词--基于TF利用RNN算法实现~机器为你作词~.训练&测试过程全记录 目录 输出结果 模型监控 训练.测试过程全记录 训练的数据集 输出结果 1.test0 ...

  4. DL之RNN:人工智能为你写小说——基于TF利用RNN算法训练数据集(William Shakespeare的《Coriolanus》)替代你写英语小说短文、训练测试过程全记录

    DL之RNN:基于TF利用RNN算法训练数据集(William Shakespeare的<Coriolanus>)替代你写英语小说短文.测试过程全记录 目录 输出结果 监控模型 训练过程全 ...

  5. TF之LoR:基于tensorflow利用逻辑回归算LoR法实现手写数字图片识别提高准确率

    TF之LoR:基于tensorflow利用逻辑回归算LoR法实现手写数字图片识别提高准确率 目录 输出结果 设计代码 输出结果 设计代码 #TF之LoR:基于tensorflow实现手写数字图片识别准 ...

  6. ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性

    ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性 目录 输出结果 实现代码 输出结果 更新-- 实现代码 %RF:RF实现根据乳腺肿瘤特征 ...

  7. matlab切割肿瘤算法,ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性...

    ML之RF:基于Matlab利用RF算法实现根据乳腺肿瘤特征向量高精度(better)预测肿瘤的是恶性还是良性 目录 输出结果 实现代码 输出结果 更新-- 实现代码 %RF:RF实现根据乳腺肿瘤特征 ...

  8. 笔记《基于无人驾驶方程式赛车的传感器融合目标检测算法研究及实现》

    论文结构 关键字:无人驾驶方程式赛车,相机,激光雷达,目标检测,传感器融合 一.绪论 1. 感知技术研究现状 1.1.1 基于相机的目标检测技术研究现状 1.1.2 基于激光雷达的目标检测技术研究现状 ...

  9. 基于 TensorFlow 在手机端实现文档检测

    手机端运行卷积神经网络的一次实践 - 基于 TensorFlow 和 OpenCV 实现文档检测功能 1. 前言 本文不是神经网络或机器学习的入门教学,而是通过一个真实的产品案例,展示了在手机客户端上 ...

最新文章

  1. 数字图像处理:边缘检测(Edge detection)
  2. 【Django】@login_required用法简介
  3. 【渝粤教育】国家开放大学2018年春季 0269-22T文学概论 参考试题
  4. 我为什么喜欢Go语言
  5. php倒计时关闭订单,订单倒计时取消,nodejs 辅助实现倒计时任务
  6. 人工智能目标检测模型总结(二)——目标检测two-stage模型汇总
  7. Python实现七段数码管时钟(动态刷新版)
  8. @Autowired与@Resource
  9. 报告下集 |《认文识字·中文字信息精准化》报告
  10. Nodejs+express+vue+Elementui酒店客房管理系统
  11. 高效短眠的10个好处及如何进行高效的睡眠
  12. What is hosts?
  13. MongoDB的学习-安装与springboot的整合
  14. mongodb 查询操作,条件查询,where,find等常用操作
  15. 本地python环境快速迁移到另外一台电脑
  16. FPA Function Point Analysis 功能点分析培训免费视频地址(by陈勇)
  17. 傅里叶变换 一维快速傅里叶变换(快速的一维离散傅里叶变换、分治法)
  18. Excel的数据分析和管理
  19. MT8168中断流程
  20. 五子棋输赢算法php,js实现AI五子棋人机大战

热门文章

  1. QImage与OpenCV中的MAT图像格式转换
  2. qt 主动打开虚拟键盘_ipad键盘有用吗?
  3. 12. final修饰符
  4. Android中四种启动模式,最容易理解的小白教程
  5. 利用binlog进行数据库的还原
  6. 使用Docker swarm构建wordpress集群
  7. 为啥不能用uuid做MySQL的主键!?
  8. 文件句柄?文件描述符?傻傻分不清楚
  9. Linux中查看日志文件的正确姿势,求你别tail走天下了!
  10. 常见的一些 Hash 函数