MMAction2 中 HMDB51 数据集的完整准备指南:标注下载、视频获取与帧/光流提取
人工智能计算机视觉深度学习【免费下载链接】mmaction2OpenMMLabs Next Generation Video Understanding Toolbox and Benchmark项目地址https://gitcode.com/gh_mirrors/mm/mmaction2点击查看免费下载导读HMDB51 是视频动作识别领域最经典的基准数据集之一由 51 类日常人体动作组成广泛应用于 TSN、SlowFast、TSM 等识别模型的评估。本文基于 MMAction2 仓库中 tools/data/hmdb51/README.md 所描述的完整数据准备流程结合仓库内的真实脚本源码与配置逐步骤讲解如何下载标注文件与视频、使用 denseflow 或 OpenCV 抽取 RGB 帧与光流、生成训练/验证文件列表并给出目录结构校验与后续训练入口。读完本文你将能够从零开始在本地完整准备一个可直接用于 MMAction2 训练与测试的 HMDB51 数据集。1. 数据集概览与准备工作1.1 HMDB51 是什么HMDB51Human Motion DataBase由 Kuehne 等人于 2011 年提出包含51 个人体动作类别如 brush_hair、cartwheel、climb、dive、kiss、run、wave 等视频来自电影片段与 YouTube 等来源动作类别较 UCF101 更具多样性是衡量识别模型泛化能力的常用基准。仓库中 tools/data/hmdb51/label_map.txt 完整列出了这 51 个类别的名称。引用该数据集时官方建议使用以下 BibTeXarticle{Kuehne2011HMDBAL, title{HMDB: A large video database for human motion recognition}, author{Hilde Kuehne and Hueihan Jhuang and E. Garrote and T. Poggio and Thomas Serre}, journal{2011 International Conference on Computer Vision}, year{2011}, pages{2556-2563} }1.2 前置条件在执行任何脚本之前请确保当前工作目录位于仓库中的tools/data/hmdb51/目录下cd $MMACTION2/tools/data/hmdb51/此外下载的标注文件与视频均为.rar压缩格式因此需要安装unrarsudo apt-get install unrar若当前环境没有 sudo 权限可参照社区提供的免 sudo 安装脚本如 innerlee/setup 中的zzunrar.sh进行便捷安装。安装完成后可通过unrar命令验证是否可用。说明完整的准备流程共 5 步——准备标注Step 1、准备视频Step 2、抽取 RGB 帧与光流Step 3可选、生成文件列表Step 4、检查目录结构Step 5。其中 Step 3 仅在需要以 rawframes帧格式训练时执行若你直接使用视频加载器video loader可以跳过帧抽取。2. 步骤一下载并解压标注文件运行仓库提供的脚本 tools/data/hmdb51/download_annotations.shbash download_annotations.sh从脚本源码可以看到其内部执行逻辑自动创建data/hmdb51/annotations目录脚本中DATA_DIR../../../data/hmdb51/annotations即相对于tools/data/hmdb51/目录通过wget下载官方提供的test_train_splits.rar即 7030 训练/测试划分文件--no-check-certificate用于绕过证书校验使用unrar x解压随后删除压缩包并将解压出的testTrainMulti_7030_splits/*.txt全部移动到annotations目录下。解压完成后data/hmdb51/annotations/下会得到每个类别的划分文件如brush_hair_test_split1.txt等其中每行形如April_09_brush_hair_u_nm_np1_ba_goo_0 11表示属于训练集2表示属于测试集这是 HMDB51 官方的 7030 划分约 70% 训练、30% 测试。提示download_annotations.sh脚本最后执行了rm test_train_splits.rar清理压缩包这是脚本自身的清理行为请勿手动删除已经解压好的标注文件。3. 步骤二下载并解压视频运行 tools/data/hmdb51/download_videos.shbash download_videos.sh脚本的执行流程对应仓库源码创建data/hmdb51/videos目录下载官方原始视频压缩包hmdb51_org.rarunrar x ./hmdb51_org.rar解压得到按类别打包的多个子压缩包遍历解压出的所有.rar子压缩包每个类别一个逐个unrar x解压出视频清理全部.rar文件。解压完成后data/hmdb51/videos/下应包含 51 个类别子目录每个子目录内是对应类别的.avi视频例如data/hmdb51/videos/brush_hair/April_09_brush_hair_u_nm_np1_ba_goo_0.avi data/hmdb51/videos/wave/20060723sfjffbartsinger_wave_f_cm_np1_ba_med_0.avi4. 步骤三抽取 RGB 帧与光流可选如果你希望使用 rawframes帧序列格式进行训练例如 TSN、SlowFast、TSM 等模型的常用做法则需要将视频抽帧。若只使用视频加载器可跳过本节。4.1 抽帧前置说明使用 denseflow 抽帧时需先按照 安装指南 安装 denseflow。若你拥有大容量 SSD建议把帧存放在 SSD 上以获得更好的 I/O 性能。可通过软链接将 rawframes 目录指到 SSD# 假设 SSD 挂载在 /mnt/SSD/ mkdir /mnt/SSD/hmdb51_extracted/ ln -s /mnt/SSD/hmdb51_extracted/ ../../../data/hmdb51/rawframes4.2 方案 A仅抽取 RGB 帧denseflow光流抽取比较耗时若只想用 RGB 帧训练运行bash extract_rgb_frames.sh对应脚本 tools/data/hmdb51/extract_rgb_frames.sh 的核心命令为python build_rawframes.py ../../data/hmdb51/videos/ ../../data/hmdb51/rawframes/ --task rgb --level 2 --ext avi4.3 方案 B未安装 denseflow 时用 OpenCV 抽帧若未安装 denseflow可改用 OpenCV 抽取 RGB 帧bash extract_rgb_frames_opencv.sh对应脚本 tools/data/hmdb51/extract_rgb_frames_opencv.sh 增加了--use-opencv参数。需要留意的是OpenCV 方式会保留视频原始分辨率不会像 denseflow 那样做缩放若需固定尺寸需在配置的数据预处理管线中自行处理。4.4 方案 C同时抽取 RGB 帧与光流tvl1 算法如果需要 RGB 与光流两路输入运行bash extract_frames.sh对应脚本 tools/data/hmdb51/extract_frames.sh 的核心命令为python build_rawframes.py ../../data/hmdb51/videos/ ../../data/hmdb51/rawframes/ --task both --level 2 --flow-type tvl14.5 抽帧脚本 build_rawframes.py 的参数详解上述命令统一调用仓库工具 tools/data/build_rawframes.py其支持的参数源码parse_args部分包括参数默认值可选值/说明src_dir/out_dir必填视频源目录 / 帧输出目录--taskflowrgb、flow、both抽取帧类型--level21或2视频目录层级HMDB51 为类别/视频两级--num-worker8抽帧并行进程数--flow-typeNonetvl1、warp_tvl1、farn、brox光流算法--out-formatjpgjpg、h5、png输出帧格式--extaviavi、mp4、webm源视频扩展名--mixed-ext关闭处理混合扩展名的视频--new-width/--new-height0抽帧时统一缩放的目标宽/高0 表示不缩放--new-short0按短边缩放并保持长宽比--num-gpu8GPU 数量并行相关--resume关闭断点续抽跳过--report-file中已成功的视频--use-opencv关闭使用 OpenCV 抽取 RGB 帧--input-frames关闭基于已有 RGB 帧计算光流而非从视频直接计算--report-filebuild_report.txt记录已成功处理视频的文件从源码实现看denseflow 抽帧时底层通过命令行拼接执行例如 RGB 任务会生成denseflow {video} -b20 -s0 -o{out_dir} -nw... -nh... -v之类的命令task both时则分别生成 RGB 与光流两条 denseflow 命令。所有任务通过多进程Pool并行执行见源码main末尾的pool.map。当使用--resume时脚本会读取--report-file中已经成功的视频路径仅处理剩余部分这在数据集大、训练中断时非常实用。4.6 抽帧产物说明使用 denseflow 抽出的 RGB 帧命名为img_00001.jpg、img_00002.jpg…光流帧分为两个方向命名为flow_x_00001.jpg、flow_y_00001.jpg…每个视频对应一个以视频名命名的子目录位于对应类别目录下。5. 步骤四生成文件列表文件列表是 MMAction2 数据集配置ann_file所必需的 txt 文件每行描述一个样本。运行以下两个脚本分别生成 rawframes 与 videos 两种格式的列表bash generate_rawframes_filelist.sh bash generate_videos_filelist.sh5.1 脚本调用的核心工具对应脚本 tools/data/hmdb51/generate_rawframes_filelist.sh 与 tools/data/hmdb51/generate_videos_filelist.sh 均调用仓库工具 tools/data/build_file_list.py# rawframes 格式 PYTHONPATH. python tools/data/build_file_list.py hmdb51 data/hmdb51/rawframes/ --level 2 --format rawframes --shuffle # videos 格式 PYTHONPATH. python tools/data/build_file_list.py hmdb51 data/hmdb51/videos/ --level 2 --format videos --shuffle其中--shuffle表示对生成的列表做随机打乱。5.2 HMDB51 列表的生成逻辑在 tools/data/parse_file_list.py 的parse_hmdb51_split函数中列表生成包含以下关键逻辑自动生成classInd.txt按data/hmdb51/videos下的类别目录名排序为每个类别赋予从 1 开始的类别 ID写入data/hmdb51/annotations/classInd.txt格式与 UCF101 的ClassInd.txt一致id 类名读取官方划分遍历 51 个类别的{class}_test_split{i}.txti取 1、2、3将标记为1的行归入训练集、标记为2的行归入测试集并拼上类别 ID生成trainlist{i}.txt与testlist{i}.txt即data/hmdb51/annotations/trainlist01.txt、testlist01.txt、trainlist02.txt…类别 ID 修正读取classInd.txt后建立「类名 → 0 起始 ID」的映射int(x[0]) - 1最终列表中的标签为0 ~ 50与 MMAction2 的类别计数51 类对齐。5.3 文件列表内容格式生成的列表位于data/hmdb51/下命名形如hmdb51_train_split_{1,2,3}_rawframes.txt hmdb51_val_split_{1,2,3}_rawframes.txt hmdb51_train_split_{1,2,3}_videos.txt hmdb51_val_split_{1,2,3}_videos.txtrawframes 格式的每行相对路径 帧总数 标签帧总数取自parse_directory对目录内帧的统计见 tools/data/build_file_list.py 中frame_info的构造videos 格式的每行视频相对路径 标签此时帧数记为-1。这两类列表分别对应VideoDataset与RawframeDataset的ann_file输入。例如 mmaction/datasets/video_dataset.py 中VideoDataset会逐行读取ann_file并结合data_prefix[video]拼接出完整视频路径。6. 步骤五检查目录结构完成上述流程后在仓库根目录下HMDB51 相关的目录结构应形如mmaction2 ├── mmaction ├── tools ├── configs ├── data │ ├── hmdb51 │ │ ├── hmdb51_{train,val}_split_{1,2,3}_rawframes.txt │ │ ├── hmdb51_{train,val}_split_{1,2,3}_videos.txt │ │ ├── annotations │ │ ├── videos │ │ │ ├── brush_hair │ │ │ │ ├── April_09_brush_hair_u_nm_np1_ba_goo_0.avi │ │ │ ├── wave │ │ │ │ ├── 20060723sfjffbartsinger_wave_f_cm_np1_ba_med_0.avi │ │ ├── rawframes │ │ │ ├── brush_hair │ │ │ │ ├── April_09_brush_hair_u_nm_np1_ba_goo_0 │ │ │ │ │ ├── img_00001.jpg │ │ │ │ │ ├── img_00002.jpg │ │ │ │ │ ├── ... │ │ │ │ │ ├── flow_x_00001.jpg │ │ │ │ │ ├── flow_x_00002.jpg │ │ │ │ │ ├── ... │ │ │ │ │ ├── flow_y_00001.jpg │ │ │ │ │ ├── flow_y_00002.jpg │ │ │ ├── ... │ │ │ ├── wave │ │ │ │ ├── 20060723sfjffbartsinger_wave_f_cm_nm_p1_ba_med_0 │ │ │ │ ├── ... │ │ │ │ ├── winKen_wave_u_cm_np1_ri_bad_1annotations目录下应包含每类视频的官方划分文件如brush_hair_test_split1.txt、classInd.txt以及trainlist{1,2,3}.txt、testlist{1,2,3}.txt。7. 数据验证与后续训练7.1 数据完整性检查在正式训练前可以使用仓库的检查工具对视频文件做一遍完整性校验python tools/analysis_tools/check_videos.py data/hmdb51/videos/ data/hmdb51/hmdb51_train_split_1_videos.txt具体参数以 tools/analysis_tools/check_videos.py 的--help输出为准。该校验可提前发现损坏或缺失的视频避免训练中途报错。7.2 基于 HMDB51 的训练示例仓库中已有以 HMDB51 为目标的现成配置例如 PoseC3D 骨架动作识别配置 configs/skeleton/posec3d/slowonly_kinetics400-pretrained-r50_8xb16-u48-120e_hmdb51-split1-keypoint.py其分类头num_classes51并定义了完整的 train/val/test pipeline 与调度器可直接作为骨架识别skeleton-based任务在 HMDB51 上微调的参考。该配置的load_from使用 Kinetics-400 预训练的 PoseC3D 权重说明 HMDB51 也常用于验证「预训练 下游微调」范式。对于 RGB 识别任务可仿照仓库中 configs/recognition 下的 TSN、TSM、SlowFast 等配置将dataset_type、ann_file指向data/hmdb51/hmdb51_train_split_1_rawframes.txt或videos.txt并将num_classes设为 51。7.3 训练与测试入口数据准备完成后HMDB51 的训练与测试流程与其他数据集完全一致可参照官方 训练与测试教程 使用 tools/train.py 与 tools/test.py 完成训练、评估与推理。注意仓库为纯只读数据准备指南训练脚本仅用于本地运行无需修改仓库文件。8. 常见问题与注意事项下载失败/证书问题官方源使用 HTTPS脚本已带--no-check-certificate若网络受限可考虑代理或更换下载源脚本本身不含重试逻辑可手动重跑。unrar未安装会报unrar: command not found请先安装unrar无 sudo 环境可参考文首提到的免 sudo 安装方式。抽帧与训练格式匹配使用 OpenCV 抽帧会保留原始分辨率而 denseflow 支持--new-short/--new-width/--new-height缩放两种产物的尺寸不一致时需在训练配置的数据增强如Resize、CenterCrop中统一处理。多进程资源占用build_rawframes.py默认--num-worker 8、--num-gpu 8在机器资源紧张时可适当调低。类别标签从 0 开始build_file_list.py生成的标签为 0~50源码中将classInd.txt的 ID 减 1配置中num_classes统一为 51避免出现「类别数不匹配」错误。总结本文完整复现了 MMAction2 中 HMDB51 数据集的五步准备流程下载标注、下载视频、抽帧denseflow/OpenCV/tvl1 三种方案、生成文件列表、校验目录结构并结合 tools/data/build_rawframes.py、tools/data/build_file_list.py、tools/data/parse_file_list.py 等源码剖析了每个脚本的底层行为与关键参数。按照上述流程操作后你将获得一份可直接用于 MMAction2 训练、验证与测试的 HMDB51 数据集并能够在此基础上配置 TSN、TSM、SlowFast、PoseC3D 等模型进行动作识别实验。赞分享人工智能计算机视觉深度学习【免费下载链接】mmaction2OpenMMLabs Next Generation Video Understanding Toolbox and Benchmark项目地址https://gitcode.com/gh_mirrors/mm/mmaction2点击查看免费下载相关推荐MMAction2 实战UCF-101 数据集完整准备指南标注下载、视频处理、帧与光流抽取、文件列表生成MMAction2 实战UCF 101 数据集完整准备指南标注下载、视频处理、帧与光流抽取、文件列表生成 导读 本文基于 MMAction2 仓库中 to人工智能计算机视觉深度学习MMAction2 实战UCF-101 数据集准备全流程指南标注下载、视频处理、帧/光流抽取与文件列表生成MMAction2 实战UCF 101 数据集准备全流程指南标注下载、视频处理、帧/光流抽取与文件列表生成 本指南以 tools/data/ucf101/人工智能计算机视觉深度学习MMAction2 的 AVA-Kinetics 数据集准备指南从 Kinetics700 裁剪、RGB 帧提取到标注与提案合并的完整流程MMAction2 的 AVA Kinetics 数据集准备指南从 Kinetics700 裁剪、RGB 帧提取到标注与提案合并的完整流程 AVA Kinet人工智能计算机视觉深度学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

频域滤波器全解析:理想、巴特沃斯与高斯的原理与实战

频域滤波器全解析:理想、巴特沃斯与高斯的原理与实战

1. 这篇笔记要解决的问题写这篇笔记前,我先把前面几篇的思路捋一捋:我们已经搞定了离散傅里叶变换的原理、快速傅里叶变换的用法、频率谱的解读(低频中间、高频外围、亮度代表能量),以及频域滤波的基本流程——把图像从…

2026/10/13 23:56:39 阅读更多 →
基于Linux UDP的聊天翻译工具:用工厂方法模式重构服务端

基于Linux UDP的聊天翻译工具:用工厂方法模式重构服务端

接到这个项目的时候,需求一句话就能说清:在Linux环境下,基于UDP实现一个既能聊天又能翻译的通信工具。但真正动手之后我发现,让代码既能跑起来、又能长期改下去,难点根本不在socket那几个函数,而在于怎么把…

2026/10/13 23:55:39 阅读更多 →
6000行代码重构启示:OOP从语法到实战的四层认知升级

6000行代码重构启示:OOP从语法到实战的四层认知升级

1. 困境:当6000行业务代码拒绝新增需求时事情是这样的。去年年中,我接手了一个医疗预约系统的后端模块,不夸张地说,这是我职业生涯里见过最典型的"OOP恐惧症"产物。一个预约服务类,整整6000多行,…

2026/10/13 23:55:39 阅读更多 →

最新新闻

DNA到蛋白质的完整路径:转录、翻译与中心法则的分子实战

DNA到蛋白质的完整路径:转录、翻译与中心法则的分子实战

DNA怎么变成蛋白质?这个问题的完整答案,比课本上那张中心法则的箭头要丰富得多。我当年第一次给学生讲清楚转录和翻译的全程时,最深的感受是:知识链条其实不长,但每一环都有大量“看似理所当然、实则经不起追问”的细节…

2026/10/14 3:40:38 阅读更多 →
基于CNN的水下声源定位实战:从数据到部署全流程

基于CNN的水下声源定位实战:从数据到部署全流程

简介:一套基于PyTorch的海洋水下声源定位实战项目,使用卷积神经网络(CNN)对水下声学信号进行建模,预测声源方位角与距离,完整覆盖从声学数据到位置估计的流程。资源面向水声工程、人工智能、电子信息、自动…

2026/10/14 3:40:38 阅读更多 →
Falcom经典游戏源码构建与调试实战指南

Falcom经典游戏源码构建与调试实战指南

简介:本资源为Falcom十大经典游戏系列的项目源码整理包,面向游戏开发初学者、JRPG爱好者及逆向分析兴趣者,提供一份轻量级参考素材,辅助理解经典日式RPG的设计脉络与基础架构逻辑。压缩包共3个文件,含1个HTML页面&…

2026/10/14 3:40:38 阅读更多 →
秋叶SD整合包V5.0代码版:从改代码到批量出图API实战

秋叶SD整合包V5.0代码版:从改代码到批量出图API实战

简介:秋叶SD整合包V5.0面向希望快速上手Stable Diffusion的Windows新手用户,解决环境配置繁琐、参数调节门槛高的问题。资源包共3个文件,以inscode工程配置、html页面与gitignore忽略规则为主,压缩包仅6KB,属于轻量级代…

2026/10/14 3:40:38 阅读更多 →
三站时差定位球面模型实战:从时差解算到经纬度

三站时差定位球面模型实战:从时差解算到经纬度

简介:这份资源围绕三站时差定位(TDOA)展开,面向无线通信、雷达定位与物联网设备追踪方向的学习者和开发者,重点解决无GPS覆盖环境下利用信号到达时间差解算信号源位置的问题。内容涉及Chan提出的球面TDOA实现思路&…

2026/10/14 3:40:38 阅读更多 →
一张图微调YOLOv11:自然栖息地鸟类检测的流程与扩充

一张图微调YOLOv11:自然栖息地鸟类检测的流程与扩充

简介:面向 YOLOv11 模型验证需求,这份精简版鸟类目标检测数据集包含一张真实野外鸟类图像及配套标准标注,可用于快速原型验证、轻量级部署测试与小样本检测基线建立。压缩包共五个文件,包含三张 JPG 图像、一个数据配置文件与一个…

2026/10/14 3:39:38 阅读更多 →

日新闻

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/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

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

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

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

2026/10/14 3:29: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/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 阅读更多 →