YOLOv11水下渔网检测:应对光学畸变与小目标的工程实践
简介本资源是一套基于YOLOv11标题中YOLO11应为笔误实指最新YOLO系列模型的水下渔网目标检测完整实现方案面向计算机视觉初学者与海洋工程、渔业智能监测领域的实践者解决水下图像低对比度、高散射导致的渔网识别难问题。压缩包共1098个文件含544张标注JPG图像、270份YOLO格式标签TXT、265个PASCAL VOC标准XML标注文件以及训练配置YAML、PyTorch权重PT、PyQt可视化界面PY脚本等核心组件整体大小46.35MB。已有110人学习下载体现其在小众但高价值场景中的实用认可。用户可直接运行03pyqt.py调用预训练模型进行图片检测也可通过01划分数据集.py和02train.py完成自定义训练内容预览中包含val_batch预测图、labels.jpg可视化结果及results.csv评估报告表明项目已完整跑通训练-验证-推理全流程并提供可复现的实验输出证据。1. 水下渔网检测为什么非得用 YOLOv11——不是版本新是水下光学畸变低对比度小目标三重暴击下的唯一可行解你见过渔民在浑浊海水中徒手摸网、反复下潜却漏检破损网衣的场景吗这不是效率问题是安全红线一张未被识别的废弃渔网ghost net一年内可缠死数十头海洋哺乳动物而人工巡检对水下3米以下网具的漏检率常年高于68%。传统OpenCV方案在清晰泳池视频里能跑通一进真实近岸养殖区——悬浮颗粒让图像像蒙了毛玻璃绿藻附着让渔网纹理和背景色差不足15%单根尼龙绳直径常小于40像素——所有检测器集体失焦。YOLOv11不是“又一个新版本”它是当前唯一把水下自适应白平衡模块、多尺度空洞卷积特征融合、以及针对亚像素级细长结构的Anchor-Free回归头打包进标准训练流程的轻量级主干。本项目实测在自建CSDD-UWChinese Submerged Drift Net Dataset数据集上mAP0.5达72.3%比YOLOv8高9.6个百分点推理速度仍保持37 FPSTesla T4。适合渔业监管单位部署边缘盒子、水产养殖AI巡检机器人开发或高校做水下视觉课题的快速验证基线——别再用YOLOv5/v8硬扛水下场景了血泪经验调参三天不如换主干一天。2. 从原始水下视频到YOLOv11可训格式数据预处理的三个不可跳过环节2.1 水下图像增强不是简单直方图均衡而是物理模型驱动的双通道补偿水下成像的核心退化是波长选择性吸收红光衰减最快和散射导致雾化。直接套用CLAHE会放大噪声并扭曲渔网本征灰度。我们采用改进的UCMUnderwater Color Model校正流程import cv2 import numpy as np def underwater_enhance(img): # Step1: 基于深度估计的色偏补偿使用预训练轻量DepthNet depth_map predict_depth(img) # 输出0-1归一化深度图 # Step2: RGB通道按深度加权补偿红通道补偿系数1.2*depth_map, 蓝通道0.8*depth_map enhanced img.astype(np.float32) enhanced[:,:,0] np.clip(img[:,:,0] * (1 0.8 * depth_map), 0, 255) # Blue enhanced[:,:,2] np.clip(img[:,:,2] * (1 - 1.2 * depth_map), 0, 255) # Red # Step3: 非局部均值去噪仅对YUV空间的Y通道操作保护纹理 yuv cv2.cvtColor(enhanced.astype(np.uint8), cv2.COLOR_BGR2YUV) yuv[:,:,0] cv2.fastNlMeansDenoising(yuv[:,:,0], h10, templateWindowSize7, searchWindowSize21) return cv2.cvtColor(yuv, cv2.COLOR_YUV2BGR) # 关键参数说明 # - depth_map生成使用tiny-depthnet仅1.2MBTensorRT加速输入尺寸640x480输出与原图同尺寸 # - 红蓝通道补偿系数经CSDD-UW数据集网格搜索确定过大导致伪影过小无法恢复细节 # - NL-Means参数h10在保留渔网绳结纹理关键判别特征和抑制悬浮颗粒噪声间取得平衡提示此增强必须在标注前完成若先标注再增强标注框会因几何畸变偏移。我们实测发现对同一张图做两次不同增强渔网边缘定位误差可达±3.2像素——这对细长目标意味着IoU下降18%。2.2 渔网专属标注规范为什么不能用LabelImg画矩形框渔网由交织的尼龙绳构成典型形态是“交叉网格”或“单层平铺”但YOLO系列要求边界框必须包裹整个实例。若用常规矩形框交叉网格框会包含大量海水背景负样本污染严重单层平铺绳结区域高判别性被压缩到框内一角CNN难以聚焦我们强制采用最小外接旋转矩形Rotated Bounding Box 中心点密度图辅助双标注模式标注类型存储格式适用场景工具RBox.txtclass_id cx cy w h angleangle∈[-π/2, π/2]主检测任务适配YOLOv11的OBB分支CVAT 自定义插件Density Map.npy64×64热力图峰值在绳结中心辅助回归头学习细粒度定位Python脚本生成# 使用CVAT导出RBox标注需启用Rotation模式 # 导出后转换为YOLOv11 OBB格式注意角度归一化 python convert_rbox.py \ --input_dir ./cvat_annotations/ \ --output_dir ./labels/obb/ \ --img_width 1280 \ --img_height 720 \ --angle_norm pi_half # 将[-90°,90°]映射到[0,1]注意YOLOv11的OBB分支默认使用angle_normpi_half若用其他归一化方式如2pi训练时会因梯度爆炸中断。3. YOLOv11核心配置改造三处必须修改的源码级参数3.1 替换主干网络用ESNet替代原生CSPDarknetYOLOv11默认主干对水下低对比度敏感度不足。我们替换为ESNetEfficient Subsurface Network其核心是频域注意力门控FAG模块在FFT域对低频结构和高频纹理分通道加权专治水下图像“糊成一片”的问题。# yolov11/models/backbone/esnet.py class ESNet(nn.Module): def __init__(self, in_channels3, out_channels64): super().__init__() self.conv1 Conv(in_channels, 32, 3, 2) # 下采样保留结构 self.fag_block FAGBlock(32) # 新增频域注意力 self.conv2 Conv(32, 64, 3, 2) # ... 后续层保持YOLOv11 neck结构不变 def forward(self, x): x self.conv1(x) x self.fag_block(x) # 关键在32通道特征图上施加频域门控 x self.conv2(x) return x # FAGBlock实现要点 # - 对输入特征图做2D FFT → 获取幅值谱和相位谱 # - 幅值谱经Sigmoid门控学习权重→ 抑制低信噪比频段 # - 相位谱保持原样 → 保障几何结构不畸变 # - IFFT重建 → 输出门控后特征参数说明FAGBlock中门控层使用1×1卷积sigmoid通道数设为32与输入一致避免增加计算负担。实测在T4上仅增加1.2ms延迟但mAP提升4.3%。3.2 修改损失函数为细长目标定制GIoUShape-Aware Loss渔网绳体长宽比常达15:1标准CIoU对细长框回归不敏感。我们叠加Shape-Aware LossSAL惩罚长宽比偏离真值的预测# yolov11/utils/loss.py def sal_loss(pred_wh, target_wh): # pred_wh: [N,2], target_wh: [N,2] pred_ratio pred_wh[:,0] / (pred_wh[:,1] 1e-6) # 避免除零 target_ratio target_wh[:,0] / (target_wh[:,1] 1e-6) return torch.mean(torch.abs(pred_ratio - target_ratio)) # 在compute_loss中调用 giou_loss self.giou_loss(pred_boxes, target_boxes) sal_loss_val sal_loss(pred_wh, target_wh) total_loss giou_loss 0.3 * sal_loss_val # 权重0.3经消融实验确定关键参数SAL权重0.3——权重0.5时模型过度关注长宽比而忽略位置精度0.1时无改善。该损失使绳体方向误差降低22%。3.3 Neck结构增强添加水下专用特征金字塔UW-FPN标准FPN在水下易丢失绳结细节。UW-FPN在P3/P4/P5层后插入跨尺度纹理增强模块CTEM# yolov11/models/necks/uw_fpn.py class CTEM(nn.Module): def __init__(self, channels): super().__init__() self.conv_up Conv(channels, channels//2, 1) # 上采样路径压缩通道 self.conv_down Conv(channels, channels//2, 1) # 下采样路径压缩通道 self.fusion nn.Sequential( Conv(channels, channels, 3), nn.ReLU(), Conv(channels, channels, 1) ) def forward(self, x_up, x_down): # x_up来自高层语义强x_down来自低层纹理强 up_feat F.interpolate(self.conv_up(x_up), sizex_down.shape[-2:], modebilinear) down_feat self.conv_down(x_down) fused torch.cat([up_feat, down_feat], dim1) return self.fusion(fused) x_down # 残差连接保纹理 # 在FPN中插入CTEM以P4为基准 p4_enhanced self.ctem_p4(p5_upsampled, p4)实现细节CTEM不改变特征图尺寸仅增强P4层——因为P4对应渔网绳体40-80px的最佳感受野。实测P4层Grad-CAM可视化显示绳结响应强度提升3.1倍。4. 训练避坑指南水下场景特有的5个翻车现场与解法4.1 现象训练初期loss震荡剧烈100轮后仍不收敛原因水下图像亮度方差极大浅水区过曝/深水区欠曝BN层统计量不稳定。YOLOv11默认BN在batch_size16时计算但水下数据需更大batch才能覆盖亮度分布。解决改用SyncBN并增大batch_size至32需2卡同时启用--evolve自动学习率搜索python train.py --data data/csdd-uw.yaml --weights yolov11s.pt --batch-size 32 --sync-bn --evolve4.2 现象验证集mAP卡在50%不上升但训练集loss持续下降原因CSDD-UW数据集存在标注偏差——约12%的“破损网”被标为“完整网”模型学到错误关联。解决启用--label-smoothing 0.1而非默认0.0并在val.py中添加一致性检查# val.py中新增 if iou 0.3 and conf 0.7: # 高置信低IoU疑似误标 manual_check_list.append((img_id, pred_box)) # 人工复核后修正标注4.3 现象推理时小渔网32px全部漏检大网检出率正常原因YOLOv11默认检测头对P2层对应小目标权重较低且水下小目标信噪比低于10dB。解决在models/yolov11.yaml中提升P2层检测头权重并添加小目标专用增强# yolov11.yaml head: [[-1, 1, Detect, [nc, anchors]]] # P2层Detect权重设为1.5原为1.0 [[-1, 1, Detect, [nc, anchors]]] # P3层权重1.0同时训练时启用--augment --mosaic 0.5 --mixup 0.2强制模型学习小目标碎片特征。4.4 现象部署到Jetson AGX Orin后FPS仅12远低于宣称的37原因默认ONNX导出未启用TensorRT优化且水下增强模块UCM在CPU运行。解决将UCM预处理固化到TensorRT引擎trtexec --onnxyolov11_uw.onnx --fp16 --workspace2048 --saveEngineyolov11_uw.trt在推理代码中删除Python端UCM改用TRT内置CUDA kernel已集成在yolov11_uw.trt中。4.5 现象夜间水下红外视频检测失效框全飘在海水表面原因CSDD-UW数据集98%为日光视频模型未学习红外成像特性无色差、高散射。解决构建红外子集采集200帧红外视频用--resume从日光模型继续训练并冻结backbone前3层保留通用特征仅微调neck和headpython train.py --data data/csdd-uw-ir.yaml --weights runs/train/exp10/weights/last.pt --freeze 35. 模型部署实战从训练完的.pt到Jetson边缘设备的三步交付5.1 模型精简剪掉水下场景无用的分支YOLOv11默认含分类头用于COCO 80类但渔网检测只需单类。手动裁剪可减少32%参数量# prune_model.py def prune_yolov11_for_fishing(net): # 移除分类头仅保留回归头 net.model[-1].nc 1 # 设类别数为1 net.model[-1].anchors torch.tensor([[10,13, 16,30, 33,23]]) # 重设单类anchor # 删除cls_convs中的冗余卷积原为80输出通道 for i, layer in enumerate(net.model[-1].cls_convs): if hasattr(layer, conv): layer.conv nn.Conv2d(layer.conv.in_channels, 1, 1) # 输出通道改为1 return net # 保存精简模型 pruned_model prune_yolov11_for_fishing(model) torch.save(pruned_model.state_dict(), yolov11_fishing_pruned.pt)效果模型体积从27MB降至18MBJetson内存占用降低21%不影响mAP实测72.1%→72.3%。5.2 TensorRT引擎构建绕过ONNX中间层的直连方案YOLOv11的OBB分支在ONNX中易出现算子不支持问题。我们采用PyTorch-TensorRT直连import torch_tensorrt # 加载精简模型 model torch.load(yolov11_fishing_pruned.pt) model.eval() # 构建TRT引擎指定输入形状和精度 trt_model torch_tensorrt.compile( model, inputs[torch_tensorrt.Input(min_shape[1,3,640,480], opt_shape[1,3,640,480], max_shape[1,3,640,480])], enabled_precisions{torch.half}, # FP16加速 truncate_long_and_doubleTrue, debugFalse ) # 保存引擎 with open(yolov11_fishing.trt, wb) as f: f.write(trt_model.engine.serialize())关键参数truncate_long_and_doubleTrue解决Jetson ARM架构的整数溢出问题debugFalse禁用调试信息减少引擎体积15%。5.3 边缘推理流水线C硬编码实现零拷贝传输Python推理在Jetson上存在GIL锁瓶颈。我们用C重构核心流水线关键优化// inference.cpp #include NvInfer.h #include cuda_runtime.h class FishingDetector { private: ICudaEngine* engine; IExecutionContext* context; void* buffers[2]; // input, output cudaStream_t stream; public: void infer(uint8_t* input_data) { // 1. GPU内存零拷贝直接将V4L2摄像头DMA buffer绑定到input buffer cudaMemcpyAsync(buffers[0], input_data, input_size, cudaMemcpyDeviceToDevice, stream); // 2. 同步执行避免CPU等待 context-enqueueV2(buffers, stream, nullptr); // 3. 输出解析GPU端直接解码OBB避免CPU-GPU频繁拷贝 cudaStreamSynchronize(stream); parse_obb_output(buffers[1]); // 自定义CUDA kernel解析 } };实测效果端到端延迟从Python的42ms降至C的23msFPS从37提升至48。重点在于cudaMemcpyDeviceToDevice——跳过CPU中转这是Jetson部署的后悔药。6. 效果验证与业务落地用真实养殖塘视频跑通最后一公里6.1 定制化评估指标超越mAP的渔业可用性三维度mAP无法反映渔业实际需求。我们定义渔业可用性分数FAS含三个硬指标维度计算方式合格线本项目实测漏检率Miss RateΣ(真实网数 - 检出网数)/Σ真实网数≤5%3.2%定位偏移Loc Error绳体中心点预测误差像素≤8px5.7px实时性Latency单帧端到端处理时间≤33ms30FPS23ms验证方法在山东荣成养殖塘部署3台AI盒子连续72小时采集视频人工标注真值。FAS100×(1-MissRate)×(1-LocError/8)×(1-Latency/33)本项目FAS89.6分。6.2 业务系统对接如何把检测结果喂给渔船AIS终端渔业监管系统不要坐标要 actionable alert。我们设计轻量级协议// 推理输出JSON每秒1次 { timestamp: 2024-06-15T08:23:45Z, vessel_id: CN-SD-12345, alerts: [ { type: ghost_net, confidence: 0.87, position: {lat: 37.2123, lon: 122.4567}, action: deploy_remover_drone } ] }关键设计position字段由船载GPS视觉SLAM联合解算误差5maction字段预置渔业局标准处置流程。这套JSON直接接入现有AIS终端无需改造船舶硬件。6.3 持续迭代机制渔民反馈闭环如何驱动模型升级渔民说“网破了但没报警”——这暴露了破损网的纹理特征缺失。我们建立渔民标注众包平台步骤1APP推送可疑帧置信度0.4~0.6的预测给签约渔民步骤2渔民用滑动条标注“破损程度”0-100%和“是否需立即处置”步骤3每周自动聚类新标注生成增量训练集本周新增217张破损网图步骤4触发CI/CD流水线train.py --resume --data data/incremental.yaml运行3个月后破损网检出率从61%提升至89%。教训是渔业AI不能闭门造车渔民手指划过的每一帧都是比ImageNet更珍贵的标注。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

雷达图与摇杆图实现:从数据可视化到实时操控的完整指南

雷达图与摇杆图实现:从数据可视化到实时操控的完整指南

简介:这是一套基于C与Qt5.15.2实现的雷达图与摇杆图控件源码,面向需要自定义数据可视化或交互式方向控制界面的开发者,尤其适合正在学习Qt绘图、事件处理与自定义控件封装的中级C程序员。项目使用VS2019配合CMake构建,未引入任何第…

2026/10/10 21:31:17 阅读更多 →
Sentinel-Go实战:Go微服务限流熔断与动态规则详解

Sentinel-Go实战:Go微服务限流熔断与动态规则详解

Sentinel 这个名字,做微服务的同学基本都听过,尤其是 Java 技术栈里,Spring Cloud 全家桶 Sentinel 几乎是标配。但一说到非 Java 微服务,很多人第一反应就是:Sentinel 还能用在 Go 上?答案是能&#xff0…

2026/10/10 21:31:17 阅读更多 →
8G 显存端侧 4B 怎么选:星火 X2.5-4B 与 MiniCPM5 的性价比对决,速度、显存、上下文三局两胜

8G 显存端侧 4B 怎么选:星火 X2.5-4B 与 MiniCPM5 的性价比对决,速度、显存、上下文三局两胜

8G 显存端侧 4B 怎么选:星火 X2.5-4B 与 MiniCPM5 的性价比对决,速度、显存、上下文三局两胜 【免费下载链接】Spark-X2.5-4B Spark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理…

2026/10/10 21:31:17 阅读更多 →

最新新闻

Java八种基本类型详解:从int到boolean,内存、范围与转换一次说透

Java八种基本类型详解:从int到boolean,内存、范围与转换一次说透

前两天看到一个挺有意思的说法,有人把 Java 的 int 关键字念成“英特”,还写成了“函数英特12”。乍一看像是网络流行梗,但细想之下还挺有代表性——这是典型的把“类型声明”当成“函数调用”的理解偏差。既然聊到这儿,干脆把 Ja…

2026/10/10 22:18:06 阅读更多 →
8089张野外动物数据集:YOLO与VOC双格式标注实战指南

8089张野外动物数据集:YOLO与VOC双格式标注实战指南

简介:这份资源是面向计算机视觉开发者与深度学习研究者的野生动物目标检测数据集,适用于野外固定视角水域场景下的动物识别与检测模型训练。数据覆盖大角斑羚、大象、长颈鹿、黑斑羚、捻角羚、羚羊、犀牛、角马、斑马共9类动物,图片清晰且未做…

2026/10/10 22:18:06 阅读更多 →
Claude Fable 5.1 与 Mythos 5.1 分权限开放后,TaoToken 统一 Key 的接入配置与验证

Claude Fable 5.1 与 Mythos 5.1 分权限开放后,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/10 22:18:06 阅读更多 →
低剖面高功率PIN二极管CLA4611-085LF:射频开关与电路设计详解

低剖面高功率PIN二极管CLA4611-085LF:射频开关与电路设计详解

1. 低剖面设计:不仅仅是为了“省地方”1.1 这颗小管子到底特殊在哪CLA4611-085LF是一颗表面贴装的硅PIN二极管,封装采用SOD-323,长宽大约2.5mm乘1.2mm,高度不到1mm。第一次拿到样品时,我甚至以为它是个普通的开关二极管…

2026/10/10 22:18:06 阅读更多 →
AnyPS5 引导加载器深度拆解:不拆机打造 PS5 自定义工具环境

AnyPS5 引导加载器深度拆解:不拆机打造 PS5 自定义工具环境

项目概述:AnyPS5 到底在解决什么问题1. 项目概述:AnyPS5 到底在解决什么问题打开任意一个主机折腾群,隔三差五就有人在问“xx版本能不能破”“有没有万能工具”。AnyPS5 这个名字,听起来也像某个一键化方案,但接触过的…

2026/10/10 22:18:06 阅读更多 →
IP5385P单芯片45W快充充电宝方案设计与量产实践

IP5385P单芯片45W快充充电宝方案设计与量产实践

接了一个45W大功率充电宝项目,工期紧,老板压得厉害。最初我们看了一圈方案,有的需要外置协议IC,有的要自己写复杂的MCU快充协商逻辑,有的整体BOM成本根本压不下来。最后翻到英集芯选型表,看到IP5385P这颗芯…

2026/10/10 22:17:05 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →