PCNN分段卷积神经网络:远监督关系抽取中的噪声对抗与多示例学习
做关系抽取的同学大概率都经历过这种痛苦标注数据贵得要命人工标一千条句子就要好几天标完还有一致性问题——两个标注员对同一条句子的关系判断经常对不上。后来听说远监督distant supervision这个方法心里一喜不用人工标注了拿知识库去对齐语料就有训练数据。结果真跑起来才发现这数据“太吵了”吵到模型根本学不动。**分段卷积神经网络PCNN**就是在这样一个背景下出现的。PCNN全称是Piecewise Convolutional Neural Network中文通常叫分段卷积神经网络。它解决的核心问题不是“怎么把关系抽取准确率刷到最高”而是“在充满噪声的远监督数据上怎么让模型还能学到真正有用的关系表达”。全文我会把它拆开来讲模型为什么这么设计、每一层到底在算什么、多示例学习是怎么回事以及我自己复现时踩过的坑。无论你是刚入门NLP的研究生还是工作中要做信息抽取的工程师这篇的思路应该都对你有用。1. 关系抽取的痛点标注贵、噪声大模型容易学歪1.1 先搞清楚任务本身关系抽取Relation Extraction是信息抽取里的一环输入通常是一条句子和句子里的两个实体输出是这两个实体之间的关系类型。比如“某公司在某市成立”这条句子实体是公司和城市关系是“成立于”。关系类型一般是预先定义好的一个集合模型要做的事情本质上是一个分类任务给定句子和实体位置预测它属于哪个关系类别也可能什么都不属于。这里有个容易忽略的点关系抽取和实体识别虽然经常一起被提起但难度不一样。实体识别可以靠边界和类型特征解决很多问题关系抽取更依赖对句子语义的理解。两条句子表面结构类似意思可能完全不同同一个关系在不同的句式里表达方式差异也很大。比如同样是“成立于”“该公司于2008年在某市成立”和“该公司成立初期位于某市”表达的侧重点就不同。所以模型必须能捕捉实体的上下文而不只是看实体本身。1.2 远监督是什么它为什么“吵”远监督的核心假设是如果知识库里有一条事实实体A实体B那么语料中所有同时提到A和B的句子都算是在表达这条事实对应的关系。举例来说知识库里有“某公司-成立于-某市”那么所有同时出现公司名和城市名的句子都会被当成正例不管句子说的是“公司在某市成立”还是“公司CEO曾在某市演讲”甚至“公司与某市毫无关系只是出现在同一篇报道里”。用这种方式造出来的训练数据量大、便宜但标签错得离谱。业内比较公认的说法是主流远监督数据集的噪声比例能达到百分之三十以上也就是说近三分之一的句子标签其实是错的。早期用这些数据直接训练普通分类器效果非常差因为模型学到的不是“关系长什么样”而是“这两个实体一起出现就可能是这个关系”——这等于没学。提示远监督和半监督不一样。半监督至少有个小规模干净种子集远监督则完全依赖知识库对齐噪声来源更不可控。做实验前先想清楚自己手里的数据属于哪种。1.3 句子级别搞不定就往句子组级别去解既然单个句子的标签不可信一个自然的想法是把同一对实体出现的所有句子打包成一个“包”。包里只要有一条句子真的表达了关系这个包就有理由被标成正类。这其实就是多示例学习Multi-instance LearningMIL的思路。PCNN之所以被反复提起不光是它提出了分段池化这个结构更关键的是它把多示例学习和神经网络结合到了一起。这两件事合在一起才让模型在噪声数据上稳住了。后面我会专门用一章讲这个机制因为它才是PCNN在远监督场景下真正能用的根基。2. 为什么偏偏要“分段”普通CNN做关系抽取差在哪2.1 CNN在关系抽取里的常规玩法在PCNN出现之前已经有人尝试用CNN做关系抽取。基本流程是把句子的每个词转成词向量必要时拼上位置向量然后拿一组卷积核在词序列上滑动提取局部n-gram特征接着做一个全局最大池化把每个卷积核在整个句子上取最大值最后接softmax分类。这套流程在情感分析、文本分类上都很好用因为那些任务关心的是整个句子的整体倾向某个最强的局部信号往往就足够代表全句了。但关系抽取偏偏不是这种任务。它更像“考细节”你得先知道句子里的两个实体是谁再看这两个实体周围发生了什么。整体倾向帮不上忙所以直接把文本分类那套CNN搬过来效果一直上不去。2.2 全局最大池化“只留一个”的问题全局最大池化的问题在于每个卷积核只能保留全句最强的那一个响应值其他位置的信号全扔了。拿“成立于”这个关系举例真正有用的线索其实是分散的——实体1前面可能有时间状语实体1和实体2之间的动词短语是关键实体2后面可能是地点或补充说明。如果用一个全局最大池化这三个区域里只有一个区域能被选中其他区域的强信号全部丢失。这等于把一条句子的信息量压缩成一个点模型的表达能力被严重限制。换到工程视角更好理解池化本质是降维但降维不能把空间结构全丢了。一句话里不同区域对应不同的语义角色全局池化毫不在意这种结构结果就是模型“只见树木不见森林”——只看得到某个最强的局部线索看不到线索之间的关系。2.3 用实体位置当天然的切分点PCNN的做法很直观既然关系线索分布在实体周围的不同区域那就把句子按两个实体的位置切成三段——实体1左边的部分、实体1和实体2之间的部分、实体2右边的部分。然后在每一段里分别做最大池化。这样每个卷积核在句子中不是只能留下一个最大值而是可以留下三个分别代表三个区域各自的强信号。三个池化结果拼在一起信息量比单个全局池化丰富得多。这个设计的巧妙之处在于它几乎没有增加多少参数只是把池化的方式从“全局取最大”改成了“分段取最大”。模型结构更贴合任务本身的语义结构这就是PCNN的核心思想。两个实体本质上是句子的两个锚点锚点把句子分成了三个有意义的区域这在很多带双实体的任务里都成立所以后面做事件抽取、属性抽取的人也经常借鉴这个套路。3. 模型结构逐层拆解从词向量到关系标签3.1 输入表示词向量加位置向量PCNN的输入不只有词向量。给定句子中的每个词除了把它对应的词向量取出来还会额外拼一个位置向量。位置向量编码的是当前词到两个实体之间的相对距离。举例说句子“某公司在某市成立”如果“公司”是第一个实体那么“成立”到它的距离是某个数值到第二个实体“市”的距离是另一个数值。这两个距离值被映射成低维向量和词向量拼接起来作为卷积层的输入。为什么要加位置信息因为同一个词在句子不同位置出现对关系的贡献完全不同。比如“成立”这个词出现在两个实体之间时强烈暗示“成立于”关系如果出现在别的位置可能只是无关修饰。位置向量让卷积核能感知“这个词离实体有多远”从而学习到位置敏感的特征。原版实现里位置向量维度通常是5维不要小看这5维它对最终效果的影响非常明显。我后来试过把位置维度提到10维、20维提升很小倒是训练变慢了不少。3.2 卷积层固定窗口的n-gram提特征卷积层的操作和普通文本CNN没有本质区别。以常见的窗口大小3为例每个卷积核每次看连续的三个词向量输出一个标量特征。窗口大小决定了特征提取的粒度窗口太短看不了长距离依赖窗口太长参数多且容易过拟合。在PCNN的复现配置里窗口大小一般取3也可以用一组不同大小的窗口做多尺度卷积效果略有提升代价是计算量增加。从计算的角度看卷积层做的事情可以理解成把长度固定的句子超长部分截断或补齐变成一个特征序列序列长度等于句子长度减窗口大小加一每个位置对应一个卷积核的响应值。多个卷积核并行扫描每个核相当于一个不同的“特征检测器”——有的核可能学会了捕捉“位于两实体之间的及物动词”有的核专门关注实体左侧的时间词。到这里特征还是位置相关的池化层就是要处理这些带位置的特征。3.3 分段最大池化三段各取各的最大值分段池化的输入是卷积层输出的特征序列外加两个实体的位置信息。按照前面说的把特征序列切成三段实体1之前的区域、两个实体之间的区域、实体2之后的区域。每个区域分别做最大池化得到一个标量。多个卷积核的结果拼在一起就得到这个句子的定长表示。注意如果一个实体恰好出现在句子开头实体1之前就没有词对应的段是空的。空段通常补一个该段允许的最小值保证拼接后的维度一致。这个细节容易出错一旦补的值不合适训练初期梯度会很不稳。这一步是PCNN最容易被忽略但又最关键的地方。分段池化让模型能分别编码“实体1左侧的语境”“实体之间的核心短语”“实体2右侧的补充信息”。实验里把分段池化换回普通全局池化在同样的数据上关系抽取的准确率会掉几个点。这几个点放在远监督这种高噪声场景下差别就是模型可用和不可用之间的距离。3.4 输出与训练细节激活函数、dropout和softmax池化得到句子向量之后通常会先过一个带tanh激活的全连接层然后接softmax输出每个关系类别的概率。原版设计里没有用特别复杂的结构分类层就是简单的线性变换加softmax。训练时损失函数用交叉熵优化器用带学习率衰减的梯度下降。两个实践细节值得单独说。第一tanh激活比ReLU在这个任务上更稳定可能是因为tanh的输出有正有负对分段池化后的特征分布更友好ReLU在负半轴直接置零会丢掉一部分池化特征里的负向信号。第二池化之后接一个dropout比例一般在0.5左右能明显缓解远监督数据带来的过拟合。我自己复现时还试过在卷积前加dropout效果反而不如只在池化后加。4. 多示例学习模型如何对抗“错误标签”4.1 从句子训练改成“包”训练远监督数据里同一对实体往往对应多个句子。PCNN的训练单位不再是单条句子而是这些句子组成的“包”。一个包有一个标签——只要知识库里这对实体存在某条关系这个包就被标成正例如果没有任何关系就是负例也就是NA类。模型在推理时同样以包为单位给出预测实际应用中也通常是针对一个实体对输出一个关系判断而不是针对某一条句子。这个转变很关键。如果按句子训练一条被错误标成正例的噪声句子会直接教坏模型按包训练等于先把“哪条句子可信”的判断交给了模型数据本身的噪声被隔离了一层。4.2 “至少一条正确”的假设为什么要打成一个包这背后是“至少一条正确”的假设同一对实体一起出现的多条句子里至少有一条真正表达了目标关系。这个假设不总是成立偶尔真的会出现所有句子都是噪声的情况但相比“每条句子都必须正确”的强假设它宽松得多也现实得多。多示例学习要解决的就是在只知道“包里至少有一条正例”这个弱约束下怎么训练模型。它不要求模型对每个样本都预测正确只要求模型能识别出包里那条最有代表性的句子。这种设计天然适合远监督因为远监督的标签本质上就是包级别的——知识库说这对实体有关系但不告诉你具体是哪句话体现了这层关系。4.3 训练时怎么选句子包内最大概率句子当代表PCNN的做法很直接每个训练包在前向传播时让模型给包内所有句子打分选出得分最高、也就是模型最确信的那一条把它的预测结果当成整个包的预测用包的标签去计算损失。这就是“包内最大”的选择策略。它背后的逻辑是模型如果已经在学对的方向上那它打出的最高分句子大概率就是那条真正表达关系的句子用它的梯度更新参数相当于自动忽略了包里的其他噪声句子。这个策略实现起来很简单一个max操作而已但效果显著。和随机从包里抽一条句子训练相比用包内最大句子训练收敛更快最终准确率也更高。不过它有个潜在问题模型可能一开始就选错句子然后陷在错误的局部最优里。后面我会提到很多改进都在针对这个问题打补丁比如引入注意力机制对包内所有句子做加权而不是只选一条。5. 复现PCNN时我实际踩过的坑和调参记录5.1 数据预处理比模型更费劲如果你用过公开的远监督数据集会发现句子里面实体通常已经被替换成了占位符类似“某实体1”“某实体2”这样的标记。这个时候位置向量的计算要特别小心距离是基于原始实体位置的不是基于替换后占位符的词序。我自己第一次复现时就是在这里出了错——按替换后的句子算相对距离结果实体位置的语义全乱了训练出来的模型在验证集上几乎不涨。还有一个常见问题句子长度处理。常见做法是把句子截断到固定长度比如100个词超出部分直接丢掉。这个操作看似粗暴但效果不错因为关系表达通常集中在一个句子的中段。如果你把句子长度设得过短比如50两个实体距离稍远中间的核心动词就被截掉了设得太长又浪费计算。我建议先统计一下数据里两个实体之间的平均词数再决定截断长度。5.2 一份可以直接上手的超参数参考下面这组参数是我在复现时用的一组配置和学界公开的复现版本大体一致可以直接作为起点参数取值说明词向量维度50用预训练向量未登录词随机初始化位置向量维度5相对距离映射成低维向量5到10维就够卷积窗口大小3连续三个词的局部特征卷积核数量230每套核输出一个特征通道太少特征不足分段池化分段数3按两个实体切成左/中/右三段句子截断长度100超长截断不足补齐批大小50每个batch包含多个包学习率0.01配合按批次衰减dropout0.5作用在池化后的特征上需要说明的是这些数值在不同实现里会跟着数据集的规模浮动不用照抄。但有几点是通用的位置向量维度不要贪大卷积核数量太少比如少于50特征提取不够太多又让训练变慢学习率在这个任务上不建议用很大的初始值远监督数据噪声大梯度方向本身就不稳定步子迈大了容易直接发散。5.3 训练几个epoch后不涨先查这三处我碰到的训练不收敛问题十次里有八次能归结到三个地方。第一位置距离的计算有没有和实体替换保持一致这个前面说过是最隐蔽也最致命的。第二包内最大句子的选择是放在softmax之前还是之后——要放在softmax之后用概率选而不是用原始logit选不然数值范围会影响选择稳定性。第三负例包和正例包的比例是不是失衡远监督数据里负例通常远多于正例这种情况需要对负例做适量下采样或者调整类别权重。把这三处检查完大多数异常都能解决。还有一个容易忽略的经验多示例学习对初始化的敏感度比普通分类任务高。同一个配置随机种子不同最终结果可能相差一到两个点。复现论文结果时如果差一点点先换几个随机种子跑平均别急着怀疑模型结构有问题。6. 从PCNN到注意力升级这套设计思路带来的启发6.1 PCNNATT从“选一条”到“加权全部”PCNN之后社区里一个非常自然的改进方向是把包内最大句子的硬选择换成对包内所有句子按注意力权重做软加权。这就是后来常说的PCNNATT。注意力机制不再只依赖模型最自信的那一条句子而是综合包内所有句子的信息置信度高的句子获得更大权重噪声句子自动被压低。这个改进在标准评测上的确带来了稳定的提升也让PCNN这个底层结构在后续很长一段时间里继续被当作基线使用。硬选择和软加权各有利弊硬选择更简单、更容易分析模型到底在依赖哪条句子软加权理论上更稳但注意力分布有时候会学偏还需要额外观察。如果你要搭自己的系统我建议两个都跑一下用验证集决定。6.2 分段池化思想在今天依然值得借鉴或许你会问预训练语言模型出来之后PCNN还有没有用我的看法是作为单独的完整系统它有被替代的趋势但“分段池化”这个思想在很多任务里仍然值得借鉴。只要你的任务带有两个锚点比如两个实体、两个事件、两个时间点需要分别考虑锚点前后和中间的信息分段池化的思路就比全局池化更贴合语义结构。我在做其他方向的实验时也试过把类似的分段结构用在事件抽取里效果确实有所提升。另一个值得学习的点是PCNN对“噪声标签”的处理方式。它没有强行让模型去拟合每一条可能错误的句子而是通过多示例的框架把“哪条句子可信”这个难题交给了模型自己判断。在真实业务里标注数据永远不干净众包数据、远程对齐数据、日志挖掘数据都有各自的噪声模式。这种“给模型一点选择权”的设计思路比花大力气把每一份数据都清洗干净往往更划算也更容易落地。写在最后最后说点个人体会。PCNN这套东西技术上并不复杂从今天的眼光看甚至有点朴素但它提醒了我一件事模型结构不是越复杂越好关键是把归纳偏置做到任务上去。远监督数据噪声大它就设计一个包级别的学习框架关系线索位置分散它就设计一个分段池化。每一个设计决策都对应着一个真实的痛点这种“问题驱动”的思路比追着新结构跑要实用得多。如果你正在做关系抽取或者手头有类似的高噪声数据我建议先别急着上很重的模型把PCNN这类结构亲手复现一遍把多示例和分段池化的感觉吃透。等你真的理解“为什么选这条句子”“为什么分成三段”后面再换什么大模型都有了扎实的底子。那些看似老套的结构里其实藏着不少今天依然能用的设计哲学。

相关新闻

Java SPI机制详解:从ServiceLoader到插件化架构实践

Java SPI机制详解:从ServiceLoader到插件化架构实践

1. 理解SPI的设计初衷:为什么需要“反向”的插件机制1.1 从一次JDBC驱动加载说起很多人第一次接触到SPI,其实都是在完全没意识到的情况下。你写这段代码的时候:Connection conn DriverManager.getConnection(url, username, password);大多数…

2026/10/13 23:37:29 阅读更多 →
Docker入门实战:从镜像、容器到Compose,告别环境地狱

Docker入门实战:从镜像、容器到Compose,告别环境地狱

直接说结论:Docker 不是又一个让人望而却步的运维工具,它是现阶段解决“环境不一致”“部署流程混乱”最经济实用的方案。这篇文章适合刚接触 Docker、准备把它用到自己项目里的开发者,也适合那些被“在我机器上能跑”折磨过的测试和运维朋友…

2026/10/13 23:37:29 阅读更多 →
字符串重复子串检测:算法优化与KMP实践

字符串重复子串检测:算法优化与KMP实践

1. 题目背景与核心概念"重复的子字符串"是字符串处理中的经典问题,常见于算法面试和编程竞赛。给定一个字符串s,判断它是否可以由它的某个子串重复多次构成。例如:"abab" → 可由"ab"重复2次构成(返…

2026/10/13 23:37:29 阅读更多 →

最新新闻

微信小程序原生课程表开发:周视图与本地存储实战

微信小程序原生课程表开发:周视图与本地存储实战

简介:这份资源是面向微信小程序初学者与前端练手者的原生课程表项目源码,基于微信小程序原生框架实现,可帮助读者快速理解并搭建一个查看、管理每周课程安排的小工具,适合学生、教师及想熟悉小程序开发流程的开发者参考。压缩包为…

2026/10/14 0:32:51 阅读更多 →
C++ std::string 从入门到精通:C++20新特性与性能优化实战

C++ std::string 从入门到精通:C++20新特性与性能优化实战

1. 从C风格字符数组到string:为什么我们不再用char*刚入行那会儿,我接手过一个日志解析模块,满屏都是char buf[1024]和strcpy、strcat。有一次线上崩溃,查了两天才发现是某条日志超长导致缓冲区溢出,把相邻内存踩了。那…

2026/10/14 0:32:51 阅读更多 →
Python turtle绘图从入门到进阶:十几行代码玩转几何分形与随机图形

Python turtle绘图从入门到进阶:十几行代码玩转几何分形与随机图形

别人问我Python入门学什么图形库好,我基本都会先劝一句:别急着上那些花哨的可视化框架,先把turtle玩明白。这个库是Python自带的标准库,装好Python就能用,不需要额外依赖,打开IDLE就能敲出第一张图。虽然它…

2026/10/14 0:32:51 阅读更多 →
AI论文写作工具:查重与润色的高效解决方案

AI论文写作工具:查重与润色的高效解决方案

1. 论文写作的痛点与AI工具的价值写论文最头疼的莫过于查重和润色了。记得我研究生时期,为了把重复率从30%降到10%以下,整整熬了三个通宵手动改写。现在AI工具已经能帮我们解决这些问题,而且效果远超人工操作。目前主流的AI论文工具主要解决三…

2026/10/14 0:32:51 阅读更多 →
Higgsfield AI:短视频爆款的确定性生成引擎

Higgsfield AI:短视频爆款的确定性生成引擎

1. 这不是“AI一键生成”,而是用Higgsfield AI做爆款视频的实战路径最近在几个内容创作群和剪辑师私聊里,反复被问到一个问题:“那个叫Higgsfield AI的工具,真能做出播放量破百万的短视频?”说实话,第一次看…

2026/10/14 0:32:51 阅读更多 →
研发管理系统选型指南:敏捷协作与成本效益分析

研发管理系统选型指南:敏捷协作与成本效益分析

1. 研发管理系统选型困境与测评价值早上开周会时,技术总监又把茶杯重重砸在会议桌上——这已经是本月第三次因为任务进度不透明引发的争执。市场部抱怨需求响应慢,开发团队吐槽需求变更频繁,QA团队则苦于没有统一的测试用例管理平台。这种场景…

2026/10/14 0:31:51 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →