当前位置: 首页 > article >正文

使用Yolo 11进行定制化图像识别全流程

全流程预览Label Studio标注 → 导出YOLO格式 → 编写data.yaml → 拆分数据集 → 模型训练 → 预测部署步骤工具/技术产出物数据标注Label Studio标注好的图片数据导出YOLO with imagesimages/ labels/配置文件data.yaml数据集配置数据拆分Python脚本train/val/test模型训练ultralyticsbest.pt模型预测部署FastAPIREST API服务二、环境准备2.1 硬件要求配置项最低要求推荐配置GPUNVIDIA 4GB显存若没有则使用CPU训练NVIDIA 8GB显存CPU4核8核内存8GB16GB硬盘20GB可用空间SSD 50GB注意显存不足时可通过降低batch大小解决如从8降到4或2。2.2 软件环境Python版本3.10CUDA安装GPU训练必需没有GPU的不考虑安装NVIDIA CUDA Toolkit最好是12.8版本核心依赖安装pip install ultralytics pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128requirements.txt示例ultralytics8.3.0 torch2.9.0 torchvision0.24.0 torchaudio2.9.0 Pillow10.0.0 opencv-python4.8.0 fastapi0.115.0 uvicorn0.27.0 python-multipart0.0.12 pydantic2.10.0 pydantic-settings2.6.02.3 项目结构训练项目结构photo-check-train/ ├── train.py # 训练脚本 ├── runs/ # 训练输出目录 │ └── train/ # 训练结果 │ └── exp/ # 实验目录 │ ├── weights/ # 模型文件 │ │ ├── best.pt # 最佳模型 │ │ └── last.pt # 最后一个epoch │ └── results.csv # 训练日志 ├── data/ # 数据集目录 ├── models/ # 预训练模型 ├── yolo11n.pt # 基础模型文件 └── requirements.txt预测API项目结构photo-check-predict/ ├── app/ │ ├── main.py # FastAPI入口 │ ├── config.py # 配置管理 │ ├── api/ │ │ └── routes.py # API路由 │ ├── services/ │ │ └── inference.py # 推理服务 │ └── models/ │ └── prediction.py # 数据模型 ├── models/ # 训练好的模型 ├── Dockerfile ├── docker-compose.yml └── .env # 环境变量配置三、数据标注Label Studio3.1 创建标注项目步骤1登录Label Studio访问Label Studio地址使用账号密码登录。步骤2创建项目点击【Create Project】按钮创建新项目。步骤3填写项目信息Project Name项目名称如车照检查标注Description项目描述可选点击【Save】继续。3.2 配置标注模板步骤1选择标注模板在项目设置中选择【Object Detection】目标检测模板。[图片: ]步骤2定义标签类别进入模板根据业务需求定义进行需要训练的标签管理。例如类别名称说明defect缺陷/异常normal正常[图片: ]点击【Save】完成配置。3.3 标注操作步骤1导入待标注图片点击【Import】按钮上传需要标注的图片。[图片: ]支持的图片格式jpg、jpeg、png、bmp注意每次上传的图像数量需要控制一般在40张左右。否则会报错步骤2进行标注选择一张图片进入标注界面选择左侧工具栏的矩形框工具在图片上框选目标区域选择对应的标签类别[图片: ]标注规范框要紧贴目标边缘不要留太大空白每个目标都要标注不要遗漏不确定的目标可以先跳过后续确认后再标注若图像最终无标注请删除该图像四、数据导出与处理4.1 导出数据步骤1进入导出界面标注完成后点击项目页面的【Export】按钮。步骤2选择导出格式选择【YOLO with images】格式这个格式会同时导出图片和YOLO格式的标注文件。[图片: ]步骤3下载并解压下载压缩包并解压得到如下结构export/ ├── images/ # 图片文件 │ ├── img001.jpg │ ├── img002.jpg │ └── ... └── labels/ # 标注文件.txt格式 ├── img001.txt ├── img002.txt └── ...YOLO标注格式说明每行格式class_id x_center y_center width height归一化坐标范围0-10 0.5 0.5 0.3 0.4 1 0.2 0.3 0.1 0.24.2 编写data.yaml在数据集根目录创建data.yaml配置文件# 数据集路径配置 path: ./data # 数据集根目录相对或绝对路径 train: images/train # 训练集图片路径相对于path val: images/val # 验证集图片路径 test: images/test # 测试集图片路径可选 # 类别配置 names: # 类别名称列表 0: defect 1: normal配置说明字段说明示例path数据集根目录./data或E:/datasets/mydatatrain训练集图片目录images/trainval验证集图片目录images/valtest测试集图片目录images/test可选names类别名称映射{0: defect, 1: normal}注意labels目录结构要与images对应如images/train对应labels/train。4.3 数据集拆分推荐比例数据集比例说明train80%训练模型val10%验证调参test10%最终测试拆分脚本示例可让opencode或其他ai-agent进行自主分析数据集自己编写拆分脚本最后自己运行完成数据拆分。import os import shutil import random from pathlib import Path def split_dataset(source_images, source_labels, output_dir, train_ratio0.8, val_ratio0.1, test_ratio0.1): 拆分数据集为训练集、验证集和测试集 Args: source_images: 源图片目录 source_labels: 源标注目录 output_dir: 输出目录 train_ratio: 训练集比例 val_ratio: 验证集比例 test_ratio: 测试集比例 # 获取所有图片文件 image_files [f for f in os.listdir(source_images) if f.lower().endswith((.jpg, .jpeg, .png, .bmp))] random.shuffle(image_files) # 计算拆分点 total len(image_files) train_count int(total * train_ratio) val_count int(total * val_ratio) train_files image_files[:train_count] val_files image_files[train_count:train_count val_count] test_files image_files[train_count val_count:] # 创建目录结构 for split in [train, val, test]: os.makedirs(os.path.join(output_dir, images, split), exist_okTrue) os.makedirs(os.path.join(output_dir, labels, split), exist_okTrue) # 复制文件 def copy_files(file_list, split): for img_file in file_list: # 复制图片 src_img os.path.join(source_images, img_file) dst_img os.path.join(output_dir, images, split, img_file) shutil.copy(src_img, dst_img) # 复制标注同名.txt文件 label_file Path(img_file).stem .txt src_label os.path.join(source_labels, label_file) dst_label os.path.join(output_dir, labels, split, label_file) if os.path.exists(src_label): shutil.copy(src_label, dst_label) copy_files(train_files, train) copy_files(val_files, val) copy_files(test_files, test) print(f拆分完成训练集 {len(train_files)} 张验证集 {len(val_files)} 张测试集 {len(test_files)} 张) # 使用示例 split_dataset( source_imagesexport/images, source_labelsexport/labels, output_dir./data, train_ratio0.8, val_ratio0.1, test_ratio0.1 )拆分后的目录结构data/ ├── images/ │ ├── train/ # 训练图片 │ │ ├── img001.jpg │ │ └── ... │ ├── val/ # 验证图片 │ │ ├── img101.jpg │ │ └── ... │ └── test/ # 测试图片 │ ├── img201.jpg │ └── ... ├── labels/ │ ├── train/ # 训练标注 │ │ ├── img001.txt │ │ └── ... │ ├── val/ # 验证标注 │ │ ├── img101.txt │ │ └── ... │ └── test/ # 测试标注 │ ├── img201.txt │ └── ... └── data.yaml # 配置文件五、模型训练5.1 训练脚本说明train.py是完整的YOLO训练脚本支持命令行参数配置和自动设备检测。脚本核心逻辑解析命令行参数自动检测GPU/CPU设备加载预训练模型构建训练配置包含数据增强、正则化等执行训练并验证完整训练脚本#!/usr/bin/env python3 YOLO11 自定义数据集训练脚本 import os import argparse from ultralytics import YOLO def parse_args(): parser argparse.ArgumentParser(descriptionYOLO11 训练脚本) parser.add_argument(--model, typestr, defaultyolo11n.pt, help预训练模型路径) parser.add_argument(--data, typestr, defaultdata.yaml, help数据集配置文件路径) parser.add_argument(--epochs, typeint, default200, help训练轮数) parser.add_argument(--batch, typeint, default8, help批次大小) parser.add_argument(--imgsz, typeint, default640, help图像大小) parser.add_argument(--device, typestr, defaultNone, help训练设备 (0GPU, cpuCPU)) parser.add_argument(--cache, typestr, defaultfalse, help数据缓存 (true/disk/false)) return parser.parse_args() def train_model(args): # 1. 自动检测设备 device args.device if device is None: import torch device 0 if torch.cuda.is_available() else cpu print(f使用设备: {device}) # 2. 加载模型 print(f加载预训练模型: {args.model}) model YOLO(args.model) # 3. 构建训练配置 train_config { data: args.data, epochs: args.epochs, batch: args.batch, imgsz: args.imgsz, device: device, workers: 0, # Windows 兼容 project: runs/train, name: exp, lr0: 0.003, optimizer: AdamW, patience: 15, cos_lr: True, mosaic: 1.0, mixup: 0.3, dropout: 0.15, verbose: True, plots: True, save: True, } # 缓存配置 if args.cache.lower() true: train_config[cache] True elif args.cache.lower() disk: train_config[cache] disk # 4. 开始训练 results model.train(**train_config) # 5. 输出结果 save_dir model.trainer.save_dir print(f\n✅ 训练完成) print(f模型保存位置: {save_dir}) print(f最佳模型: {save_dir}/weights/best.pt) return results if __name__ __main__: args parse_args() if not os.path.exists(args.data): print(f❌ 错误: 数据集配置文件不存在: {args.data}) exit(1) train_model(args)命令行参数详解参数说明默认值使用示例--model预训练模型路径n最小最快x最大最准yolo11n.pt--model yolo11s.pt--data数据集配置文件路径data.yaml--data ./data.yaml--epochs训练轮数200--epochs 300--batch批次大小显存不足时降低8--batch 4--imgsz输入图像尺寸640--imgsz 416--device训练设备自动检测--device 0--cache数据缓存false--cache disk提示workers0是Windows兼容设置禁用多进程数据加载。5.2 训练配置一览脚本内置的训练参数一般无需修改参数值说明lr00.003初始学习率optimizerAdamW优化器类型patience15早停轮数cos_lrTrue余弦学习率调度mosaic1.0Mosaic数据增强mixup0.3Mixup数据增强dropout0.15Dropout正则化projectruns/train输出根目录nameexp实验名称自动递增5.3 执行训练基础训练命令python train.py --model yolo11n.pt --data data.yaml --epochs 200 --batch 8 --device 0完整训练命令推荐python train.py ^ --model yolo11n.pt ^ --data data.yaml ^ --epochs 200 ^ --batch 8 ^ --imgsz 640 ^ --device 0 ^ --cache diskWindows提示命令行换行使用^PowerShell使用。训练输出文件位于runs/train/exp/目录由脚本中projectruns/train和nameexp决定runs/train/exp/ ├── weights/ │ ├── best.pt # 最佳模型部署用这个 │ └── last.pt # 最后一个epoch的模型 ├── results.csv # 训练指标日志 ├── results.png # 训练曲线图 ├── confusion_matrix.png # 混淆矩阵 ├── F1_curve.png # F1分数曲线 ├── PR_curve.png # PR曲线 └── val_batch0_pred.jpg # 验证集预测样例5.4 训练结果评估查看训练日志日志位置runs/train/exp/results.csv曲线图runs/train/exp/results.png使用大模型分析将训练日志截图或results.csv内容发给元宝、豆包、ChatGPT等大模型提问示例这是我的YOLO模型训练日志请帮我分析mAP是否收敛是否有过拟合迹象有什么优化建议大模型会帮你解读各项指标并给出针对性建议。六、模型预测与部署6.1 本地批量预测测试使用以下脚本对批量图片进行预测并保存结果from ultralytics import YOLO import os # 加载训练好的模型 model YOLO(runs/train/exp/weights/best.pt) # 收集待预测图片 images [] for folder_name, subfolders, filenames in os.walk(./test_images): for filename in filenames: if filename.lower().endswith((.jpg, .jpeg, .png, .bmp)): full_path os.path.join(folder_name, filename) images.append(full_path) # 批量预测 # saveTrue 会自动保存带标注框的结果图 # project 指定保存根目录YOLO会自动在其下创建predict子目录 results model(images, conf0.7, saveTrue, projecttest_result) # 查看结果 for r in results: print(f检测结果: {r.boxes}) print(f保存目录: {r.save_dir})参数说明参数说明示例conf置信度阈值0.7只显示置信度0.7的结果save是否保存结果图Trueproject结果保存根目录test_result说明当saveTrue时YOLO会自动在project目录下创建predict子目录。即projecttest_result时结果实际保存在test_result/predict/目录下。6.2 预测API部署前置步骤部署前需将训练好的模型复制到API项目的models目录# 从训练项目复制到预测项目 cp runs/train/exp/weights/best.pt predict/models/API项目核心代码1. 配置管理app/config.pyfrom pydantic_settings import BaseSettings class Settings(BaseSettings): app_name: str YOLO预测API app_version: str 1.0.0 model_path: str models/best.pt max_upload_size: int 10 * 1024 * 1024 # 10MB allowed_extensions: str .jpg,.jpeg,.png,.bmp class Config: env_file .env settings Settings()2. 响应模型app/models/prediction.pyfrom pydantic import BaseModel from typing import List, Optional class BoundingBox(BaseModel): x1: float y1: float x2: float y2: float class DetectionResult(BaseModel): class_id: int class_name: str confidence: float bbox: BoundingBox class PredictionResponse(BaseModel): success: bool message: str detections: List[DetectionResult] processing_time: float3. 推理服务app/services/inference.pyfrom ultralytics import YOLO from PIL import Image import io import time from typing import List, Tuple class ModelInferenceService: def __init__(self): self.model None self.class_names {} def load_model(self, model_path: str): 加载模型 self.model YOLO(model_path) self.class_names self.model.names if self.model.names else {} def predict(self, image_bytes: bytes, conf_threshold: float 0.7) - Tuple[List[dict], float]: 执行预测 start_time time.time() # 预处理 image Image.open(io.BytesIO(image_bytes)).convert(RGB) # 推理 results self.model.predict(sourceimage, confconf_threshold, verboseFalse) # 提取结果 detections [] result results[0] if result.boxes is not None: for box in result.boxes: xyxy box.xyxy[0].cpu().numpy() confidence float(box.conf[0].cpu().numpy()) class_id int(box.cls[0].cpu().numpy()) detections.append({ class_id: class_id, class_name: self.class_names.get(class_id, fclass_{class_id}), confidence: confidence, bbox: { x1: float(xyxy[0]), y1: float(xyxy[1]), x2: float(xyxy[2]), y2: float(xyxy[3]) } }) processing_time time.time() - start_time return detections, processing_time # 全局服务实例 model_service ModelInferenceService()4. API路由app/api/routes.pyfrom fastapi import APIRouter, File, UploadFile, HTTPException from app.config import settings from app.services.inference import model_service from app.models.prediction import PredictionResponse router APIRouter(prefix/api/v1, tags[预测]) router.post(/predict, response_modelPredictionResponse) async def predict_image(file: UploadFile File(...), conf_threshold: float 0.7): 图片预测接口 # 验证文件类型 if not file.filename.lower().endswith((.jpg, .jpeg, .png, .bmp)): raise HTTPException(status_code400, detail不支持的文件类型) # 读取图片 image_bytes await file.read() # 确保模型已加载 if model_service.model is None: model_service.load_model(settings.model_path) # 执行预测 detections, processing_time model_service.predict(image_bytes, conf_threshold) return PredictionResponse( successTrue, message预测成功, detectionsdetections, processing_timeprocessing_time ) router.get(/health) async def health_check(): 健康检查 return {status: healthy, model_loaded: model_service.model is not None}5. 应用入口app/main.pyfrom fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.config import settings from app.api.routes import router app FastAPI(titlesettings.app_name, versionsettings.app_version) # CORS配置 app.add_middleware( CORSMiddleware, allow_origins[*], allow_methods[*], allow_headers[*], ) # 注册路由 app.include_router(router) app.on_event(startup) async def startup(): 启动时加载模型 from app.services.inference import model_service model_service.load_model(settings.model_path) print(f✅ 模型加载完成: {settings.model_path})启动服务# 开发环境自动重载 uvicorn app.main:app --reload --host 0.0.0.0 --port 8000 # 生产环境 uvicorn app.main:app --host 0.0.0.0 --port 8000 --workers 4环境变量配置.envMODEL_PATHmodels/best.pt MAX_UPLOAD_SIZE10485760 ALLOWED_EXTENSIONS.jpg,.jpeg,.png,.bmp调用示例Pythonimport requests url http://localhost:8000/api/v1/predict files {file: open(test_image.jpg, rb)} params {conf_threshold: 0.7} response requests.post(url, filesfiles, paramsparams) result response.json() print(f检测到 {len(result[detections])} 个目标) for det in result[detections]: print(f - {det[class_name]}: {det[confidence]:.2f})响应示例{ success: true, message: 预测成功, detections: [ { class_id: 0, class_name: defect, confidence: 0.95, bbox: {x1: 100.0, y1: 200.0, x2: 300.0, y2: 400.0} } ], processing_time: 0.15 }七、常见问题与优化7.1 训练问题显存不足CUDA out of memory降低batch大小--batch 4或--batch 2减小图像尺寸--imgsz 416关闭数据缓存--cache falseloss不收敛检查标注是否正确是否有漏标、错标降低学习率在train.py中修改lr0增加训练轮数--epochs 300过拟合训练loss下降但验证loss上升增加数据量或使用数据增强增大dropout在train.py中修改dropout减小模型规模使用yolo11n代替yolo11l7.2 预测问题检测精度不足提高置信度阈值conf0.8检查测试图片与训练数据是否分布一致增加该类别的训练样本误检/漏检处理误检误报提高置信度阈值漏检漏报降低置信度阈值或补充困难样本重新训练7.3 数据问题样本不平衡某类样本过少时使用数据增强旋转、翻转、调色或复制少数类样本并稍作变换数据增强策略train.py已内置mosaic4张图拼接mixup图像混合hsv色彩抖动fliplr/flipud翻转

相关文章:

使用Yolo 11进行定制化图像识别全流程

全流程预览 Label Studio标注 → 导出YOLO格式 → 编写data.yaml → 拆分数据集 → 模型训练 → 预测部署步骤工具/技术产出物数据标注Label Studio标注好的图片数据导出YOLO with imagesimages/ labels/配置文件data.yaml数据集配置数据拆分Python脚本train/val/test模型训练…...

GLM-4.1V量化模型实测:NPU部署精度仅差0.17%

GLM-4.1V量化模型实测:NPU部署精度仅差0.17% 【免费下载链接】GLM-4.1V-9B-Thinking-w8a8s-310 项目地址: https://ai.gitcode.com/Eco-Tech/GLM-4.1V-9B-Thinking-w8a8s-310 导语:近日,基于GLM-4.1V-9B-Thinking模型的量化版本GLM-4…...

吴恩达Agentic AI教程·模块5:高度自主智能体的模式 知识点总结

吴恩达Agentic AI教程模块5:高度自主智能体的模式 知识点总结一、规划设计模式(高度自主智能体的核心模式)1.1 规划设计模式的核心定义与价值1.1.1 核心定义1.1.2 核心价值1.2 规划设计模式的基础流程与示例1.2.1 基础流程1.2.2 示例1&#x…...

别再纠结Seurat版本了!手把手教你用CCA和Harmony搞定单细胞数据整合(附避坑指南)

单细胞数据整合实战:从CCA到Harmony的精准选择与避坑指南 单细胞RNA测序技术正在重塑我们对复杂生物系统的认知边界。当实验室积累了大量单细胞数据集后,如何将这些分散的数据整合成一个连贯的整体,成为每个研究者必须面对的挑战。我曾见证过…...

Linux期末突击:从体系结构到VFS,一张图搞定所有简答题

Linux期末突击:从体系结构到VFS,一张图搞定所有简答题 距离期末考试只剩三天,书桌上堆满的Linux教材和笔记让人头皮发麻。别慌,这份突击指南将用最直观的图解方式,帮你把零散的知识点串联成完整的知识网络。我们不仅会…...

告别‘Hello World’:用Gin框架从零搭建一个带用户登录和文件上传的Web服务(Go 1.21+)

告别‘Hello World’:用Gin框架从零搭建一个带用户登录和文件上传的Web服务(Go 1.21) 当你已经掌握了Go语言的基础语法,接下来最令人兴奋的莫过于亲手构建一个真实的Web服务。Gin框架以其高性能和简洁的设计,成为Go开发…...

draw.io桌面版终极指南:离线绘图革命与数据主权回归

draw.io桌面版终极指南:离线绘图革命与数据主权回归 【免费下载链接】drawio-desktop Official electron build of draw.io 项目地址: https://gitcode.com/GitHub_Trending/dr/drawio-desktop 你是否曾因网络中断而无法完成重要的图表设计?是否担…...

探索水煤气交换反应的SOFC模型:从理论到Comsol仿真

水煤气交换反应的SOFC模型,固体氧化物燃料电池 考察了水煤气反应对电池内部气体浓度,温度的影响,基于仿真软件comsol探究了单通道SOFC的内特性,考虑了传热传质下的SOFC内特性,电池片的厚度来自于实际电池SEM扫描结果&a…...

探索基于Cruise与Simulink的前后双电机纯电动汽车联合仿真

基于Cruise和Simulink联合仿真前后双电机纯电动汽车模型,包含驱动转矩控制策略和最优转矩分配分配系数的dll文件,可根据自身车辆参数修改相关参数在电动汽车的研发领域,联合仿真技术正逐渐成为提升性能与优化设计的关键手段。今天咱就来唠唠基…...

Qt串口开发避坑指南:从QSerialPort基础到实战封装,解决粘包和跨平台问题

Qt串口开发避坑指南:从QSerialPort基础到实战封装 1. 串口开发的典型痛点与解决思路 嵌入式开发中,串口通信就像一位性格古怪的老朋友——看似简单却暗藏玄机。许多开发者第一次使用Qt的QSerialPort类时,往往会被其简洁的API迷惑,…...

实时数据复制技术在大数据平台中的应用与实践

实时数据复制技术在大数据平台中的应用与实践关键词:实时数据复制、大数据平台、CDC(变更数据捕获)、数据同步、数据一致性、分布式系统、ETL摘要:本文深入探讨了实时数据复制技术在大数据平台中的核心应用场景与实践方法。我们将…...

看完就会:2026年最强AI论文写作软件榜单,AI工具一键写高质论文

2026 年实测 10 款主流 AI 论文工具,千笔AI以全流程覆盖 语义级降重 免费查重领跑综合榜;ThouPen 稳坐留学生毕业全流程工具头把交椅;免费工具中DeepSeek Scholar、豆包学术版表现亮眼,30 分钟即可生成万字高质量初稿&#xff0…...

OpenClaw自动化报告:Qwen3.5-4B-Claude周报生成与邮件发送

OpenClaw自动化报告:Qwen3.5-4B-Claude周报生成与邮件发送 1. 为什么选择OpenClaw处理周报任务 每周五下午,我都会面临同样的困扰——需要从零散的会议记录、Git提交和即时通讯对话中提取关键信息,整理成一份结构清晰的周报。这个耗时1-2小…...

如何快速使用wiliwili:Switch本地视频播放完全指南

如何快速使用wiliwili:Switch本地视频播放完全指南 【免费下载链接】wiliwili 专为手柄控制设计的第三方跨平台B站客户端,目前可以运行在PC全平台、PSVita、PS4 和 Nintendo Switch上 项目地址: https://gitcode.com/GitHub_Trending/wi/wiliwili …...

如何通过Bilibili-Evolved打造个性化B站体验?解锁高效视频浏览新方式

如何通过Bilibili-Evolved打造个性化B站体验?解锁高效视频浏览新方式 【免费下载链接】Bilibili-Evolved 强大的哔哩哔哩增强脚本 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Evolved 你是否曾经在B站浏览时遇到这样的困扰:界面广告太…...

告别龟速成像:手把手教你用Python实现FBP算法的子孔径并行加速(附代码)

告别龟速成像:手把手教你用Python实现FBP算法的子孔径并行加速(附代码) 雷达成像技术在现代遥感领域扮演着至关重要的角色,而快速后向投影(FBP)算法作为合成孔径雷达(SAR)成像的核心方法之一,其计算效率直接决定了实际…...

DownKyi如何成为B站视频下载的智能管家?8K高清+批量处理全解析

DownKyi如何成为B站视频下载的智能管家?8K高清批量处理全解析 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等…...

告别模糊深度图:用CREStereo的级联循环网络,搞定手机双摄的立体匹配难题

手机双摄立体匹配的工程突围:CREStereo如何重塑深度图细节 当你在智能手机上使用人像模式时,是否注意到头发丝边缘总会出现不自然的虚化断裂?这种"深度图模糊综合征"正是移动端立体匹配面临的典型挑战。不同于工业级双目摄像头&…...

Arduino Mega硬件PWM舵机库:绕过Software Delay实现±0.5μs高精度控制

1. 项目概述Servo Hardware PWM是一款专为 Arduino/Genuino Mega 系列开发板设计的高性能舵机控制库。其核心目标是绕过软件定时与通用 I/O 抽象层,直接利用 ATmega2560 微控制器内置的 16 位硬件定时器/计数器(Timer3、Timer4、Timer5)生成精…...

TypeScript——tsconfig.json

tsconfig.json1、使用配置文件1.1、自动搜索配置文件1.2、指定配置文件2、编译选项列表3、编译文件列表3.1、--listFiles编译选项3.2、 默认编译文件列表3.3、files属性3.4、include属性3.5、 exclude属性4、声明文件列表4.1、--typeRoots编译选项4.2、--types编译选项5、继承…...

TypeScript——编译器和编译选项

编译器和编译选项 1、编译器1.1、安装编译器1.1.1、--help、--all1.1.2、--version 2、编译程序2.1、编译单个文件2.2、编译多个文件2.3、--watch和-w2.4、--presserveWatchOutput 2、编译选项2.1、编译选项风格2.2、使用编译选项2.3、严格类型检查2.3.1、--strict2.3.2、--nol…...

TypeScript——声明合并

声明合并1、接口声明合并2、枚举声明合并3、类声明合并4、命名空间声明合并4.1、命名空间与命名空间合并4.2、 命名空间与函数合并4.3、 命名空间与类合并4.4、 命名空间与枚举合并5、扩充模块声明6、扩充全局声明声明是编程语言中的基础结构,它描述了一个标识符…...

TypeScript——模块解析

模块解析1、相对模块导入2、非相对模块导入3、模块解析策略4、模块解析策略之Classic4.1、解析相对模块导入4.2、解析非相对模块导入5、模块解析策略之Node5.1、解析相对模块导入5.2、解析非相对模块导入6、--baseUrl6.1、设置--baseUrl6.2、解析--baseUrl7、paths7.1、设置pat…...

Java轻量级边缘运行时深度解析(OpenJDK GraalVM Substrate VM在ARM64 IoT设备上的实测压测报告)

第一章:Java轻量级边缘运行时概览与技术定位Java轻量级边缘运行时是面向资源受限边缘设备(如工业网关、智能传感器、车载终端)设计的精简型JVM执行环境,它在保持Java语言语义兼容性的同时,显著降低内存占用、启动延迟与…...

嵌入式ADC过采样驱动文档规范与实践

项目标题缺失有效技术信息,项目摘要仅为编码“PURS_ZI_007”,项目关键词为空,Readme文档内容未提供。根据嵌入式底层技术文档创作规范,所有输出必须严格基于输入的英文原始材料——包括功能描述、API定义、配置项、示例代码及架构…...

安路PH1A180 FPGA实战:用米联客FDMA IP搞定DDR视频缓存,附源码调试心得

安路PH1A180 FPGA实战:FDMA IP与DDR视频缓存深度优化指南 在视频处理系统中,FPGADDR架构已成为实时高清视频流处理的标准方案。安路PH1A180凭借其高性能特性,配合米联客FDMA IP核,能够构建稳定高效的视频缓存系统。但在实际工程落…...

高效构建分布式AI智能体系统:AutoGen架构深度解析与实战指南

高效构建分布式AI智能体系统:AutoGen架构深度解析与实战指南 【免费下载链接】autogen 启用下一代大型语言模型应用 项目地址: https://gitcode.com/GitHub_Trending/au/autogen AutoGen是一个革命性的多智能体对话框架,专为简化基于大型语言模型…...

Windows下用C语言实现控制台鼠标交互:从获取坐标到点击响应全流程

Windows控制台鼠标交互开发实战:C语言实现精准坐标捕获与事件响应 引言:当命令行遇上图形交互 在大多数开发者印象中,控制台程序总是与键盘输入绑定在一起——那个闪烁的光标等待着用户键入命令,然后返回几行单调的文字输出。但Wi…...

5个核心功能实现全球多语言语音降噪:基于深度滤波的开源解决方案

5个核心功能实现全球多语言语音降噪:基于深度滤波的开源解决方案 【免费下载链接】DeepFilterNet Noise supression using deep filtering 项目地址: https://gitcode.com/GitHub_Trending/de/DeepFilterNet 在当今全球化的语音通信时代,背景噪声…...

OpenClaw技能开发指南:为Qwen3.5-4B-Claude定制专属自动化

OpenClaw技能开发指南:为Qwen3.5-4B-Claude定制专属自动化 1. 为什么需要自定义Skill? 去年我接手了一个重复性极高的数据整理工作——每天要从十几个气象网站抓取数据,手动整理成Excel报表。当我第三次在凌晨两点对着屏幕核对数据时&#…...