首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对yolo目标检测算法进行迁移学习?

如何对yolo目标检测算法进行迁移学习?
EN

Stack Overflow用户
提问于 2018-04-13 18:55:50
回答 3查看 7.1K关注 0票数 6

我已经成功地训练yolo用this article预测我自己的图像。在这里,我将cfg文件中第224行的classes =5(我训练了5个类)和filter改为50。

我想要的是为yolo做迁移学习,训练最后一个完全连接的层和softmax层。

我的cfg文件如下。

代码语言:javascript
复制
[net]
batch=64
subdivisions=8
height=416
width=416
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1

learning_rate=0.0001
max_batches = 45000
policy=steps
steps=100,25000,35000
scales=10,.1,.1

[convolutional]
batch_normalize=1
filters=32
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=64
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=128
size=3
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=64
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=128
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky

[maxpool]
size=2
stride=2

[convolutional]
batch_normalize=1
filters=1024
size=3
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=1024
size=3
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=512
size=1
stride=1
pad=1
activation=leaky

[convolutional]
batch_normalize=1
filters=1024
size=3
stride=1
pad=1
activation=leaky


#######

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky

[route]
layers=-9

[reorg]
stride=2

[route]
layers=-1,-3

[convolutional]
batch_normalize=1
size=3
stride=1
pad=1
filters=1024
activation=leaky

[convolutional]
size=1
stride=1
pad=1
filters=50
activation=linear

[region]
anchors = 1.08,1.19,  3.42,4.41,  6.63,11.38,  9.42,5.11,  16.62,10.52
bias_match=1
classes=5
coords=4
num=5
softmax=1
jitter=.2
rescore=1

object_scale=5
noobject_scale=1
class_scale=1
coord_scale=1

absolute=1
thresh = .6
random=0
EN

回答 3

Stack Overflow用户

发布于 2018-07-13 07:03:01

实际上是filters=(classes + 5)*5

参考:Here

票数 2
EN

Stack Overflow用户

发布于 2018-06-04 14:49:14

对于5个类,您需要将过滤器设置为30而不是50。过滤器=( classes+1数量)* 5

票数 1
EN

Stack Overflow用户

发布于 2018-08-08 21:22:50

我猜您正在使用pjreddie/darknet框架来实现YOLO。如果是这种情况,那么在上面不需要更新的层上设置一个额外的参数stopbackward=1。在parse.c文件中,第724行:

代码语言:javascript
复制
l.stopbackward = option_find_int_quiet(options, "stopbackward", 0); 

所以这意味着它在每一层都是一个参数,就像你可以指定stopbackward=1batch_normalize=1一样。所以上面的任何层都不会被更新。这也可以在文件network.c的第272行看到:

代码语言:javascript
复制
if(l.stopbackward) break; 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49815383

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档