layer

目标检测算法之SSD代码解析(万字长文超详细)

耗尽温柔 提交于 2021-02-13 08:50:03
前言 前面的推文已经介绍过SSD算法,我觉得原理说的还算清楚了,但是一个算法不深入到代码去理解是完全不够的。因此本篇文章是在上篇SSD算法原理解析的基础上做的代码解析,解析SSD算法原理的推文的地址如下:https://mp.weixin.qq.com/s/lXqobT45S1wz-evc7KO5DA。今天要解析的SSD源码来自于github一个非常火的Pytorch实现,已经有3K+星,地址为:https://github.com/amdegroot/ssd.pytorch/ 网络结构 为了比较好的对应SSD的结构来看代码,我们首先放出SSD的网络结构,如下图所示: 可以看到原始的SSD网络是以VGG-16作Backbone(骨干网络)的。为了更加清晰看到相比于VGG16,SSD的网络使用了哪些变化,知乎上的一个帖子做了一个非常清晰的图,这里借用一下,原图地址为:https://zhuanlan.zhihu.com/p/79854543 。带有特征图维度信息的更清晰的骨干网络和VGG16的对比图如下: 源码解析 OK,现在我们就要开始从源码剖析SSD了 。主要弄清楚三个方面,网络结构的搭建,Anchor还有损失函数,就算是理解这个源码了。 网络搭建 从上面的图中我们可以清晰的看到在以VGG16做骨干网络时,在conv5后丢弃了CGG16中的全连接层改为了 和 的卷积层。其中

shell脚本传可选参数 getopts 和 getopt的方法

試著忘記壹切 提交于 2021-02-13 07:08:39
写了一个shell脚本,需要向shell脚本中传参数供脚本使用,达到的效果是传的参数可以是可选参数 下面是一个常规化的shell脚本:         echo " 执行的文件名为: $0 " ;          echo " 第一个参数名为: $1 " ;          echo " 第二个参数名为: $2 " 正常的向shell脚本中传参数的方法为: ./test. sh 1 2 3 最后执行的结果为:         执行的文件名为: ./test. sh         第一个参数名为: 1         第二个参数名为: 2 但是这个是只能按照顺序传递参数,并且不能传递可选参数,然后查资料,发现了一个shell的getopts 用法 首先贴个例子 [hello@Git shell]$ bash test. sh - a hello this is -a the arg is ! hello [hello@Git shell]$ more test. sh # !/bin/ bash while getopts " a: " opt; do case $opt in a) echo " this is -a the arg is ! $OPTARG " ;; \ ? ) echo " Invalid option: -$OPTARG " ;; esac done

Nginx实现负载均衡 + Keepalived实现Nginx的高可用

冷暖自知 提交于 2021-02-13 07:02:56
前言   使用集群是大中型网站解决高并发、海量数据问题的常用手段。当一台服务器的处理能力、存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求和用户量。这种情况下,更恰当的做法是增加一台或多台服务器去分担原有服务器的访问及存储压力。通过 负载均衡调度服务器,将来自浏览器的访问请求分发到应用服务器集群中的任何一台服务器上 ,如果有更多的用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不再成为整个网站的瓶颈。 环境准备   192.168.0.221:nginx + keepalived master (主)   192.168.0.222:nginx + keepalived backup slave (从)   192.168.0.223:tomcat   192.168.0.224:tomcat   虚拟ip(VIP):192.168.0.200,对外提供服务的ip,也可称作浮动ip   各个组件之间的关系图如下: Tomcat做应用服务器    tomcat 的安装不在本博客范围之内,具体例子网上很多在此就不讲解, tomcat 的 webapps 下记得放自己的应用,我的是 myWeb ,如果大家也用我的 myWeb ,那么index.jsp中的ip需要换成自己的   将192.168.0.223

目标检测算法之SSD代码解析(万字长文超详细)

≡放荡痞女 提交于 2021-02-13 01:43:04
前言 前面的推文已经介绍过SSD算法,我觉得原理说的还算清楚了,但是一个算法不深入到代码去理解是完全不够的。因此本篇文章是在上篇SSD算法原理解析的基础上做的代码解析,解析SSD算法原理的推文的地址如下:https://mp.weixin.qq.com/s/lXqobT45S1wz-evc7KO5DA。今天要解析的SSD源码来自于github一个非常火的Pytorch实现,已经有3K+星,地址为:https://github.com/amdegroot/ssd.pytorch/ 网络结构 为了比较好的对应SSD的结构来看代码,我们首先放出SSD的网络结构,如下图所示: 可以看到原始的SSD网络是以VGG-16作Backbone(骨干网络)的。为了更加清晰看到相比于VGG16,SSD的网络使用了哪些变化,知乎上的一个帖子做了一个非常清晰的图,这里借用一下,原图地址为:https://zhuanlan.zhihu.com/p/79854543 。带有特征图维度信息的更清晰的骨干网络和VGG16的对比图如下: 源码解析 OK,现在我们就要开始从源码剖析SSD了 。主要弄清楚三个方面,网络结构的搭建,Anchor还有损失函数,就算是理解这个源码了。 网络搭建 从上面的图中我们可以清晰的看到在以VGG16做骨干网络时,在conv5后丢弃了CGG16中的全连接层改为了 和 的卷积层。其中

《Machine Learning

拈花ヽ惹草 提交于 2021-02-12 04:21:48
https://www.youtube.com/watch?v=CXgbekl66jc&list=PLJV_el3uVTsPy9oCRY30oBPNLCo89yu49 https://www.bilibili.com/video/av65521101 因为之前有些基础,对于本视频课程的学习仅仅记录一些要点.目前只学习涉及深度学习和对抗攻击的部分. 1 Regression 通过Gradient Descent找到Loss Function的局部最优点.Gradient就是Loss Function对每个参数的偏导数排成的向量. 如果Loss Function是Convex的,即凸函数,那么Gradient Descent一定可以找到全局最优点. 过于复杂的model就会Overfitting. 类别型特征可以通过δ函数变成Linear Model. 对于特征的处理,可以通过Domain Knowledge或者Regularization. Regularization的一种简单方式是在Loss Function中加入λΣ(w i ) 2 ,因为越小的w越平滑,即对变化越不敏感. Regularization一般不考虑bias,因为它只影响Loss Function的上下移动,而与是否平滑无关. 可以给w和b设定不同的Learning Rate来加强拟合效果. 2 Where

vue 的 scroller 使用

不打扰是莪最后的温柔 提交于 2021-02-11 20:41:42
一 安装 使用npm 安装 npm install vue-scroller -d 二 引入 import VueScroller from "vue-scroller" Vue.use(VueScroller); 三 使用 < tab> < tab-item @ on-item-click= "e=>tabChange(0)" v-bind:selected= "selectTabIndex=='0'?true:false">未验收 </ tab-item> < tab-item @ on-item-click= "e=>tabChange(1)" v-bind:selected= "selectTabIndex=='1'?true:false">已验收 </ tab-item> </ tab> < scroller :on-refresh= "refresh" :on-infinite= "infinite" ref= "my_scroller" > < scroller> 或者下图(中间的是模板) 在methods方法中增加refresh和infinite2个方法。 methods: { /* * * 下拉刷新 */ refresh() { console.log( "refresh" ); this .pageNumber = 1 ; this .getOrderList(

一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD

依然范特西╮ 提交于 2021-02-11 20:40:16
一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD 前言 之前我所在的公司七月在线开设的深度学习等一系列课程经常会讲目标检测,包括R-CNN、Fast R-CNN、Faster R-CNN,但一直没有比较好的机会深入(但当你对目标检测有个基本的了解之后,再看 这些课程 你会收益很大)。但目标检测这个领域实在是太火了,经常会看到一些写的不错的通俗易懂的资料,加之之前在京东上掏了一本书看了看,就这样耳濡目染中,还是开始研究了。 今年五一,从保定回京,怕高速路上堵 没坐大巴,高铁又没抢上,只好选择哐当哐当好几年没坐过的绿皮车,关键还不断晚点。在车站,用手机做个热点,修改 题库 ,顺便终于搞清R-CNN、fast R-CNN、faster R-CNN的核心区别。有心中热爱 何惧任何啥。 为纪念这心中热爱,故成此文。 一、目标检测常见算法 object detection,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。所以,object detection要解决的问题就是物体在哪里以及是什么的整个流程问题。 然而,这个问题可不是那么容易解决的,物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图片的任何地方,更何况物体还可以是多个类别。 目前学术和工业界出现的目标检测算法分成3类: 1. 传统的目标检测算法

vue-scroller的使用 实现下拉刷新 上拉加载初始效果

南笙酒味 提交于 2021-02-11 20:34:00
安装vue-scroller npm i vue-scroller -D 在main.js中: import VueScroller from 'vue-scroller ' Vue . use (VueScroller ) 主要是两个方法:: on-refresh= "refresh "下拉刷新回调 : on-infinite= "infinite "上拉加载回调 < scroller : on-refresh= "refresh " : on-infinite= "infinite " > <!-- content goes here 这里写需要下拉刷新,上拉加载的元素,最好是单个元素,多个元素拉动时会出现小bug --> </ scroller > 如: <template>   <div id="main">     <div class="header">xxxx</div>     <div class="scrollerBox">       <scroller class="scroller" :on-infinite="infinite"//上拉加载的回调函数                  :on-refresh="refresh"//下拉刷新的回调函数                  :noDataText="'上拉加载更多数据''//上拉加载结束时

一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD

蹲街弑〆低调 提交于 2021-02-11 20:31:09
一、目标检测常见算法 object detection,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。所以,object detection要解决的问题就是物体在哪里以及是什么的整个流程问题。 然而,这个问题可不是那么容易解决的,物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图片的任何地方,更何况物体还可以是多个类别。 目前学术和工业界出现的目标检测算法分成3类: 1. 传统的目标检测算法:Cascade + HOG/DPM + Haar/SVM以及上述方法的诸多改进、优化; 2. 候选区域/框 + 深度学习分类:通过提取候选区域,并对相应区域进行以深度学习方法为主的分类的方案,如: R-CNN(Selective Search + CNN + SVM) SPP-net(ROI Pooling) Fast R-CNN(Selective Search + CNN + ROI) Faster R-CNN(RPN + CNN + ROI) R-FCN 等系列方法; 3. 基于深度学习的回归方法:YOLO/SSD/DenseBox 等方法;以及最近出现的结合RNN算法的RRC detection;结合DPM的Deformable CNN等 传统目标检测流程: 1)区域选择(穷举策略:采用滑动窗口,且设置不同的大小,不同的长宽比对图像进行遍历,时间复杂度高)

PIE SDK与GeoServer结合说明文档

99封情书 提交于 2021-02-11 15:02:26
1. GeoServer简介 GeoServer是OpenGIS Web服务器规范的J2EE实现的社区开源项目,利用GeoServer可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过GeoServer可以容易的在用户之间迅速共享空间地理信息。它能兼容WMS和 WFS 特性;支持 PostGIS、Shapefile、ArcSDE、 Oracle 、VPF、MySQL、MapInfo;支持上百种投影;能够将网络地图输出为 jpeg、gif、png、SVG、KML等格式;支持AJAX 的地图客户端OpenLayers。 GeoServer的安装参考: https://blog.csdn.net/qq_35732147/article/details/81869864 GeoServer发布WMTS服务参考: https://blog.csdn.net/weixin_38843590/article/details/79879317 2. 应用介绍说明 2.1. 应用场景介绍 应用项目中经常遇到WebGIS和桌面GIS中共享一份地图或多个桌面端共享一份地图,应对这个问题的最优的方案就是把数据发布成一份地图服务,通过WMTS地图服务实现不同终端的数据共享。下面我们介绍如何在PIE中加载GeoServer发布的地图服务。 2.2. 实现思路介绍