pytorch版yolov3源码解读

前期准备

在学习过yolov3的相关原理后感觉距离实践是有一定差距的,在github上找到了一版源码。本文对这篇文章的源码进行中文注释,以求更加深入的了解实现的过程。
github的地址为

https://github.com/ayooshkathuria/pytorch-yolo-v3

这份代码目的是为了在pytorch框架下,使用原生的配置文件、权重文件,对获取到的新数据进行检测。
原作者提供了一个教程,连接如下

https://blog.paperspace.com/how-to-implement-a-yolo-object-detector-in-pytorch/

相对应的中文教程由两部分

https://www.jiqizhixin.com/articles/2018-04-23-3
https://www.jiqizhixin.com/articles/042602?from=synced&keyword=%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8BPyTorch%E9%A1%B9%E7%9B%AE%EF%BC%9AYOLO%20v3%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B%E5%AE%9E%E7%8E%B0

下面进行中文注释

darknet.py

parse_cfg

首先对配置文件进行了解析

def parse_cfg(cfgfile):
    #解析配置文件
    #输出为模块的list, 每个模块都对应着网络中的某一个模块
    file = open(cfgfile, 'r')                               #打开文件
    lines = file.read().split('\n')                         #按行读入
    lines = [x for x in lines if len(x) > 0]                #去除空行
    lines = [x for x in lines if x[0] != '#']               #去除注释
    lines = [x.rstrip().lstrip() for x in lines]            #两边的空格

    block = {
   }
    blocks = []
    for line in lines:
        if line[0] == "[":                                   #查找模块的标识符,代表新模块的建立
            if len(block) != 0:                              #如果block中包含其他信息,则先将数据存储并置空
                blocks.append(block)
                block = {
   }
            block["type"] = line[1:-1].rstrip()              #去除两边的中括号
        else:
            key,value = line.split("=")                     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值