基于开源大模型的人脸属性分析与技术伦理探讨
这次我们来看一个结合了AI图像识别与人力资源筛选的“面相分析”项目。这个项目的核心不是探讨玄学而是聚焦于一个现实的技术应用场景如何利用开源的大模型和计算机视觉技术对候选人照片进行结构化特征分析并尝试与岗位需求进行匹配。它本质上是一个技术Demo展示了AI在非结构化数据人脸图像处理与量化评估上的可能性。对于技术开发者而言这个项目的价值在于其完整的技术栈实现从图像输入、人脸检测与对齐到特征提取、属性分析如年龄、情绪、姿态再到基于规则或简单模型的“匹配度”计算。本文将带你从零部署这个项目重点验证其技术可行性、分析流程的透明性并探讨其在实际应用中的巨大伦理与合规风险。我们将重点关注以下几个实操环节本地环境搭建、模型加载与推理、核心功能测试人脸检测、属性分析、以及如何理解其输出的“面相分”。本文适合对计算机视觉、AI应用伦理感兴趣并希望了解此类技术边界的技术人员。1. 核心能力速览能力项说明项目类型AI图像分析/计算机视觉应用Demo核心技术人脸检测、人脸关键点定位、属性识别年龄、性别、情绪等硬件门槛支持CPU推理GPU可加速。基础人脸检测模型对显存要求不高通常1GB若使用大型属性模型则需更高显存。输入格式单张人像图片JPG, PNG等常见格式输出内容结构化数据人脸边界框、关键点坐标、预测的属性标签及置信度、可能包含一个综合“评分”。启动方式通常为Python脚本启动提供命令行接口或简易Web UI/API服务。是否支持API是项目通常封装为可调用的函数或提供简单的HTTP接口。是否支持批量是可通过脚本循环处理或设计任务队列处理多张图片。适合场景技术研究、概念验证、AI伦理探讨。绝对不适合任何正式的招聘筛选场景。2. 适用场景与使用边界适合谁计算机视觉学习者作为一个集成了多种CV任务检测、对齐、分类的完整项目来学习。AI应用开发者了解如何将多个模型串联成一个可用的分析流水线。技术伦理研究者剖析AI偏见、公平性问题的具体案例。能解决什么问题技术验证验证从一张图片中自动化提取人脸结构化信息的技术流程。流程演示展示如何将AI模型的输出转化为一个可解释但未必科学的“分数”或“标签”。引发思考促使大家思考技术在敏感领域的应用边界。不适合什么场景任何正式的招聘、评估、选拔环节使用“面相”进行筛选缺乏科学依据涉嫌就业歧视违反多国劳动法律法规。对个人能力、性格的严肃判断当前AI无法通过静态图片可靠判断一个人的能力、诚信或合作精神。需要高精度、高可靠性的生产环境此类项目多为研究性质模型存在偏见输出不稳定。版权、隐私与安全边界肖像权与隐私权处理的人脸图片必须获得当事人明确授权仅限用于测试或研究禁止未经许可的收集、分析和传播。模型偏见训练数据带来的种族、性别、年龄等偏见会直接影响分析结果必须清醒认知。合规性在任何涉及个人的评估系统中使用此类技术必须进行严格的合规审查并确保符合《个人信息保护法》等相关法规。用途声明本文及所述项目仅用于技术交流与学习坚决反对任何形式的歧视性应用。3. 环境准备与前置条件部署此类项目需要一个标准的Python深度学习环境。基础环境清单操作系统Windows 10/11, Linux (Ubuntu 20.04), macOS (注意ARM架构可能需额外配置)Python3.8 - 3.10版本推荐3.8或3.9兼容性最佳包管理工具pip或conda深度学习框架与关键库PyTorch或TensorFlow根据项目依赖选择。此类项目多基于PyTorch。OpenCV用于图像读取、预处理和显示。深度学习推理库如onnxruntime如果模型为ONNX格式或torchvision。Web框架可选如Flask或FastAPI如果你需要启动一个API服务。其他工具库numpy,pillow(PIL) 等。硬件要求CPU现代四核以上处理器即可进行推理。内存建议8GB以上。GPU可选但推荐NVIDIA GPUGTX 1060 6G或以上安装对应版本的CUDA和cuDNN以加速推理。显存占用取决于所使用的具体模型。磁盘空间预留2-5GB空间用于安装环境、代码和下载模型文件。端口占用检查如果项目提供Web UI或API服务通常会占用一个本地端口如7860,5000,8080。启动前请确认端口未被其他程序占用。4. 安装部署与启动方式假设项目代码结构清晰通常包含一个requirements.txt文件。我们以典型的Python项目为例。步骤1克隆或下载项目代码# 假设项目仓库地址为 gitgithub.com:xxx/face-analysis-demo.git git clone gitgithub.com:xxx/face-analysis-demo.git cd face-analysis-demo步骤2创建并激活虚拟环境强烈推荐# 使用 conda conda create -n face_analysis python3.9 conda activate face_analysis # 或使用 venv python -m venv venv # Windows venv\Scripts\activate # Linux/macOS source venv/bin/activate步骤3安装项目依赖pip install -r requirements.txt # 如果项目没有requirements.txt可能需要手动安装核心包 # pip install torch torchvision opencv-python pillow numpy flask步骤4下载预训练模型此类项目通常依赖预训练模型。模型文件可能直接包含在代码仓库中。提供下载脚本。首次运行时自动从云端下载需注意网络环境。 请根据项目README.md的说明将模型文件放置到指定目录如./models/。步骤5启动服务根据项目提供的方式方式A命令行直接运行分析脚本# 示例分析单张图片 python analyze.py --input ./test_photo.jpg --output ./result.json # 示例批量分析一个文件夹 python analyze.py --input_dir ./candidates_photos/ --output_dir ./analysis_results/方式B启动Web UI服务python webui.py # 或 python app.py --host 127.0.0.1 --port 7860启动成功后在浏览器中访问http://127.0.0.1:7860即可使用交互界面。方式C启动API服务python api_server.py --port 5000启动后即可通过HTTP请求调用分析接口。5. 功能测试与效果验证部署完成后我们需要系统性地验证其各项功能是否正常工作。5.1 基础人脸检测测试测试目的验证项目能否正确识别图片中的人脸位置。准备输入一张包含清晰正脸的单人照片test_face.jpg。执行命令python detect.py --image test_face.jpg --show预期结果命令行输出人脸边界框坐标如bbox: [x1, y1, x2, y2]。如果使用了--show参数应弹出一个窗口在图片上用矩形框标出人脸。成功标准矩形框准确框住人脸。失败排查图片路径错误。模型文件未正确加载检查模型路径、文件完整性。人脸角度过大、遮挡严重或尺寸太小超出模型检测能力。5.2 人脸属性分析测试测试目的验证项目能否分析出人脸的属性如年龄、性别、情绪等。准备输入同上一步的人脸图片。执行命令python attribute.py --image test_face.jpg预期结果输出JSON格式的结构化信息。{ face_detected: true, attributes: { age: 30, gender: Male, emotion: Neutral, pose: Frontal }, confidence: { age: 0.76, gender: 0.95, emotion: 0.82 } }成功标准输出合理的属性值和置信度。注意“合理”是基于模型训练的偏见不代表真实情况。失败排查人脸检测步骤失败导致属性分析无输入。属性识别模型未加载。输出格式与预期不符检查代码版本。5.3 “面相”评分或匹配度测试测试目的理解项目如何将属性转化为一个“分数”或“匹配度”。准备输入可能需要一张照片和一个“岗位描述”如一个包含期望属性的配置文件job_config.json。// job_config.json 示例 { desired_age_range: [25, 35], desired_emotion: Confident, weight: { age: 0.3, emotion: 0.7 } }执行命令python match.py --image test_face.jpg --config job_config.json预期结果输出一个综合评分或匹配度百分比。{ match_score: 0.65, breakdown: { age_score: 0.8, emotion_score: 0.6 } }成功标准程序能根据预设规则计算出分数。关键点这个分数是规则计算的结果其科学性完全取决于规则设计者的主观设定务必理性看待。失败排查检查配置文件格式、评分规则逻辑代码。5.4 批量任务处理测试测试目的验证项目处理多张图片的稳定性和效率。准备输入在一个文件夹batch_input/中放入多张测试图片。执行命令python batch_process.py --input_dir ./batch_input/ --output_dir ./batch_output/预期结果程序依次处理每张图片。在./batch_output/目录下为每张图片生成一个对应的结果文件如JSON。命令行可能有进度提示。成功标准所有图片被处理无崩溃输出文件完整。失败排查某张图片格式异常导致进程中断需增加异常处理。内存或显存随着处理累积而耗尽需检查是否有内存泄漏。6. 接口 API 与批量任务如果项目提供了API服务我们可以将其集成到其他系统中进行自动化测试。6.1 API 服务调用示例假设API服务已在本地5000端口启动。接口信息URL:POST http://127.0.0.1:5000/analyzeContent-Type:application/json请求体图片的Base64编码或图片URL。响应体包含人脸属性和评分的JSON。Python调用示例import requests import base64 import json def analyze_face(image_path): # 1. 将图片编码为Base64 with open(image_path, rb) as image_file: img_base64 base64.b64encode(image_file.read()).decode(utf-8) # 2. 构造请求 url http://127.0.0.1:5000/analyze payload { image_data: img_base64, config: { # 可选传递评分规则 mode: default } } headers {Content-Type: application/json} # 3. 发送请求 try: response requests.post(url, datajson.dumps(payload), headersheaders, timeout30) response.raise_for_status() # 检查HTTP错误 result response.json() print(json.dumps(result, indent2, ensure_asciiFalse)) return result except requests.exceptions.RequestException as e: print(fAPI请求失败: {e}) return None # 调用函数 if __name__ __main__: result analyze_face(./test_face.jpg)6.2 批量任务队列设计对于大批量图片建议使用任务队列管理避免阻塞。简易本地队列示例使用文件系统任务生成扫描输入目录为每张图片生成一个任务ID并将图片路径写入tasks/pending/下的一个文件。工作进程循环从tasks/pending/读取任务调用分析函数或API将结果写入tasks/completed/{task_id}.json。结果汇总所有任务完成后另一个脚本读取tasks/completed/下的所有结果文件汇总成报告。关键点确保任务处理的幂等性同一任务重复处理结果一致。添加重试机制应对偶发的处理失败。记录详细的日志便于排查问题。7. 资源占用与性能观察运行此类项目时需要关注系统资源使用情况这对评估其可用性至关重要。观察工具Windows任务管理器 - 性能标签页。Linux/macOS使用htop,nvidia-smi(GPU) 命令。典型资源占用模式初始化阶段加载模型文件到内存/显存此时内存和显存占用会陡增达到峰值。推理阶段CPU模式CPU使用率持续较高可能接近100%一个核心内存占用稳定处理单张图片速度较慢可能几秒到十几秒。GPU模式CPU使用率较低GPU使用率和显存占用上升处理速度大幅加快可能达到每秒数张甚至数十张。批处理阶段一次性处理多张图片batch size 1可能会进一步增加显存占用但能提升GPU利用率。性能影响因素图片分辨率分辨率越高处理耗时越长内存/显存占用越大。建议先缩放到模型训练时的标准尺寸如224x224, 512x512。模型复杂度使用更大的Backbone如ResNet-101 vs ResNet-18会显著增加计算量和内存占用。批处理大小Batch Size增大Batch Size可以提高GPU利用率但受限于显存容量。优化建议首次运行后模型会常驻内存后续调用速度更快。如果显存不足可以尝试在代码中设置torch.no_grad()和model.eval()。使用半精度FP16推理如果硬件和模型支持。减小输入图片尺寸。将Batch Size设为1。对于纯CPU推理确保Python进程可以使用多核如果代码支持并行。8. 常见问题与排查方法问题现象可能原因排查方式解决方案导入错误No module named ‘xxx’依赖包未安装或虚拟环境未激活。检查当前Python环境pip list确认所需包是否存在。激活正确的虚拟环境运行pip install -r requirements.txt。运行时错误CUDA out of memory显存不足。模型或批处理数据量过大。运行nvidia-smi查看显存占用。检查代码中图片尺寸和batch size设置。减小输入图片尺寸、降低batch size、尝试CPU模式运行。模型加载失败Missing key(s) or size mismatch模型文件损坏、版本不匹配或下载不完整。检查模型文件MD5是否与项目提供的一致。查看错误信息中的具体key。重新下载模型文件。确认框架PyTorch/TF版本与模型训练版本兼容。人脸检测失败无输出图片无人脸、人脸角度极端、光线过暗/过曝、模型灵敏度阈值过高。使用其他成熟工具如OpenCV Haar Cascade验证图片是否真的检测不到人脸。调整检测模型的置信度阈值参数。对输入图片进行预处理如直方图均衡化。Web UI/API 服务启动后无法访问防火墙阻止、端口被占用、服务绑定到127.0.0.1而非0.0.0.0。检查服务启动日志是否有错误。使用netstat -ano(Win) 或lsof -i:端口号(Linux/macOS) 查看端口状态。更换端口号。确保启动命令中host参数为0.0.0.0以允许外部访问注意安全风险。关闭占用端口的进程。属性分析结果明显错误模型存在偏见、输入图片质量差、超出模型识别范围如儿童、老年人。使用多个不同来源的图片测试。与公开的、成熟的商业API结果对比仅作参考。理解这是模型局限性。切勿将结果当作事实。可尝试集成多个模型投票决定。批量处理中途停止某张异常图片导致程序崩溃、内存泄漏累积导致系统终止进程。查看程序崩溃日志。监控内存使用情况。在批处理代码中加入异常捕获try-except跳过问题图片。定期重启处理进程。9. 最佳实践与使用建议为了更安全、更有效地运行和探索此类项目请遵循以下建议明确测试目的在开始前就想清楚你是为了学习技术还是为了验证某个想法这决定了你的测试方法和评估标准。环境隔离始终在虚拟环境conda或venv中运行避免污染系统Python环境。小规模验证第一次运行时用一两张图片测试整个流程确保从启动到输出全部畅通再开展批量任务。数据管理规范化./input/: 存放待分析的原始图片。./models/: 存放所有模型文件。./output/: 存放分析结果JSON、标注后的图片等。./logs/: 存放运行日志。理解输出不确定性对模型输出的所有“年龄”、“情绪”、“吸引力分数”等保持高度警惕。这些是统计预测不是测量结果受训练数据偏见影响极大。伦理与合规先行绝不在未告知和未获同意的情况下分析他人照片。绝不将此类技术用于任何可能影响他人机会如招聘、贷款的正式评估。始终在研究成果或技术演示中明确指出技术的局限性、偏见和潜在危害。代码审查仔细阅读项目核心的分析与评分代码。理解“分数”是如何从原始属性计算出来的。这往往是偏见和主观性被嵌入的地方。记录与复盘记录每次测试的参数、输入和输出。当结果出现偏差时便于回溯分析是数据问题、模型问题还是规则问题。10. 总结与下一步这个“面相分析”项目作为一个技术Demo其真正的价值在于提供了一个完整的、可运行的计算机视觉应用案例。它清晰地展示了如何将人脸检测、属性识别等离散的AI能力串联成一个端到端的分析流水线并最终输出一个量化的、可解释但未必合理的结果。最值得尝试的点技术集成学习了解多模型协作的编程范式。AI偏见实证亲手验证不同性别、年龄、种族的人像图片观察输出结果的系统性差异这是理解算法公平性最直观的方式。API服务搭建学习如何将本地AI模型封装成可远程调用的服务。最先应该验证的功能基础人脸检测的准确率和速度。属性识别年龄、性别在多样化测试集上的表现。评分逻辑的代码实现看其规则是否透明。最容易踩的坑环境配置复杂依赖包版本冲突。模型文件下载慢或不完整。盲目相信输出结果忽视其科学性和伦理性。后续可以探索的方向技术深化尝试替换流水线中的某个模型如换用更准的人脸检测器或更细粒度的情绪识别模型观察整体效果变化。可视化增强开发更友好的Web界面将人脸框、关键点、属性标签直观地标注在图片上。偏见量化研究设计一个测试集系统性地评估模型在不同人口统计学分组上的性能差异并尝试用技术手段如数据重平衡、对抗训练减轻偏见。转向合规应用思考这项技术的合规应用场景例如在获得明确授权后用于娱乐性的性格测试小工具、虚拟形象生成时的初始面部设定、影视剧选角时的形象参考而非决定因素等。记住技术本身无善恶但应用有边界。通过这个项目我们掌握了工具更应理解其重量与锋芒。建议收藏本文以备在需要搭建类似CV分析流水线或进行AI伦理探讨时参考。

相关新闻

AI招聘中的计算机视觉应用:从特征提取到算法偏见的技术拆解

AI招聘中的计算机视觉应用:从特征提取到算法偏见的技术拆解

最近在技术圈里,一个看似“玄学”的话题被频繁讨论:用AI分析候选人面相来辅助招聘。很多开发者第一反应是“这不科学”、“太离谱了”,甚至觉得这只是老板们一时兴起的噱头。但当我们深入技术层面,会发现这背后远不止“看脸”那么…

2026/10/13 6:55:50 阅读更多 →
基于Dify与RAG技术构建垂直领域AI问答助手的实战指南

基于Dify与RAG技术构建垂直领域AI问答助手的实战指南

最近在折腾一个游戏助手项目,想让它能回答一些关于特定游戏世界观的复杂问题。一开始,我尝试直接调用大模型,结果发现它要么胡编乱造,要么回答得过于笼统,完全没法用。比如问它“三角洲行动里‘幽灵’小队的标准装备配…

2026/10/12 4:25:42 阅读更多 →
基于Dify与RAG技术快速构建垂直领域AI问答助手实战指南

基于Dify与RAG技术快速构建垂直领域AI问答助手实战指南

这类项目标题看着热闹,但核心就一件事:用 Dify 这个平台,结合 RAG 技术,快速搭建一个能回答特定领域问题的 AI 应用。它最大的价值不是让你从零开始写代码,而是让你能在一个相对友好的界面里,把“知识”喂给…

2026/10/8 20:19:49 阅读更多 →

最新新闻

Spark集合操作全解析:union、join、笛卡尔积的原理与性能陷阱

Spark集合操作全解析:union、join、笛卡尔积的原理与性能陷阱

如果你处理过这样一个需求——把两份来源不同的用户数据合并成一份,或者找出最近30天活跃用户和付费用户的重叠人群,又或者把订单表关联到用户维度表上做统计——你大概率会第一时间想到Spark。但在Spark里,“集合”这个概念被拆成了好几组AP…

2026/10/14 4:50:57 阅读更多 →
从123456到密码管理器:弱密码破解原理与账号安全加固指南

从123456到密码管理器:弱密码破解原理与账号安全加固指南

1. 从“123456”说起:这个最熟悉的数字串到底藏了多少坑我敢打赌,看到“123456”这四个字的瞬间,你脑子里闪过的绝对不是一串数字,而是某个网站的登录页、某个多年没改过的密码,或者某次帮亲戚重装系统时顺手敲下的默认…

2026/10/14 4:50:57 阅读更多 →
轻量模型部署实战:3.8B开源模型从能跑到跑稳

轻量模型部署实战:3.8B开源模型从能跑到跑稳

这个标题是我某天半夜临时建的一个内部备忘录。Strata 是我们那边的统一推理服务层,3.8-Flash-Next 是某开源语言模型项目跑出来的一个轻量分支,参数体量不大,但做生产化接入的时候问题一点不比大模型少。后来这句话被同事转述成“Strata 跑 …

2026/10/14 4:50:57 阅读更多 →
Strata平台部署Qwen3.8-Flash-Next实战:从模型加载到接口调优全记录

Strata平台部署Qwen3.8-Flash-Next实战:从模型加载到接口调优全记录

前几天我们内部接到一个挺常见的任务:一台GPU服务器,一个刚拿到的轻量级模型,要在“Strata”这个内部自研的部署平台上跑起来,对外提供HTTP接口,给业务方调用。模型代号叫“Qwen3.8-Flash-Next”,名字看起来…

2026/10/14 4:50:57 阅读更多 →
前端性能优化实战:从浏览器渲染原理到加载与交互调优

前端性能优化实战:从浏览器渲染原理到加载与交互调优

前端性能优化这个话题,我在团队内部讲过很多次,每次讲完都觉得还能再展开不少。最近接了一个业务线的性能专项,把从前端资源加载到交互流畅度这条链路重新捋了一遍,顺手把过程中的经验和踩过的坑整理下来。这篇文章适合两类人看&a…

2026/10/14 4:50:57 阅读更多 →
大模型预判RTL综合PPA:数字前端设计的实时物理实现顾问

大模型预判RTL综合PPA:数字前端设计的实时物理实现顾问

1. 项目概述:这不是又一个“大模型EDA”的概念秀,而是RTL设计流程里真实卡点的破局尝试PPA-RTL——这个标题里没有花哨的缩写游戏,PPA就是功耗(Power)、性能(Performance)、面积(Are…

2026/10/14 4:49:57 阅读更多 →

日新闻

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 阅读更多 →