avatar
文章
101
标签
36
分类
17

首页
时间轴
标签
分类
友链
十万个为什么
好文推荐
关于
戴晶明的个人博客
搜索
首页
时间轴
标签
分类
友链
十万个为什么
好文推荐
关于

戴晶明的个人博客

mmdetection框架学习
发表于2025-06-03
答疑解惑 配置文件的背后 mmdetection框架通过配置文件就能做到模型搭建, 那么他是如何得知这些模块在哪的呢? 这就涉及到了python的装饰类, 我们会发现很多类似这样的代码 123@MODELS.register_module() # 后续版本貌似检测头主干那些全部用这个了@DATASETS.register_module()..... 这个会把定义的模块注册到mmdet框架管理的容器中, 其实就是一个字典, 名字到包名的对应 最后通过懒加载(这里也算不上真正的懒加载, 因为只要使用其中任意一个模块, 就会把所有模块全部导入) 把预先定义好的模块全部加载进去, 这个是mmdet/model/__init__.py 123456789101112131415161718# Copyright (c) OpenMMLab. All rights reserved.from .backbones import * # noqa: F401,F403from .data_preprocessors import * # noqa: F401,F403from .dense_h ...
python额外知识
发表于2025-05-27
前言 此篇文章主要记录一些环境问题, pip,conda的使用这些 pip 包安装规则 如果包不存在,则安装符合要求的最新版本, 可以通过下面命令查看此次安装的包的具体包版本, 也能查看当前源有哪些版本 1pip index versions 包名[范围] 如果包存在且符合要求,则不需要重新安装, 如果不符合要求则会删除此版本, 重新安装, 这就回到包不存在的规则 如果安装的包存在其他依赖, 安装依赖的时候也会执行此规则 包安装方式 源码安装: 从源码开始编译构建, 这个比较耗时间而且容易出错, 如果看到pip下载的是压缩包那些文件, 就是源码构建 预构建二进制包安装: 直接安装别人已经编译构建好的二进制文件(.whl格式) 对比项 源码安装 预构建 Wheel 安装速度 慢(需编译) 快(直接安装二进制) 兼容性 高(可适配不同环境) 依赖官方提供的 Wheel 定制性 高(可修改编译选项) 无(固定二进制) 依赖要求 需编译器(如 gcc) 仅需 pip 常见问题 版本冲突问题 第一种: 两个包依赖的共同包版本不一致 通常需要升降级一个包的版本( ...
内网穿透
发表于2025-04-28
内网穿透的作用就是将一个局域网机器暴露在公网上, 他的原理就是通过一个公网上的中间服务器接受以及传达信息给局域网机器, 所以需要一台中间服务器, 服务器上需要装好内网穿透的服务端, 局域网机器需要装好内网穿透客户端. 因此内网穿透我们有两种选择: 使用内网穿透服务商, 这样我们不需要自己装备服务器 使用自己的公网服务器 服务商 cpolar 官网 优点: 免费稳定, 能通过在线平台就看到连接到内网机器的ip+端口 缺点: 免费版无法使用固定端口 ChmlFrp 官网 优点: 免费且能固定端口, 也能通过在线平台就能看到内网机器的ip+端口 自建服务端 nps 官网
transformer及其变体学习
发表于2025-04-10
显存占用 对于transformer中, 最占用显存的部分就是注意力计算了, 他会产生一个很大的注意力得分矩阵, 这个矩阵形状通常是 ( batch , head, N, N) N代表序列维度 如果我们使用32批次, 一张640 640 的图片, 然后patch选 16 那 N就是1600, head选8, 显存占用就有 132 * 8 * 1600 * 1600 * 4 / 1024 / 1024 / 1024 = 2.44GB 一个注意力分数矩阵就已经2.44G了, 通常encoder和decoder有6层, 这个显存占用就已经很大了 主要减少显存占用的方法: 减小batch 增大patch, 也就可以减少N, 这个是O(N^2)级别的, 降低起来很有效 问题汇总 这个是我学习transformer中的一些疑惑 词嵌入的目的 问: 能否直接将词在词库中的编码直接交给transformer而不使用词嵌入 答: 直接使用单词在词库中的索引数字(即数字ID)作为输入是不可行的,原因有以下几点: 缺乏语义信息:数字ID只是单纯的标识符,不包含任何语义信息。例如,"猫 ...
python场景方案解决
发表于2025-04-03
拿到控制台所有输出 我这里是自己解析了命令, 暂时没有找到很好的库, 我这里解析的也不全 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061import osimport sysfrom tqdm import tqdmimport loggingimport atexitclass ParseConsoleStr: def __init__(self): self.buffer = [] self.current_line = "" def parse(self, text): for char in text: if char == "\r": self.current_line = "" # 回车后重置当前行 ...
python常用包学习
发表于2025-03-09
Numpy 提取数据 1. 索引 这种方式就跟数组的使用是一模一样的 1234arr = np.array([[1,2,3], [4,5,6], [7,8,9]])arr[0] # [1,2,3]arr[0,0] # [1] 等价于arr[(0,0)]arr[[0,1]] # [[1,2,3],[4,5,6]] 2.切片 其实索引就是一种特殊切片, 我个人觉得可以这么理解 123arr = np.array([[1,2,3], [4,5,6], [7,8,9]])arr[0] # [1,2,3] 等价于 arr[0,:]arr[[0,1]] # [[1,2,3],[4,5,6]] 等价于arr[[0,1], :] 总结 np里面的数组有多少维度, 默认取数据的时候, 就能指定多少维度, 不指定就是全选, 默认维度指定是从左到右 通过这种理解方式, 我们就很容易得知取了数据之后还有多少维度 需要注意的点就是 () 和 [] 的区别, () 就相当于正常取数据里面有个数据就是设置几个维度, 而[]只是设置一个维度 12a[(1,2,3)] => a[1,2,3]a[[1,2,3]] ...
目标检测领域的经典模型
发表于2024-12-11
前言 此文是我对目标检测领域各个经典模型的一个总结 Faster RCNN Fast RCNN 的ROI是通过 SS(选择性搜索)得到的, 他的速度比较慢, 而且是在CPU里面执行的, 基于此, 在Fast RCNN 基础上提出了 RPN(区域建议网络), 直接通过主干网络提取出来的特征生成ROI RPN 首先对于主干网络使用3x3的卷积进一步的提取特征(特征图大小不变), 然后将特征图分别送入 分类分支(背景还是前景), 回归分支(预测目标框位置) RPN 里面引入了锚框的概念, 锚框就是以某一个点为中心点, 生成不同大小或者不同比例的框, 为什么引入锚框, 以及有什么用? 引入锚框是为了生成预选框, 这样生成是比SS快的, 我们的特征图中的每个点其实就是一个中心点, 然后将锚框对应特征图区域的特征值送入分类器和回归器得到预选框 锚框其实是使用了我们人的经验, 因为我们知道生活中物体大概都是多大的, 所以我们就可以基于此设计锚框 对于特征图每个点都会根据k个锚框生成k个预测框, 包含4个参数(位置信息), 2个参数(分类信息) 分类器 根据RPN产生的预测框, 生成对应位置的特 ...
yolo框架学习
发表于2024-11-29
本文是结合yolov8及其以后的框架做的总结 路径寻找 yolo中我们可以指定一下几个参数路径, 但是有时候他能找到有时候他又找不到, 所以我分析了一下原因, 只有在相对路径的时候才会出现这个问题 有的路径参数有如下几个:(仅讨论相对路径) 模型文件pt 数据集文件yaml 数据集yaml文件中的数据集路径 权重相对路径 模型文件 和 数据集yaml文件 就相当于普通文件没有做特殊处理, 因此文件路径是相对于当前执行目录(工作目录), 但是对于数据集yaml文件他还有一个单独搜索路径在于yolo安装包的cfg/datasets文件夹(我们自己的优先级更高) 数据集yaml文件中的数据集路径是相对于yolo定义的一个json配置记录的地址, 他的配置文件如下, 他默认在/home/DJM/.config/Ultralytics/settings.json 123456789101112131415161718192021{ "settings_version": "0.0.6", "datasets_dir&quo ...
论文阅读方法论
发表于2024-11-12
前言 方法 三遍法: 第一遍(海选): 看标题, 摘要, 然后直接跳到结论, 看完这些大概知道文章在讲什么, 然后看看实验和方法部分的图和表, 经过这些步骤就可以判断文章怎么样, 有没有必要继续下去 第二遍: 从头读到尾, 但是没必要在意太多的细节,比如公式证明, 但是 要搞清楚图和表 以及 作者提出了什么方法, 以及他的方法和别人的区别, 对于不懂的地方先做标记,比如他参考的文献你不懂的地方 第三遍: 精读文章, 每一句话在干什么, 即使不看文章, 你也知道这篇文章到底是在干啥了
pytorch学习
发表于2024-11-01
nn模块 权重初始化 123456789import torchimport torch.nn as nn# 定义线性层linear_layer = nn.Linear(in_features=10, out_features=5)# 直接赋值给权重和偏置linear_layer.weight.data.fill_(0.01) # 将权重全设置为 0.01linear_layer.bias.data.fill_(0) # 将偏置设置为 0 广播机制 广播机制的核心流程可以概括为: 从右往左逐个对比两个张量的维度。 相等时继续:如果对应维度大小相等,直接匹配。 不相等时判断是否有1:如果不相等,检查其中一个维度是否为1。如果是,则可以广播扩展成相等的维度。 无法匹配时停止:如果对应维度大小不相等,且都不为1,则广播机制无法继续,运算会报错。 缺少的维度补1:如果一个张量维度数量少,从右侧开始自动补充1,以便进行对比。 例如,如果有两个张量: a 的形状是 (3, 1, 5) b 的形状是 (4, 5) 按照广播机制,从右往左依次匹配: 最右边的维度 5 匹配。 中 ...
12…11
avatar
戴晶明
不积跬步,无以至千里
文章
101
标签
36
分类
17
公告
欢迎光临
最新文章
mmdetection框架学习2025-06-03
python额外知识2025-05-27
内网穿透2025-04-28
transformer及其变体学习2025-04-10
python场景方案解决2025-04-03
分类
  • 4081
  • English1
  • windows1
  • 云原生1
  • 基础课程2
  • 实用软件1
  • 工具4
    • git1
标签
MFC需要复习windowsc++c语言English英语gitGohexodockerjavajsoupHttpClientspringlinux网络linuxmakefilepythontasksk8svue云计算机网络maven工具的使用工具汇编高等数学命令总结tomcatnode操作系统数据结构计算机组成原理UML
归档
  • 六月 20251
  • 五月 20251
  • 四月 20253
  • 三月 20251
  • 十二月 20241
  • 十一月 20243
  • 九月 20243
  • 六月 20247
网站资讯
文章数目 :
101
已运行时间 :
本站总字数 :
448k
本站访客数 :
本站总访问量 :
最后更新时间 :
©2022 - 2025 By 戴晶明
框架 Hexo|主题 Butterfly
搜索
数据库加载中