文章目录[隐藏]
![]()
这个是我第2篇文章,如果宝宝跑起来了,给我个好评哦!!
重点:按照本宝宝的方法您一定能跑起来
part1:准备修改的xxx.cfg文件
首先,我们官网官网已经下载好且编译ok,执行以下3步骤
git clone https://github.com/pjreddie/darknet.git
cd darknet
make
这个可以简单的分类(以yolo开头的cfg都是detection的,然后其他的.cfg大多是分类用的)
那么既然有检测用的yolo了,为什么还要修改呢.(是这样的因为好多应用场景要求速度,和精度,因此我们需要改不同的网络结构来满足)
废话不多说:我想得到更快的网络,所以用resnet34.cfg 来代替yolov3.cfg中的特征提取器部分
很简单(就是copy resnet34.cfg文件夹一部分代码 和 yolov3.cfg中的一部分代码 然后放到一起得到个niyaode.cfg就可以了)
准备步骤:1
大家看到有一堆#的地方了把 ################
我这是549行,你们的也差不了几行,在这个###############线上面的是特征提起器 ,在这个线下面的是yolov3的网络结构.
所以这个文件就保留下面,把上面的都删除.搞定了--------------------ok
准备步骤:2
所以这个文件就保留上面,把下面的都删除.搞定了--------------------ok
或者说把下面的这些删除就好了:
[avgpool]
[convolutional]
filters=1000
size=1
stride=1
pad=1
activation=linear
[softmax]
groups=1
准备步骤:3
现在我们整体已经解决了,但是还有些细节要调整:
因为yolov3文件要和这个匹配用:
在yolov3.cfg中你会看到很多[route]层,如下图:
这只是一部分:
[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky
#--------------------------------------这一层的输出,就是下面 layers = -4 要的输入
[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky
[convolutional]
size=1
stride=1
pad=1
#255---------------18
filters=18
activation=linear
[yolo]
mask = 6,7,8
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
#class 80-1
classes=1
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1
#---------------这里很重要,-4代表网上数4层
[route]
layers = -4
[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky
[upsample]
stride=2
...
#---------------这里很重要,-1代表网上数1层,40就是重头开始数40层(别忘记了,刚刚我有个小技巧都标注好了)
[route]
layers = -1, 40
....
...
..
#----------------------------------------------------5 -----------------------1=feature(52)
..
[route]
layers = -4
[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky
[upsample]
stride=2
[route]
layers = -1, 22
#----------------------------------------------------5 -----------------------1=feature(52)
为什么要选40,22这层数呢,因为他们的size和yolo的size能链接一起.
[route]层作用:把(x*y*c1)的特征和(x*y*c3)的特征拼接一起得到(x*y*(c1+c2))
此处----------------敲黑板------------敲黑板-----------1
网络输入:height,width都要该成416
[net]
#Training
batch=128
subdivisions=2
# Testing
#batch=1
#subdivisions=1
height=416
width=416
channels=3
min_crop=128
max_crop=448
burn_in=1000
learning_rate=0.1
policy=poly
power=4
max_batches=800000
momentum=0.9
decay=0.0005
angle=7
hue=.1
saturation=.75
exposure=.75
aspect=.75
此处----------------敲黑板------------敲黑板-----------2
网络输入:yolo层都要该成random=0 因为源码的问题
[yolo]
mask = 0,1,2
anchors = 10,13, 16,30, 33,23, 30,61, 62,45, 59,119, 116,90, 156,198, 373,326
#80--------------------1
classes=1
num=9
jitter=.3
ignore_thresh = .7
truth_thresh = 1
#random=1
random=0
此处----------------敲黑板------------敲黑板-----------3
网络输入:yolo层上面的最后一个卷积层(有3个卷积层要改)filters=3*(类数+5)
[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky
[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=256
activation=leaky
[convolutional]
size=1
stride=1
pad=1
#255------------------18(默认是3个比例*(80类+5个)=255),我这里就一类(3*(1类+5)=18)
filters=18
activation=linear
到这里cfg终于结束了!
party:准备修改的weight文件
官网地址:
ImageNet Classification
看这里有狠多你需要的预先训练好的权重.这里的权重和cfg文件夹都与对应
下载之后:您得到的是整个网络
因为我们只需要一部分:执行以下命令
./darknet partial cfg/resnet34.cfg resnet34.weights resnet34.conv.49 49
解释:resnet34.cfg自带的网络结构
解释:resnet34.weights刚刚下载的
解释:resnet34.conv.49这个名字自己定义,输出的权重名字
解释:49 这个很重要,49这个数据代表你要保存resnet34.cfg这个网络结构的多少层权重,49代表(0-49层)
本文可能有欠缺!欢迎其他宝宝喷!
wx:17610622878
版权声明:本文为CSDN博主「weixin_39719476」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39719476/article/details/113326292
![]()

暂无评论