mah*_*ghi 3 python object-detection conv-neural-network yolo
我真的对 yolov3 的架构感到困惑。我已经阅读了有关它的文档和论文。有人说它有 103 个卷积层,其他人说它有 53 个层。但是当你计算 cfg 文件中的卷积层时(下载后)它大约是 75!...这里遗漏了什么?我该怎么做才能找到它?这个问题对我们很重要,因为我们需要在论文中引用这个架构,我们需要知道确切的大小层数...帮帮我伙计们
根据 AlexeyAB(非常流行的分叉暗网版本的创建者和 YOLO v4 的创建者)https://groups.google.com/forum/?nomobile=true#!topic/darknet/9WppEzRouMU
Yolo 有
75 个 cnn 层(卷积层)+ 31 个其他层(shortcut、route、upsample、yolo)=总共 106 个层。
请记住,Yolo V3 在 82,94,106 层的 3 个不同尺度上进行检测https://gist.github.com/fabito/a49bb6a5593594f26275bc90baba6e32
在这种情况下,该模型中的层数可能是可变的。论文中说Darknet53有53层。但在他们的train.py文件中,他们根据您正在使用的暗网模型对层数进行了限制。具体来说:
def load_darknet_weights(self, weights, cutoff=-1):
# Parses and loads the weights stored in 'weights'
# cutoff: save layers between 0 and cutoff (if cutoff = -1 all are saved)
weights_file = weights.split(os.sep)[-1]
# Try to download weights if not available locally
if not os.path.isfile(weights):
try:
os.system('wget https://pjreddie.com/media/files/' + weights_file + ' -O ' + weights)
except IOError:
print(weights + ' not found')
# Establish cutoffs
if weights_file == 'darknet53.conv.74':
cutoff = 75
elif weights_file == 'yolov3-tiny.conv.15':
cutoff = 15
Run Code Online (Sandbox Code Playgroud)
这段代码表示,如果您使用的是 Darknet convulsion 74 文件,则层数的截止将为 75。如果您使用的是 Darknet convulsion 15 文件,则层数的截止将为 15 层。
因此,您需要检查您下载的 Darknet 文件并确定您使用的版本。基于此,我会选择 75,因为你似乎使用了darknet54.conv.74
此外,如果你查看他们的权重Repo,你会发现,如果你只是从他们的 Github 上拉取数据而不进行任何自定义,那么就会发现 75 层的截止值,所以他们的文件中似乎有 75 层。
值得注意的是,他们的论文于 2018 年 4 月发表,因此当时他们可以在 Github 上为 CNN 添加更多层。