基于数据分析的光伏板积灰检测与清洗策略优化
简介这份资源面向光伏电站运维技术人员、数据分析与数学建模方向的高校师生围绕光伏板积灰导致的发电效率下降问题提供一套从数据清洗到清洗策略优化的完整建模方案。内容涵盖对4个电站发电量、辐照及气象数据的预处理按小时整理关键指标针对辐照仪读数偏差与PR值波动构建新的积灰程度衡量指标识别历史清洗节点并给出实时预警规则再结合清洗成本与频率建立动态决策模型分析清洗价格对决策的影响平衡成本与发电效益。资源包为1个docx文档约17KB结构紧凑便于快速阅读与复现。目前已有407人学习适合希望掌握数据预处理、指标构建与成本效益分析的读者参考可据此理解各步骤间的逻辑关系并尝试复现建模过程。1. 光伏板积灰这件事为什么值得用数据认真算一笔账很多电站的清洗决策至今还停留在“看着脏了就洗”或者“固定每季度洗一次”的阶段。某西北地区一座 20MW 的分布式电站运维团队曾按固定周期清洗一年下来清洗费用花了将近四十万但发电量提升却远低于预期——因为有些月份沙尘少洗了等于白洗有些月份沙尘暴连着一周洗完三天又积了一层。这就是典型的“凭感觉运维”翻车现场。基于数据分析的光伏板积灰检测与清洗策略优化核心要解决的就是这个问题用发电数据、气象数据和清洗记录反推出积灰对发电效率的实际影响再据此决定什么时候洗、洗哪几排、洗的频率多高才划算。它适合有基本数据采集能力逆变器有发电量记录、场站有气象站或至少能拿到辐照数据的电站运维人员、数据分析师以及做电站资产管理的技术负责人。不需要额外加装昂贵的灰尘传感器用已有数据就能跑起来。2. 积灰检测的数据底座从哪些字段开始搭2.1 最小可用数据集五个字段就能起步做积灰检测最怕一上来就想搞“大而全”的数据平台。我一般建议先从最小可用数据集开始确认分析链路能跑通再逐步加字段。核心思路是用“实际发电量”和“理论发电量”的比值也就是性能比 PR来间接反映积灰程度。积灰越厚PR 越低。最小数据集需要这些字段字段名含义典型来源采样频率timestamp时间戳逆变器/数采15分钟或1小时power_kw实际发电功率逆变器同上irradiance水平面或倾斜面辐照度气象站/卫星数据同上temp_module组件背板温度温度传感器/推算同上clean_flag是否处于清洗后时段运维记录事件标记如果场站没有辐照度传感器可以用卫星辐照数据替代精度会打折扣但趋势判断够用。温度字段如果没有实测可以用环境温度加一个经验温升模型估算后面代码里会提。2.2 理论发电量怎么算一个可复现的基线模型有了数据下一步是算“如果组件是干净的应该发多少电”。这个基线算得准不准直接决定积灰检测的灵敏度。常见做法是用清洗后前几天的数据拟合一个简化模型import pandas as pd import numpy as np def compute_clean_baseline(df, clean_flag_colclean_flag, irradiance_colirradiance, temp_coltemp_module, power_colpower_kw): 用清洗后时段的数据拟合一个简化的干净组件发电模型。 模型形式: power irradiance * (a b * temp_module) 这里用线性回归拟合系数 a 和 b。 # 只取清洗后标记为干净的时段 clean_df df[df[clean_flag_col] 1].copy() if len(clean_df) 50: raise ValueError(清洗后数据点太少无法拟合可靠基线) # 构造特征矩阵 X clean_df[[irradiance_col, temp_col]].copy() X[irradiance_x_temp] X[irradiance_col] * X[temp_col] X[intercept] 1.0 y clean_df[power_col].values # 最小二乘拟合 coeffs, residuals, rank, sv np.linalg.lstsq( X[[intercept, irradiance_col, irradiance_x_temp]].values, y, rcondNone ) baseline_params { intercept: coeffs[0], coef_irradiance: coeffs[1], coef_irradiance_temp: coeffs[2] } return baseline_params def predict_clean_power(df, params, irradiance_colirradiance, temp_coltemp_module): 用拟合好的基线参数预测干净状态下的理论功率 pred (params[intercept] params[coef_irradiance] * df[irradiance_col] params[coef_irradiance_temp] * df[irradiance_col] * df[temp_col]) return np.maximum(pred, 0) # 功率不能为负这段代码的逻辑是清洗后的组件代表“干净状态”用这段时间的辐照、温度和功率拟合一个线性关系。之后把这个关系套到所有时段上得到“理论干净功率”。实际功率除以理论功率就是当前时段的清洁度指标。参数说明clean_flag需要运维记录配合至少标记出每次清洗后 2-3 天内的数据。如果清洗记录不全可以用“连续无沙尘天气且 PR 突然回升”来自动识别清洗事件。irradiance建议用倾斜面辐照如果只有水平面数据需要做倾角转换转换模型可以用 Perez 模型或简单的余弦修正。2.3 积灰指数把功率差变成一个可追踪的指标有了理论功率和实际功率就可以定义积灰指数Dust IndexDIdef compute_dust_index(df, baseline_params): 计算积灰指数 DI 1 - 实际功率 / 理论干净功率 DI 越接近 0 越干净越接近 1 积灰越严重。 对 DI 做滑动平均消除云层遮挡等短期波动。 df[power_clean_pred] predict_clean_power(df, baseline_params) # 避免除零 mask df[power_clean_pred] 1.0 df.loc[mask, di_raw] 1 - df.loc[mask, power_kw] / df.loc[mask, power_clean_pred] df[di_raw] df[di_raw].clip(lower0, upper1) # 滑动平均窗口建议 6-12 小时对应 24-48 个 15 分钟点 df[di_smooth] df[di_raw].rolling(window24, min_periods6).mean() return df这里的关键参数是滑动窗口长度。窗口太短云层飘过就会让 DI 剧烈波动窗口太长积灰的渐变过程会被抹平。我一般先用 24 个点6 小时试如果当地天气多变可以放宽到 48 个点。DI 的绝对值不需要追求物理精确重要的是它的变化趋势——DI 从 0.05 涨到 0.15说明积灰在加重这就足够指导清洗决策了。3. 清洗策略优化从“该不该洗”到“洗哪几排”3.1 清洗阈值怎么定用经济性反推而不是拍脑袋很多运维手册会写“PR 低于 80% 就该清洗”但这个阈值太粗。真正合理的阈值应该由经济性决定清洗成本 vs 发电增益收益。假设单次清洗成本为 C元清洗后 DI 从当前值降到接近 0发电增益为 ΔEkWh电价为 P元/kWh那么清洗的净收益为净收益 ΔE × P - C只有当净收益为正时清洗才划算。ΔE 可以用 DI 和理论发电量估算def should_clean(di_current, power_clean_pred_sum, price, clean_cost, di_after_clean0.02, min_gain_ratio0.1): 判断是否值得清洗。 di_current: 当前积灰指数 power_clean_pred_sum: 未来预期理论发电量比如未来一周 price: 上网电价 clean_cost: 单次清洗成本 di_after_clean: 清洗后能达到的 DI 水平 min_gain_ratio: 最小增益比例低于此值不洗 di_reduction max(di_current - di_after_clean, 0) expected_gain_kwh power_clean_pred_sum * di_reduction expected_gain_money expected_gain_kwh * price if expected_gain_money clean_cost * (1 min_gain_ratio): return False, expected_gain_money - clean_cost return True, expected_gain_money - clean_cost参数说明power_clean_pred_sum需要结合未来天气预报用历史同期数据或数值天气预报的辐照预报来估算。min_gain_ratio设 0.1 是留 10% 的安全边际避免临界决策。di_after_clean一般取 0.02-0.05取决于清洗方式人工擦拭比高压水枪更干净。这个模型跑出来的阈值往往比“PR 低于 80%”更激进或更保守取决于当地电价和清洗成本。某电站用这个模型算出来在沙尘季 DI 超过 0.08 就该洗而非沙尘季 DI 到 0.15 才值得洗。一年下来清洗次数减少了三成发电量反而略升。3.2 分排分区策略不是所有组件都值得洗一个电站里不同排、不同区域的积灰程度可能差异很大。靠近道路的排积灰快靠近水源的排积灰慢地势高的地方风大积灰少低洼处积灰多。如果全站统一清洗等于让干净的组件陪脏组件一起“洗澡”浪费成本。分排策略的做法是给每台逆变器或每个组串计算独立的 DI 序列然后按 DI 高低排序优先清洗 DI 最高的区域。代码上只需要在计算 DI 时按设备 ID 分组def compute_di_by_group(df, baseline_params, group_colinverter_id): 按逆变器或组串分组计算 DI用于分排清洗决策 results [] for gid, group in df.groupby(group_col): group group.copy() group[power_clean_pred] predict_clean_power(group, baseline_params) mask group[power_clean_pred] 1.0 group.loc[mask, di_raw] 1 - group.loc[mask, power_kw] / group.loc[mask, power_clean_pred] group[di_raw] group[di_raw].clip(lower0, upper1) group[di_smooth] group[di_raw].rolling(window24, min_periods6).mean() group[group_id] gid results.append(group) return pd.concat(results, ignore_indexTrue)分组后可以画一张“积灰热力图”横轴是时间纵轴是逆变器编号颜色深浅代表 DI。这张图能直观看出哪些设备积灰最快哪些一直很干净。运维人员拿着这张图去安排清洗比挨个排查高效得多。3.3 清洗效果验证洗完了到底有没有用清洗策略优化不是一锤子买卖每次清洗后都要验证效果。验证方法很简单对比清洗前后各 24 小时的 DI 均值。如果清洗后 DI 没有明显下降要么是清洗方式有问题要么是 DI 计算模型需要校准。def verify_clean_effect(df, clean_time, group_colinverter_id, window_hours24): 验证清洗效果对比清洗前后 window_hours 内的 DI 均值。 clean_time: 清洗发生的时间戳 before df[(df[timestamp] clean_time - pd.Timedelta(hourswindow_hours)) (df[timestamp] clean_time)] after df[(df[timestamp] clean_time) (df[timestamp] clean_time pd.Timedelta(hourswindow_hours))] before_di before.groupby(group_col)[di_smooth].mean() after_di after.groupby(group_col)[di_smooth].mean() effect pd.DataFrame({ di_before: before_di, di_after: after_di, di_drop: before_di - after_di }) effect[drop_ratio] effect[di_drop] / effect[di_before].replace(0, np.nan) return effect.sort_values(di_drop, ascendingFalse)如果某台逆变器的di_drop接近零说明清洗没起作用需要检查是不是清洗时组件已经干净了白洗了或者清洗方式不对比如只用干布擦没用水灰尘只是被抹匀了。这个验证环节是很多团队忽略的但它是策略持续优化的后悔药——没有它你永远不知道钱花得值不值。4. 避坑与排查积灰检测落地时最容易翻车的五个地方4.1 辐照数据缺失或漂移导致 DI 整体偏高现象算出来的 DI 长期在 0.2 以上但组件看起来并不脏清洗后 DI 也降不到 0.05 以下。原因辐照传感器积灰或老化读数偏低导致理论功率被低估DI 被高估。或者传感器安装角度不对接收到的辐照本身就不代表组件平面的真实辐照。解决定期清洗和校准辐照传感器至少每季度一次。如果有多台传感器做交叉比对。没有传感器就用卫星数据但要知道卫星数据在沙尘天气下误差更大DI 的绝对值只能做趋势参考不能做绝对阈值判断。4.2 清洗记录不完整基线模型拟合到脏数据现象基线模型拟合出来的系数很奇怪预测的理论功率和实际功率偏差很大。原因clean_flag标记不准确把清洗后但实际还没洗干净的数据当成了干净数据或者把清洗前的数据误标为清洗后。解决清洗记录至少精确到天最好精确到小时。如果记录缺失可以用“DI 突然下降超过 0.05”来自动识别清洗事件但这个方法在阴雨天会误判。更稳妥的做法是每次清洗后手动标记坚持三个月就能积累足够的干净数据。4.3 温度模型不准高温时段 DI 虚高现象夏天中午 DI 明显偏高但早晚正常看起来像是积灰在中午加重——这不符合物理规律。原因温度对功率的影响是非线性的简单的线性温度系数在高温段会低估功率损失导致 DI 虚高。或者温度传感器测的是环境温度而非背板温度两者在中午能差 20 度以上。解决如果只有环境温度用经验公式估算背板温度T_module ≈ T_ambient irradiance / 800 * 30。如果已经有背板温度检查温度系数是否合理晶硅组件的功率温度系数一般在 -0.3%/°C 到 -0.45%/°C 之间。拟合基线时可以加入温度的二次项来改善高温段的拟合精度。4.4 逆变器限发或故障被误判为积灰现象某台逆变器的 DI 突然飙升但组件并不脏清洗后也没改善。原因逆变器限发、降额运行或故障停机导致实际功率低于理论功率被 DI 算法误判为积灰。解决在计算 DI 之前先过滤掉逆变器限发和故障时段。逆变器通常有状态码把非正常发电状态的数据剔除。如果没有状态码可以用“实际功率持续低于理论功率的 50% 且辐照正常”来识别异常这些时段不参与 DI 计算。4.5 清洗成本核算漏项经济性判断失真现象模型算出来清洗很划算但实际执行后财务上并没有省钱。原因清洗成本只算了水费和人工漏掉了设备折旧、车辆调度、清洗对组件的潜在损伤、以及清洗期间停机损失的电量。解决把清洗成本拆细直接人工 水/清洗剂 设备摊销 停机损失。停机损失可以用清洗时段的理论发电量乘以电价来估算。把这些都算进去清洗的盈亏平衡点会明显上移决策会更保守但更接近真实经济性。5. 从离线分析到在线预警把 DI 做成每日自动跑的巡检脚本前面讲的都是离线分析数据导出来、跑一遍、看结果。但积灰是持续变化的等你想起来跑分析的时候可能已经白白损失了好几天的发电量。更实用的做法是把这套逻辑封装成一个每日自动运行的脚本早上出报告运维人员上班就能看到“今天哪几台逆变器该洗了”。具体做法是用schedule或系统定时任务每天凌晨拉取前一天的数据计算 DI和阈值比较输出一份简短的清洗建议清单。代码结构大致如下import schedule import time from datetime import datetime, timedelta def daily_dust_report(): 每日积灰巡检拉数据、算DI、出建议 yesterday datetime.now() - timedelta(days1) df fetch_data(startyesterday - timedelta(days7), endyesterday) # 用最近一次清洗后的数据拟合基线 baseline_params compute_clean_baseline(df) # 按逆变器分组计算 DI df_with_di compute_di_by_group(df, baseline_params) # 取最新时刻的 DI latest df_with_di.sort_values(timestamp).groupby(inverter_id).tail(1) # 判断哪些需要清洗 recommendations [] for _, row in latest.iterrows(): # 用未来一周的理论发电量估算收益 future_energy estimate_future_energy(row[inverter_id], days7) should, net_gain should_clean( di_currentrow[di_smooth], power_clean_pred_sumfuture_energy, price0.35, # 电价按当地实际填 clean_cost800 # 单次清洗成本按实际填 ) if should: recommendations.append({ inverter_id: row[inverter_id], di: round(row[di_smooth], 3), expected_net_gain: round(net_gain, 1) }) # 按净收益排序输出 recommendations.sort(keylambda x: x[expected_net_gain], reverseTrue) print(f {yesterday.date()} 清洗建议 ) for rec in recommendations: print(f逆变器 {rec[inverter_id]}: DI{rec[di]}, 预期净收益{rec[expected_net_gain]}元) return recommendations # 每天凌晨2点跑 schedule.every().day.at(02:00).do(daily_dust_report) while True: schedule.run_pending() time.sleep(60)这个脚本的关键参数是price和clean_cost必须按当地实际情况填否则建议会失真。estimate_future_energy可以用历史同期数据做简单估算也可以接入数值天气预报的辐照预报。如果场站有多个逆变器建议按净收益排序优先洗收益最高的那几台而不是全站一起洗。还有一个进阶技巧把 DI 的历史曲线和清洗记录叠加画图观察每次清洗后 DI 的下降幅度和回升速度。回升速度快的区域说明积灰速率高可以适当缩短清洗间隔回升速度慢的区域可以拉长间隔。这个“积灰速率”指标比 DI 绝对值更有指导意义因为它直接告诉你“洗完之后能干净多久”。我自己在这个方向上踩过的最大的坑是早期太迷信 DI 的绝对值花了很多时间校准模型想让 DI 精确到小数点后两位。后来发现运维决策根本不需要那么高的精度DI 的趋势和相对排序才是关键。把模型跑通、把数据链路理顺、把清洗记录坚持记好比追求模型精度重要得多。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

3B开源GUI模型本地部署实战:小显存跑AI操作电脑助手

3B开源GUI模型本地部署实战:小显存跑AI操作电脑助手

最近几天,一个来自某高校开源团队的3B参数GUI交互模型在开发者圈子里讨论度很高。社区晒出的评测数据很有意思:在同一条GUI操作基准上,它把某闭源旗舰大模型压在了身后。我第一时间把权重下载下来,又翻出一台只有8G显存的旧工作站…

2026/10/17 14:52:34 阅读更多 →
水星工业相机开发实战:从SDK配置到稳定采集的完整指南

水星工业相机开发实战:从SDK配置到稳定采集的完整指南

接到这个开发任务的时候,我其实有点懵——对方只丢给我一台水星系列工业相机,说“你把它接入系统,能采图就行”。等我把相机真正跑起来,才发现工业相机和消费级摄像头完全是两个物种。这个系列因体积小、接口丰富,在很…

2026/10/17 14:52:34 阅读更多 →
具身智能老股交易活跃背后:估值逻辑切换与退出博弈解析

具身智能老股交易活跃背后:估值逻辑切换与退出博弈解析

具身智能跨过分水岭,遍地都是想卖老股的投资人。这句话最近在我们这个圈子里流传很广,说得直白,却也点破了当前一级市场最拧巴的状态。我从2016年前后开始接触硬科技项目,在具身智能这条赛道上看过上百个早期项目,也亲…

2026/10/17 14:52:34 阅读更多 →

最新新闻

TCN外汇预测:比LSTM更稳的时间序列模型落地方案

TCN外汇预测:比LSTM更稳的时间序列模型落地方案

简介:这是一份基于Python和TensorFlow实现时间卷积神经网络(TCN)进行时间序列预测的完整项目实例,面向初级及以上水平的数据科学家、机器学习爱好者,以及需要处理金融行情等长期序列分析任务的专业人士。资源共1个文件…

2026/10/17 15:47:12 阅读更多 →
矩阵分析考点全解析:从基底到Jordan标准型的工程应用

矩阵分析考点全解析:从基底到Jordan标准型的工程应用

简介:一份重庆邮电大学矩阵分析研究生期末试卷配套解析PDF,适合正在备考矩阵分析、需要刷题与核对解题步骤的理工科研究生。内容按试卷原题顺序给出八大题的完整解答,覆盖线性空间基与过渡矩阵、矩阵范数、线性变换矩阵表示及核与值域、行列因…

2026/10/17 15:47:12 阅读更多 →
Kafka×AI架构实战:从Docker部署到Lag排查与性能优化

Kafka×AI架构实战:从Docker部署到Lag排查与性能优化

1. 为什么Kafka突然成了AI基础设施的标配过去半年我一直在折腾一件事:把Kafka这个老牌消息队列跟AI模型服务打通。刚开始团队里也有人质疑,说AI接入走 HTTP 请求不就行了,为什么非要绕一层Kafka?等到真的把生产环境的业务日志、用…

2026/10/17 15:47:12 阅读更多 →
Web Notification API实战:从权限申请到Service Worker消息推送

Web Notification API实战:从权限申请到Service Worker消息推送

我们做前端经常会收到产品需求:“用户下单后要发个通知”、“有站内消息时浏览器最好弹一下”。以前一提到通知,第一反应就是短信、邮件、推送SDK,其实浏览器本身就支持一套原生的通知能力,利用好它,很多轻量级提醒需求…

2026/10/17 15:47:12 阅读更多 →
CNN卷积神经网络入门:从卷积层、池化到PyTorch实战

CNN卷积神经网络入门:从卷积层、池化到PyTorch实战

1. CNN为什么存在:从一次全连接网络的翻车说起先讲一个我刚开始接触深度学习时的真实经历。当时我拿到一个手写数字识别任务,觉得神经网络这东西不就是一个接一个的全连接层吗?把图片拉平成一维向量,丢进网络里,反正梯…

2026/10/17 15:47:12 阅读更多 →
Agent+RAG+知识图谱:从事实性失真到可靠推理的工程实践

Agent+RAG+知识图谱:从事实性失真到可靠推理的工程实践

简介:这是2025年Packt出版的英文原版PDF,系统讲述如何结合大语言模型(LLMs)、检索增强生成(RAG)与知识图谱(KGs)构建现代AI智能体,适合具备机器学习与自然语言处理基础、…

2026/10/17 15:46:11 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →