DarkNet(1)--添加新层教程(slice层为例)_darknet 如何使用sam层-程序员宅基地

技术标签: slice  添加新层  darknet  Deep Learning  

slice layer:作用是将bottom按照参数切分成多个top,可参考Caffe源码中的实现

1、源码src文件夹下:
新建slice_layer.cslice_layer.h
ps:稍后我会更新到我的GitHub上
ps:已更新,https://github.com/lwplw/re-id_mgn

2、makefile文件中:
OBJ添加slice_layer.o

3、include/darknet.h文件中:
(1)LAYER_TYPE添加SLICE

typedef enum {
    CONVOLUTIONAL,
    DECONVOLUTIONAL,
    CONNECTED,
    MAXPOOL,
    SOFTMAX,
    DETECTION,
    DROPOUT,
    CROP,
    ROUTE,
    COST,
    NORMALIZATION,
    AVGPOOL,
    LOCAL,
    SHORTCUT,
    SLICE, // 2018.11.22-lwp
    ACTIVE,
    RNN,
    GRU,
    LSTM,
    CRNN,
    BATCHNORM,
    NETWORK,
    XNOR,
    REGION,
    YOLO,
    ISEG,
    REORG,
    UPSAMPLE,
    LOGXENT,
    L2NORM,
    BLANK
} LAYER_TYPE;

(2)因为新层中定义了新的参数,所以添加:

...
int extra;
int slice_axis; // 2018.11.22-lwp
int slice_num;
int slice_pos;
int truths;
...

4、parser.c文件中:
(1)添加头文件:

#include "slice_layer.h"

(2)string_to_layer_type函数中添加:

if (strcmp(type, "[slice]")==0) return SLICE;

(3)添加parse_slice函数:

layer parse_slice(list *options, size_params params)
{
    int slice_axis = option_find_int(options, "slice_axis", 2);
    int slice_num = option_find_int(options, "slice_num", 1);
    int slice_pos = option_find_int(options, "slice_pos", 0);

    int batch,h,w,c;
    h = params.h;
    w = params.w;
    c = params.c;
    batch=params.batch;

    layer l = make_slice_layer(batch, w, h, c, slice_axis, slice_num, slice_pos);
    return l;
}

(4)parse_network_cfg中加入:

...
}else if(lt == SHORTCUT){
       l = parse_shortcut(options, params, net);
}else if(lt == SLICE){
       l = parse_slice(options, params); // 2018.11.22-lwp
}else if(lt == DROPOUT){
       l = parse_dropout(options, params);
...

5、network.c文件中:
(1)添加头文件:

#include "slice_layer.h"

(2)get_layer_string函数中添加:

case SLICE:
    return "slice";

(3)resize_network函数中添加:

...
}else if(l.type == SHORTCUT){
    resize_shortcut_layer(&l, w, h);
}else if(l.type == SLICE){
    resize_slice_layer(&l, w, h); // 2018.11.22-lwp
}else if(l.type == UPSAMPLE){
    resize_upsample_layer(&l, w, h);
...

6、重新编译DarkNet

make clean
make all -j16
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lwplwf/article/details/84339881

智能推荐

Jetson nano系统镜像烧录_jetson nano镜像下载-程序员宅基地

文章浏览阅读3.4k次,点赞5次,收藏46次。Jetson nano系统镜像烧录_jetson nano镜像下载

Java聊天室系统毕业设计-程序员宅基地

文章浏览阅读195次,点赞4次,收藏5次。计算机从出现到现在有了飞速的发展,现阶段的计算机已经不单单是用于进行运算的独立的个体了,跟随计算机一同发展的还有互联网技术,经过了长久的发展,互联网技术有了日新月异的发展,它的发展速度和计算机的发展速度一样的恐怖,从出现一直到现在,它已经在人们的生活的各个方面发挥着自己的作用,而且是不可替代的作用。在计算机编程方面,互联网软件开发逐步转向以java为首的面向对象的编程技术,传统的面向过程的编程技术已经逐渐退出了历史的舞台,java正以不可思议的速度发展。6.1 单元测试 9。目 录 III。

uniapp 修改swiper样式_uniapp swiper 在app端无法设置样式-程序员宅基地

文章浏览阅读6k次,点赞2次,收藏7次。在小程序和app中,更改官方组件样式,swiper重写样式H5页面有效,app无效,解决方法如下用wx-开头可以覆盖 比如swiper的默认样式为 uni-swiper .uni-swiper-wrapper{} 只需要在css里面加一条wx-swiper .wx-swiper-wrapper{} 就可以覆盖了ps: 单位用px或rpx/* wx */ wx-swiper .wx-swiper-dot { width: 10px; height: 3px; } wx-s_uniapp swiper 在app端无法设置样式

Springboot计算机毕业设计微信小程序的新闻管理系统【附源码】开题+论文+mysql+程序+部署-程序员宅基地

文章浏览阅读668次,点赞10次,收藏13次。最后,针对新闻分类的精准性问题,系统将采用合理的分类标准和算法,实现新闻内容的自动分类和推荐,提高用户体验和新闻传播效果。通过本系统的开发与应用,旨在提升新闻传播的效率和效果,满足用户多样化的新闻需求。通过本研究的实施,预期能够取得以下成果:首先,成功开发一款基于微信小程序的新闻管理系统,实现新闻信息的快速发布与管理、用户权限的有效控制以及新闻分类的精准推荐;同时,系统提供的用户管理、新闻类型分类和新闻信息发布等功能,能够帮助新闻机构更好地组织和管理新闻内容,提高新闻发布的质量和效率。

银行家算法程序流程图_raptor银行家算法流程图-程序员宅基地

文章浏览阅读5.2k次,点赞5次,收藏28次。银行家算法程序流程图 _raptor银行家算法流程图

计算机网络—— DNS和CDN那些事_nds cdn-程序员宅基地

文章浏览阅读2k次,点赞2次,收藏2次。前言DNS:keyword:域名解析为IP地址。域名解析协议(DNS)用来把便于人们记忆的主机域名和电子邮件地址映射为计算机易于识别的IP地址。DNS是一种c/s的结构,客户机就是用户用于查找一个名字对应的地址,而服务器通常用于为别人提供查询服务。 ———百度百科CDN:keyword:就近, 降低拥塞。CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容_nds cdn

随便推点

什么是网络地址转换(NAT)—Vecloud 微云-程序员宅基地

文章浏览阅读246次。网络地址转换(NAT)最初在RFC1631中进行了描述。尽管最初是作为防止IPv4地址耗尽的短期解决方案提出的,但仍在使用它。NAT有什么特别之处,使网络工程师可以使用26年以上?让我们找出答案。NAT的优势NAT的最大好处是它减慢了IPv4地址空间消耗的过程。多亏了NAT,内部网络上具有分配的专用IPv4地址(RFC1918)的专用主机可以与Internet上的公用主机进行通信。换句话说,组织可以将RFC1918中定义的相同私有IPv4地址块分配给内部主机,而主机则在企业外部进行通信。由于不需要为

ubuntu18.04安装mysql8.0_乌班图18.04安装mysql8-程序员宅基地

文章浏览阅读7.2k次,点赞9次,收藏27次。1、进入mysql官网,点击No thanks, just start my download.,下载8.0版本的安装包。我的安装包名为mysql-apt-config_0.8.10-1_all.deb,下面以它为例执行命令。2、sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb,然后会弹出如下窗口,确认第一项MySQL Server & Cluster后面的版本是否是8.0版本,如果不是,将光标移动到此处,enter键修改为8.0。如果是,直接向下选O_乌班图18.04安装mysql8

Linux红帽证书考试_红帽子考试版本-程序员宅基地

文章浏览阅读5k次,点赞8次,收藏40次。红帽认证工程师(RHCE,Red Hat Certified Engineer)属于Linux系统的中级水平认证,主要考核对常见服务的部署和维护能力,难度相对RHCSA认证来讲难度更大,而且要求考生必须已获得RHCSA认证。这部分的内容原本应是顶级RHCA认证中DO407科目的知识,随着考试难度的增高,认证的含金量也越高。红帽认证考试全部上机实操,一天考完,上午的RHCSA认证是两个半小时,对应的是RH124和RH134的课程内容,而下午的RHCE认证是三个半小时,对应的是RH294课程内容。_红帽子考试版本

gooflow 自定义流程图-程序员宅基地

文章浏览阅读1w次。demo链接:https://pan.baidu.com/s/1mJ46mlh8v2Q1XnZ8i5DceQ 密码:0lra注意:本地直接打开会报错。不支持 file地址: Uncaught DOMException: Blocked a frame with origin "null" from accessing a cross-origin frame.at init (file:/...

Java8的Stream根据Bean中的某一个属性,就两个List< Bean>的交集差集_java list bean 取差集-程序员宅基地

文章浏览阅读1.4k次。Stream根据Bean中的某一个属性,就两个List< Bean>的交集差集import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;/** * @author liweifang * @desc * @date 2021-03-11 11:39 */class Student { private Integer age; private Str_java list bean 取差集

Unity记录-UGUI的屏幕自适应原理和应用_ugui自适应-程序员宅基地

文章浏览阅读1.9k次,点赞3次,收藏11次。UGUI的屏幕自适应,是通过Canvas Scaler来做的,根据屏幕的分辨率,计算出canvas的大小,同时计算ScaleXY,通过Size + Scale来控制Canvas的变换,UI作为canvas的子物体,也会跟随着一起变化;为了保证UI的位置,需要在设计UI的时候,对角落,边缘的UI做特殊的处理,利用锚点来保证UI与边缘或角落的距离,锚点的概念就不多说了,一句话:锚点的向量值就是锚点与自..._ugui自适应

推荐文章

热门文章

相关标签