![](https://img-blog.csdnimg.cn/3c0f2356088742f997a1d8499ddae66b.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Anchor Base Dets
文章平均质量分 89
讲解一些经典Anchor Based检测器的原理和源码,目前讲解的有:YOLOv3、YOLOv5、SSD等
满船清梦压星河HK
永远年轻,永远热泪盈眶!
消失一段时间,死磕c++中!
展开
-
【Anchor Based Detection】原理和源码讲解目录导航
Anchor Based Detection原理和源码讲解原创 2022-10-31 17:24:28 · 742 阅读 · 0 评论 -
【YOLO-V3-SPP 源码解读导航】
目录一、导航一、导航【YOLO-V3-SPP源码解读】一、数据集制作和格式处理.【YOLO-V3-SPP 源码解读】二、模型搭建.【YOLO-V3-SPP 源码解读】三、数据载入(数据增强).【YOLO-V3-SPP 源码解读】四、训练模块.【YOLO-V3-SPP 源码解读】五、预测模块....原创 2022-04-09 10:36:43 · 1998 阅读 · 0 评论 -
【YOLO-V3-SPP源码解读】一、数据集制作和格式处理
第一步、制作自己的数据集第一步是制作自己的数据集(照片),可以是网络找的,也可以是自己拍的,甚至可以是自己p的。以我下面讲解的数据集为例子,我是在网上找的关于的苹果的病虫害,我简单的做了三个分类,分别是Alternaria_Boltch(斑点落叶病)、Grey_spot(灰斑病)、Rust( 锈病)。我的文件结构如下:每个文件下放着我的数据集照片:就不一一展示了,反正就是有几个类就创几个文件夹,再把各个类别的照片放进对应的文件夹中,这样我们的数据集就初步制作完毕了。第二步、为自己的数据集打标签原创 2021-05-30 18:49:22 · 2070 阅读 · 5 评论 -
【YOLO-V3-SPP 源码解读】二、模型搭建
以下的全部内容都是构建yolov3_spp模型另外下面的所有的内容都是按照代码执行的顺序进行讲解的在网络搭建之前大家应该已经准备好了自己的数据集,并将数据集转换为yolo的格式,如果不是很清楚的朋友可以看看我的另一篇文章一、数据集制作和格式处理 一、生成模型对应的cfg文件我们拿到官方给的yolov3-spp.cfg 文件,是不能直接开始训练的,因为官方给的文件是默认在VOC数据集训练的,所以还需要修改一下yolo层的classes数和yolo前一层的卷积核个数,如下图:注意:因为yol..原创 2021-06-09 17:07:49 · 2132 阅读 · 5 评论 -
【YOLO-V3-SPP 源码解读】三、数据载入(数据增强)
以下的全部内容都是yolov3_spp源码的数据载入(数据增强)部分下面的所有的内容都是按照代码执行的顺序进行讲解的自定义数据集 继承自Dataset 所以要重写__len()__,__getitem()__抽象方法,理解这两个函数是理解数据增强(数据载入)的重中之重。一、数据增强的初始化调用入口train.py# ================================ step 1/5 数据处理(数据增强)=====================================..原创 2021-06-18 19:04:43 · 2790 阅读 · 8 评论 -
【YOLO-V3-SPP 源码解读】四、训练模块
Compute_loss代码入口:train_eval_body.py # pred: tensor格式 list列表 存放三个tensor 对应的是三个yolo层的输出 # 例如[batch_size, 3, 23, 23, 25] [batch_size, 3, 46, 46, 25] [batch_size, 3, 96, 96, 25] # [batch_size, anchor_num, grid_h, grid_w,原创 2021-06-21 16:43:31 · 3676 阅读 · 21 评论 -
【YOLO-V3-SPP 源码解读】五、预测模块
以下的全部内容都是yolo-v3-spp的预测模块一、predict.pyimport osimport jsonimport timeimport torchimport cv2import argparseimport numpy as npfrom matplotlib import pyplot as pltfrom build_utils import datasetsfrom modules.model import DarkNetfrom train_val_uti.原创 2021-06-16 09:38:25 · 3457 阅读 · 6 评论 -
【YOLOV5-5.x 源码讲解】整体项目文件导航
前言这个项目是github的开源项目,YOLOV5:https://github.com/ultralytics/yolov5,目前已经有14.1k个Star 和 4.9k 个Folk了,非常的火。下面我会给大家逐个的文件介绍这个项目中的所有代码,希望能帮到大家。我下的2021年4月12日更新的v5.0版本,整个项目我做了一点点的文件位置的改变,也加了点自己在其他论文中学到的tricks,不过我没有删除它源码任何一个代码。下面我会按文件逐个函数的进行攻破,因为我本人也还是研一,肯定会有很多的不足,希望大原创 2021-07-23 20:54:09 · 62243 阅读 · 47 评论 -
【YOLOV5-5.x 源码解读】datasets.py
目录前言0、导入需要的包和基本配置1、相机设置2、create_dataloader3、自定义DataLoader4、LoadImagesAndLabels4.1、__init__4.2、cache_labels4.3、__len__4.4.、__getitem__4.5、collate_fn4.6、collate_fn45、img2label_paths6、verify_image_label前言源码: YOLOv5源码.导航: 【YOLOV5-5.x 源码讲解】整体项目文件导航.0、导入需要的包原创 2021-08-28 21:27:16 · 14844 阅读 · 36 评论 -
【YOLOV5-5.x 源码解读】export.py
目录前言0、导入需要的包和基本配置1、文件入口2、parse_opt3、main4、run5、使用总结前言源码: YOLOv5源码.导航: 【YOLOV5-5.x 源码讲解】整体项目文件导航.这个部分是模型的转换部分,将模型转换为torchscript、 onnx、coreml等格式,用于后面的应用中,方便将模型加载到各种设备上。0、导入需要的包和基本配置import argparse # 解析命令行参数模块import sys # s原创 2021-08-24 12:28:52 · 18322 阅读 · 23 评论 -
【YOLOV5-5.x 源码解读】common.py
目录前言0、导入需要的包和基本配置1、基本组件1.1、autopad1.2、Conv1.3、Focus1.4、Bottleneck1.5、BottleneckCSP1.6、C31.7、SPP1.8、Concat2、实验性结构2.1、前言源码: YOLOv5源码.导航: 【YOLOV5-5.0 源码讲解】整体项目文件导航.这个模块存放着yolov5网络搭建常见Common模块。yolov5s网络结构图:0、导入需要的包和基本配置import math # 数学函数原创 2021-08-24 10:30:55 · 31314 阅读 · 95 评论 -
【YOLOV5-5.x 源码解读】yolo.py
目录前言0、导入需要的包和基本配置1、parse_model2、Detect3、Model总结前言源码: YOLOv5源码.导航: 【YOLOV5-5.0 源码讲解】整体项目文件导航.\qquad这个模块是yolov5的模型搭建模块,非常的重要,不过代码量并不大,不是很难,只是yolov5的作者把封装的太好了,模型扩展了很多的额外的功能,导致看起来很难,其实真正有用的代码不多的。重点是抓住三个函数是在哪里调用的,谁调用谁的,理解这个应该就不会很难。0、导入需要的包和基本配置import argp原创 2021-08-23 20:22:44 · 23826 阅读 · 77 评论 -
【YOLOV5-5.x 源码解读】experimental.py
目录前言0、导入需要的包1、幻想(Ghost)模块1.1、GhostConv1.2、GhostBottleneck2、MixConv2d3、Ensemble4、attempt_load5、CrossConv6、Sum总结前言源码: YOLOv5源码.导航: 【YOLOV5-5.0 源码讲解】整体项目文件导航.这个模块是yolov5的实验模块。0、导入需要的包import numpy as np # numpy矩阵操作模块import torch # PyTorch深原创 2021-08-22 20:50:58 · 9513 阅读 · 24 评论 -
【YOLOV5-5.x 源码讲解】coco128.yaml
目录前言数据配置文件前言源码: YOLOv5源码.链接: 【YOLOV5-5.x 源码讲解】整体项目文件导航.这个文件是数据配置文件,存放着 数据集源路径root、训练集、验证集、测试集地址,类别个数,类别名,下载地址等信息。数据配置文件# 数据集源路径root、训练集、验证集、测试集地址path: ../datasets/coco128 # 数据集源路径root dirtrain: images/train2017 # root下的训练集地址 128 imagesval: image原创 2021-08-17 18:45:07 · 10448 阅读 · 0 评论 -
【YOLOV5-5.x 源码解读】hyp.scratch.yaml
目录前言1、训练相关参数2、损失函数相关参数3、其他几个参数4、数据增强相关参数Reference前言源码: YOLOv5源码.链接: 【YOLOV5-5.x 源码讲解】整体项目文件导航.这个脚本存放的是yolov5的相关超参。这个超参只是yolov5作者根据工程经验得出的一些初始超参,对于一个新的数据集,这些参数未必是最佳的,所以yolov5的作者提供了一个遗传算法超参进化的策略。在train.py中main函数的最后:调用起来也很简单,只要把opt.evolve参数设为True即可,如下:原创 2021-08-17 18:25:53 · 18367 阅读 · 27 评论 -
【YOLOV5-5.x 源码解读】yolov5s.yaml
目录前言1、参数配置2、anchors配置3、backbone4、head5、整体模型总结前言YOLO V5不再采用.cfg配置文件了,而是使用了新的.yaml配置文件,方便进行基于函数式的模块化开发。下面会对模型配置文件 yolov5s.yaml 进行讲解。先附上yolov5s的网络结构图:1、参数配置# parametersnc: 20 # number of classesdepth_multiple: 0.33 # model depth multiple 控制模型的深度(Bot原创 2021-08-17 16:03:25 · 18748 阅读 · 33 评论 -
【YOLOV5-5.x 源码解读】train.py
目录前言0、导入需要的包和基本配置1、设置opt参数2、main函数2.1、logging和wandb初始化2.2、判断是否使用断点续训resume, 读取参数2.3、DDP mode设置2.4、不进化算法,正常训练2.5、遗传进化算法,边进化边训练3、train4、run总结Reference前言源码: YOLOv5源码.导航: 【YOLOV5-5.x 源码讲解】整体项目文件导航.0、导入需要的包和基本配置import argparse # 解析命令行参数模块imp原创 2021-08-17 12:29:15 · 19816 阅读 · 40 评论 -
【YOLOV5-5.x 源码解读】autoanchor.py
目录前言什么是k-means?什么是bpr和aat?什么是白化操作whiten?0、导入需要的包1、check_anchor_order2、check_anchors3、kmean_anchors总结Reference前言源码: YOLOv5源码.导航: 【YOLOV5-5.x 源码讲解】整体项目文件导航.这个文件是通过 k-means 聚类来生成anchors。什么是k-means?k-means是非常经典且有效的聚类方法,通过计算样本之间的距离(相似程度)将较近的样本聚为同一类别(簇)。使原创 2021-08-15 22:43:29 · 10848 阅读 · 26 评论 -
【YOLOV5-5.x 源码解读】metrics.py
目录前言0、导入需要的包前言源码: YOLOv5源码.导航: 【YOLOV5-5.0 源码讲解】整体项目文件导航.0、导入需要的包原创 2021-08-14 22:29:57 · 10434 阅读 · 31 评论 -
【YOLOV5-5.x 源码解读】val.py
目录前言0、导入需要的包和基本配置1、parse_opt前言源码: YOLOv5源码.导航: 【YOLOV5-5.0 源码讲解】整体项目文件导航.这个文件主要是在每一轮训练结束后,验证当前模型的mAP、混淆矩阵等指标。这个文件本来是叫test.py的,但我觉得叫val.py可能更加恰当些,所以改了。0、导入需要的包和基本配置import argparse # 解析命令行参数模块import json # 实现字典列表和原创 2021-08-12 22:42:27 · 28040 阅读 · 72 评论 -
【YOLOV5-5.x 源码解读】loss.py
目录前言0、导入需要的包1、smooth_BCE2、BCEBlurWithLogitsLoss3、FocalLoss4、QFocalLoss5、ComputeLoss总结前言源码: YOLOv5源码.导航: 【YOLOV5-5.0 源码讲解】整体项目文件导航.这个文件是yolov5的损失函数部分。代码量不多,只有300多行,但却是整个项目最难,最精华的部分。在看这个文件之前建议大家仔细看下下面两篇关于BCE交叉熵损失函数的内容: 【PyTorch 理论】交叉熵损失函数的理解 和原创 2021-08-09 20:47:03 · 15152 阅读 · 29 评论 -
【YOLOV5-5.x 源码解读】general.py
目录前言0、导入需要的包和基本配置1、timeout(没用到)2、set_logging、init_seeds2.1、set_logging2.2、init_seeds3、get_latest_run4、is_docker、is_colab、is_pip4.1、is_docker4.2、is_colab4.3、is_pip(没用到)5、file_size(没用到)6、colorstr7、check_online8、emojis9、check_git_status10、check_python、check_r原创 2021-08-04 20:55:32 · 18474 阅读 · 14 评论 -
【YOLOV5-5.x 源码解读】detect.py
目录前言0、导入需要的包和基本配置1、设置opt参数2、执行main函数3、执行run函数3.1、载入参数3.2、初始化一些配置3.3、载入模型和模型参数并调整模型3.4、加载推理数据3.5、推理前测试3.6、正式推理3.6.1、处理每一张图片/视频的格式3.6.2、对每张图片/视频进行前向推理3.6.3、nms除去多余的框3.6.4、考虑进行二次分类3.6.5、后续保存或者打印预测信息3.7、推理结束, 保存结果, 打印信息总结前言源码: YOLOv5源码.导航: 【YOLOV5-5.0 源码讲解】原创 2021-08-04 17:23:51 · 14397 阅读 · 43 评论 -
【YOLOV5-5.x 源码解读】plots.py
目录前言0、导入需要的包和基本配置1、Colors2.1、plot_one_box前言源码: YOLOv5源码.导航: 【YOLOV5-5.0 源码讲解】整体项目文件导航.这个文件都是一些画图函数,是一个工具类。0、导入需要的包和基本配置import glob # 仅支持部分通配符的文件搜索模块import math # 数学公式模块import os # 与操作系统进行交互的模块from copy import copy # 提供通用的浅层和深层copy操作from原创 2021-08-02 22:14:52 · 32101 阅读 · 28 评论 -
【YOLOV5-5.x 源码解读】google_utils.py
目录前言0、导入需要的包1、gsutil_getsize前言源码: YOLOv5源码.导航: 【YOLOV5-5.0 源码讲解】整体项目文件导航.这个文件主要是负责从github/googleleaps/google drive 等网站或者云服务器上下载所需的一些文件。代码比较简单,函数也比较少,主要难点还是在于一些包可能大家不是很熟悉,下面一起来学习下。0、导入需要的包import os # 与操作系统进行交互的模块import platform # 提供获取操作系统原创 2021-07-31 15:07:28 · 13456 阅读 · 2 评论 -
【YOLOV5-5.x 源码解读】torch_utils.py
目录前言0、导入需要的包1、torch_distributed_zero_first2、init_torch_seeds3、git_describe、date_modified、select_device3.1、git_describe3.2、date_modified3.3、select_device4、intersect_dicts5、time_synchronized6、profile、model_info6.1、profile(没用到)6.2、model_info7、initialize_weigh原创 2021-07-29 20:10:02 · 12046 阅读 · 10 评论 -
【YOLOV5-5.x 源码解读】activations.py
目录前言0、ReLU、Leaky ReLU、PReLU、RReLU1、Swish/SiLU2、Mish3、FReLU4、AconC、meta-AconC5、DyReLU前言链接: 【YOLOV5-5.0 源码讲解】整体项目文件导航.这个函数是yolov5做的一些关于激活函数改进的实验,且都是近年来比较火的也是效果比较好的一些激活函数。大家可以尽情的尝试放在自己的数据集或者模型上试试效果。使用起来也很方便,直接修改common.py在的Conv函数即可:class Conv(nn.Module):原创 2021-07-23 20:56:13 · 7953 阅读 · 17 评论 -
【YOLOv5 Head解耦】
目录一、Head代码二、Detect调用一、Head代码二、Detect调用原创 2022-05-18 19:51:06 · 6928 阅读 · 16 评论 -
【项目一、xxx病虫害检测项目】1、SSD原理和源码分析
目录前言一、SSD原理前言总结下之前做过的一个病虫害检测相关的项目。选用的模型是SSD,代码是在这个仓库的基础上改的 lufficc/SSD.这个仓库写的ssd还是很牛的,github有1.3k个star。选择这个版本的代码,主要有两个原因:它的backbone代码是支持直接加载pytorch预训练权重的,所以很方便我做实验代码高度模块化,类似mmdetection和Detectron2,写的很高级,不过对初学者不是很友好,但是很能提高工程代码能力。原仓库主要实现了SSD-VGG16、SSD原创 2022-04-18 17:22:50 · 4738 阅读 · 24 评论