外贸一般上什么网站邢台网站制作有哪些

张小明 2025/12/25 11:15:55
外贸一般上什么网站,邢台网站制作有哪些,wordpress 卢松松,做网站设计师的原因前言 博主导读#xff1a;   在上一篇文章 《Pointcept 框架详解#xff1a;从 Config 到 Runner 的全流程执行机制》 中#xff0c;我们像剥洋葱一样拆解了 Pointcept 的代码架构。明白了“配置驱动”的原理后#xff0c;很多同学跃跃欲试#xff0c;想要在自己的数据集…前言博主导读在上一篇文章 《Pointcept 框架详解从 Config 到 Runner 的全流程执行机制》 中我们像剥洋葱一样拆解了 Pointcept 的代码架构。明白了“配置驱动”的原理后很多同学跃跃欲试想要在自己的数据集上跑起来。然而“道理我都懂一改就报错”是很多人的真实写照。在实际魔改的过程中大概率会遇到各种各样这种让人摸不着头脑的错误。本文将从代码实现、配置修改、执行顺序三个维度手把手教你如何在 Pointcept 中正确添加自定义数据增强并完美避开“类型冲突”的深坑。4. 实例说明从命令行到代码底层在了解了框架结构后我们通过一个具体的实例来看看 Pointcept 是如何把命令行参数一步步转化为Python 对象的。通常情况下我们推荐使用scripts/train.sh来启动训练。它是一个 Shell 包装器负责环境配置和备份。# 通用模板shscripts/train.sh -p${INTERPRETER_PATH}-g${NUM_GPU}-d${DATASET_NAME}-c${CONFIG_NAME}-n${EXP_NAME}参数全称含义-pPython Interpreter指定 Python 解释器路径 (如python或/usr/bin/python)-dDataset数据集名称 (决定去configs/下哪个子目录找配置)-cConfig配置文件名称 (不带.py后缀)-nExperiment Name实验名称 (决定exp/下的输出目录名)-wWeight权重文件路径 (用于 Finetune 或 Test)-rResume是否恢复训练 (断点续训)可选true/false-gNum GPU使用的 GPU 数量-mNum Machine机器数量 (用于多机多卡训练)train.sh 脚本在解析完上述参数后会将其打包并最终调用 Python 入口文件。上述的 Shell 命令等价于直接运行以下 Python 命令# 等价的 Python 调用方式 python tools/train.py \ --config-file configs/scannet/semseg-pt-v2m2-0-base.py \ --num-gpus 1 \ --options save_pathexp/scannet/semseg-base‘’平时做实验用 Shell 方式更方便但在 IDE (如 PyCharm, VSCode) 中 Debug 时使用 Python 方式直接运行 tools/train.py 会更简单。当程序启动后Config 文件是如何实例化成具体的 Python 类的我们以 ModelNet40 分类任务 为例。配置文件 (Config)在 configs/modelnet40/cls-ptv2-v1m1-0-base.py 中定义了一个字典model dict( typeDefaultClassifier, # --- 【关键】这就是 Registry 中的 Key num_classes40, # --- 参数 1 backbone_embed_dim256, # --- 参数 2 # ... 其他参数 )源码定义 (Source Code)在 pointcept/models/default.py 中我们可以找到对应的类定义from pointcept.models import MODELS MODELS.register_module() # --- 【关键】把这个类注册到 MODELS 名录里 class DefaultClassifier(nn.Module): # 注意这里的参数名和 Config 字典里的 Key 是一模一样的 def __init__(self, num_classes, backbone_embed_dim, backbone, criteria, ...): super().__init__() self.num_classes num_classes # ...连接过程运行时发生的“魔法”当你运行代码时Pointcept 的 build 函数在后台执行了类似下面的逻辑将字符串变成了对象# 伪代码解释 build 函数内部发生了什么 def build_model(config_dict): # 1. 拿出名字 (Key) # 此时 class_name DefaultClassifier # config_dict 剩下了 {num_classes: 40, ...} class_name config_dict.pop(type) # 2. 找到对应的类 (Class) # 去全局字典 MODELS 里查表找到了 DefaultClassifier 这个类 TargetClass MODELS.get(class_name) # 3. 实例化 (Instantiation) # 把剩下的 dict 当作 **kwargs 传进去 # 等价于: DefaultClassifier(num_classes40, backbone_embed_dim256, ...) obj TargetClass(**config_dict) return obj这就是 Pointcept “配置驱动” 的核心奥义Config 里的 Key 对应init的参数名type 对应类名。 掌握了这个规律你就可以随心所欲地修改参数了。5. 数据增强之随机旋转根据 Pointcept 的设计规范所有的数据增强类都位于pointcept/datasets/transform.py。我们需要在这里实现一个基于NumPy的旋转类。原始代码给出的是围绕着某一个轴进行旋转现在我们改为随机旋转并进行使用。特别注意是NumPy类5.1 源码注入请打开pointcept/datasets/transform.py加入以下代码。别忘了加上TRANSFORMS.register_module()这是让 Config 能找到它的关键TRANSFORMS.register_module()classRandomRotate(object):def__init__(self,angleNone,centerNone,axisz,always_applyFalse,p0.5):# 初始化参数角度范围、旋转轴、中心点、概率self.angle[-1,1]ifangleisNoneelseangle self.axisaxis self.always_applyalways_apply self.ppifnotself.always_applyelse1self.centercenterdef__call__(self,data_dict):# 1. 概率判断决定本次是否执行增强ifrandom.random()self.p:returndata_dict# 2. 计算旋转矩阵 (Rotation Matrix)# 这里的 angle 范围是 [-1, 1] * pi即 -180度 到 180度anglenp.random.uniform(self.angle[0],self.angle[1])*np.pi rot_cos,rot_sinnp.cos(angle),np.sin(angle)ifself.axisz:# 绕 Z 轴旋转矩阵 (最常用)rot_tnp.array([[rot_cos,-rot_sin,0],[rot_sin,rot_cos,0],[0,0,1]])elifself.axisy:rot_tnp.array([[rot_cos,0,rot_sin],[0,1,0],[-sin_y,0,rot_cos]])elifself.axisx:rot_tnp.array([[1,0,0],[0,rot_cos,-rot_sin],[0,rot_sin,rot_cos]])else:raiseNotImplementedError(目前只支持单轴旋转若需任意旋转请修改代码)# 3. 执行几何变换ifcoordindata_dict.keys():# 自动计算几何中心ifself.centerisNone:x_min,y_min,z_mindata_dict[coord].min(axis0)x_max,y_max,z_maxdata_dict[coord].max(axis0)center[(x_minx_max)/2,(y_miny_max)/2,(z_minz_max)/2]else:centerself.center# 核心步骤移回原点 - 旋转 - 移回原位# 注意这里的 coord 是 NumPy 数组data_dict[coord]-center data_dict[coord]np.dot(data_dict[coord],np.transpose(rot_t))data_dict[coord]center# 4. 同步旋转法向量 (Normal)ifnormalindata_dict.keys():data_dict[normal]np.dot(data_dict[normal],np.transpose(rot_t))returndata_dict5.2 配置Config 方案打开你的配置文件如configs/modelnet40/cls-ptv2-base.py修改 data 部分datadict(num_classes40,ignore_index-1,namesclass_names,# 训练集配置traindict(typedataset_type,splittrain,data_rootdata_root,transform[dict(typeNormalizeCoord),# ✅ 正确位置在 ToTensor 之前# p1.0 表示每个样本都旋转angle[-1, 1] 表示 360 度随机dict(typeRandomRotate,angle[-1,1],axisz,center[0,0,0],p1.0),dict(typeRandomScale,scale[0.7,1.5],anisotropicTrue),dict(typeRandomShift,shift((-0.2,0.2),(-0.2,0.2),(-0.2,0.2))),# GridSample 会进行体素化采样通常建议先做几何变换再做采样dict(typeGridSample,grid_size0.01,hash_typefnv,modetrain,return_grid_coordTrue),dict(typeShufflePoint),dict(typeToTensor),# --- 分界线这之后的数据全是 Tensordict(typeCollect,keys(coord,grid_coord,category),feat_keys[coord,normal]),],test_modeFalse,),# 验证集配置valdict(typedataset_type,splittest,data_rootdata_root,transform[dict(typeNormalizeCoord),# 验证集通常不需要旋转除非你想做 TTA (Test Time Augmentation)dict(typeGridSample,grid_size0.01,hash_typefnv,modetrain,return_grid_coordTrue),dict(typeToTensor),dict(typeCollect,keys(coord,grid_coord,category),feat_keys[coord,normal]),],test_modeFalse,),)这里你需要注意dict(typeToTensor), # — 分界线这之后的数据全是 Tensor大多数数据预处理是使用的numpy这是需要放在分界线之前的否则你会遇到报错TypeError: unsupported operand type(s) for -: ‘Tensor’ and ‘list’File “…/pointcept/datasets/transform.py”, line 293, incalldata_dict[“coord”] - center6. 总结与预告 (Conclusion)通过这次实战我们不仅学会了如何添加数据增强更重要的是理解了 Pointcept 数据流的底层逻辑。Registry 是桥梁TRANSFORMS.register_module() 将 Python 类映射到 Config 字符串。顺序是关键Config 列表中的顺序就是代码执行的顺序。基于 NumPy 的操作必须放在 ToTensor 之前。掌握了这套“配置驱动 (Config-Driven)”的开发模式你不仅能玩转 Pointcept以后上手 MMDetection、Detectron2 等工业级框架也将易如反掌。 附录点云网络系列导航本专栏致力于用“人话”解读 3D 视觉领域的硬核论文与源码从原理到代码逐行拆解。 欢迎订阅专栏不错过每一篇干货【深度学习-论文讲解】持续更新中…互动话题你在配置环境时候遇到了什么问题你还有什么流程无法理解的部分欢迎在评论区留言分享你的“踩坑”经历我们一起避雷 如果这篇文章对你有帮助请 点赞 、收藏 ⭐、关注 支持博主你的三连是我持续更新的最大动力
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

域名和网站绑定环球资源网商务网站建设目的

🚀 1、简述 OpenSearch 是一个基于 Elasticsearch 7.10.2 和 Kibana 7.10.2 分支的开源搜索与分析引擎,由 AWS 牵头维护。它兼具分布式搜索、日志分析、可视化(OpenSearch Dashboards)等能力,常用于日志平台、数据分析平台与搜索服务。 本文将介绍如何通过 Docker 快速…

张小明 2025/12/24 14:55:39 网站建设

东莞专业微网站建设价格提升网站建设

ollama下载模型卡顿?vLLM动态批处理来救场 在本地部署大语言模型时,你是否也遇到过这样的场景:好不容易从 ollama 下载完一个热门模型,比如 Qwen 或 LLaMA,结果刚一运行就卡得不行——打字像幻灯片、响应延迟动辄十几秒…

张小明 2025/12/24 14:55:37 网站建设

泰州做网站价格备案的网站做跳转不影响备案把

一、简答题43分1.TCP/IP协议体系结构各层的核心功能2.简述CDMA的工作原理,计算过程见PPT/作业对于CDMA原理的理解,这里附上我在学习的时候自己的想法和思考(仅供参考,并非教科书式权威的理解):考虑&#xf…

张小明 2025/12/24 14:55:35 网站建设

网站备案照片怎么弄北京企业网站建设公司哪家好

使用 C 语言进行 RPM 编程 1. 为何使用 C 语言编写 RPM 程序 RPM C 库允许在自己的 C 或 C++ 程序中执行 rpm 命令的所有操作,因为 rpm 命令本身就是使用 RPM 库创建的。以下是编写 RPM 程序的一些原因: - 速度 :对大量 RPM 文件执行任务时,使用一个程序处理比为每…

张小明 2025/12/24 14:55:34 网站建设

外贸网站推广策划秦皇岛海港区建设局网站

【复现】:《基于扩展(EKF)和无迹卡尔曼滤波(UKF)的电力系统动态状态估计》该程序对应文章《Power System Dynamic State Estimation Using Extended and Unscented Kalman Filters》,电力系统状态的准确估计对于提高电力系统的可靠性、弹性、安全性和稳定…

张小明 2025/12/24 21:47:36 网站建设