尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

YOLOv11卫星影像地物分类与变化检测实战全解析

YOLOv11卫星影像地物分类与变化检测实战全解析 简介一份47页的遥感图像分析专题文档聚焦YOLOv11在卫星影像地物分类与变化检测中的应用面向遥感、计算机视觉方向的开发者与研究人员旨在解决传统目标检测效率低、成本高的问题。文档支持目录章节跳转与大纲快速定位内容完整呈现了从研究背景、遥感图像分析基础到YOLO系列演进、YOLOv11网络结构与损失函数再到卫星影像预处理、地物分类模型与变化检测模型构建的完整技术路径。后半部分还包含实验环境搭建、结果可视化、模型对比以及城市规划、农业监测、生态环保、灾害应急等真实应用案例便于读者将算法落地到具体场景。资源包为单个PDF文件大小约2.05MB阅读与携带都很方便目前已有67人学习浏览适合需要系统学习YOLOv11遥感应用的中高级学习者参考使用。1. 卫星影像地物分类用YOLOv11这份47页文档拆完后的实话拿到这份《遥感图像分析-YOLOv11在卫星影像中的地物分类与变化检测》PDF时我第一反应是标题里同时压了“地物分类”和“变化检测”两个任务而YOLOv11本身是个目标检测模型这两件事怎么被一个检测器统一起来是我最想从文档里找答案的。翻完之后可以给个结论这份文档的价值不在于让你复现某个SOTA精度而在于把一条从原始卫星影像到可训练数据集、再到模型调参和评估的完整链路梳理清楚了尤其适合两类人——一类是刚接触遥感、手里有Landsat或哨兵2号影像但不知道如何下手做标注的小朋友另一类是做通用目标检测想往遥感方向迁移、却总被影像预处理和多时相数据折腾到怀疑人生的工程师。我照着它的思路把数据增强、损失函数、变化检测路线重新过了一遍下面按实操顺序把干货和踩过的坑一起写出来。2. 为什么是YOLOv11从YOLOv1到v11的选型逻辑与网络结构2.1 YOLOv1到YOLOv5单阶段检测是如何把“定位分类”合并的YOLO系列对我这种做工程的人来说最大的意义是把目标检测从“先提候选框再分类”的两阶段流程压缩成了一个端到端的回归问题。YOLOv1把输入图像划分成S×S的网格每个网格负责预测边界框、置信度和类别概率一张图前向传播一次就能拿到结果这在2015年是很反直觉的设计——大家都习惯用R-CNN那套思路慢但准确而YOLOv1用速度换来了实时性的可能。到了YOLOv2和YOLOv3工程上能直接感知到的改进是批量归一化的引入和先验框机制的加入。YOLOv2用聚类算法从训练数据里统计出合适的anchor尺寸让模型不再从零开始猜边界框的形状YOLOv3的多尺度检测则在三个不同尺度的特征图上分别做预测这对卫星影像特别关键因为一景影像里可能同时存在大面积的农田地块和只有几十个像素的独立建筑物单一尺度特征图很难兼顾。YOLOv4和YOLOv5则把训练技巧和数据增强补全了比如Mosaic增强、余弦退火调度这些技巧后来在遥感场景里依然有效。从v1走到v5逐次推演进中真正影响我选型YOLOv11的点是高分辨率输入和高密度目标并存的场景。文档里梳理的v11网络结构延续了单阶段路线但对骨干网络和颈部网络的组合方式做了重新设计接下来细看。2.2 YOLOv11的骨干网络与颈部网络多尺度特征在卫星影像里怎么用YOLOv11的骨干网络Backbone是整条链路里决定特征质量的第一环。文档里给出的结构是深度可分离卷积Depthwise Separable Convolution配合残差连接深度可分离卷积把标准卷积拆成了逐通道卷积和1×1逐点卷积两步。对卫星影像来说这个设计有两个直接好处一是参数量下降训练时显存压力小我在8GB显存的卡上调模型不至于动不动就OOM二是逐通道卷积先单独处理每个光谱通道的特征再用逐点卷积跨通道融合这对多光谱影像的通道信息交互方式其实挺契合的。残差连接则是让网络能往深了堆的关键。卫星影像的纹理信息不像自然图像那么丰富建筑物、道路、裸地在灰度分布上经常很接近需要更深层的网络去抽象高阶语义而残差结构缓解了梯度消失的问题让骨干网络可以训练得更深而不容易翻车。再说颈部网络NeckYOLOv11用的是FPN加PAN的组合。FPN自顶向下把深层语义信息往浅层特征图上传递PAN自底向上再把浅层的空间细节往深层回传这一来一回形成了一条双向的信息通路。我一般看颈部结构时会重点确认它输出的特征图尺度数量。YOLOv11沿用了多尺度检测的设计如果输入是640×640的影像会在这几个不同分辨率的特征图上分别做预测这样大目标和小目标都有对应的检测层。这里必须提一句yolov11小目标优化——遥感影像里小目标才是常态。一颗10米分辨率的哨兵2号影像上一栋普通民房可能只占4到6个像素在特征图下采样之后几乎就消失了。常见做法是在训练时提高输入分辨率比如从默认的640提升到960甚至1280同时配合更浅层的特征图输出。这份文档在网络结构部分把FPNPAN的信息流讲清楚了但真正要解决小目标问题还得靠训练侧的分辨率和切片策略配合这个在第4章会展开。2.3 检测头与损失函数地物边界在哪一层被管住检测头Head是模型最终输出边界框、置信度和类别概率的地方。YOLOv11沿用了多尺度检测头设计每个尺度的特征图负责预测不同尺寸的目标。工程上有一个容易忽略的点三个检测头分别预测小、中、大目标但如果你的数据集里某个尺度的目标占比特别高训练出来的模型会对该尺度有偏向这时就要对损失权重做调整而不是盲目改网络结构。文档里对损失函数的梳理是可落地的部分。边界框损失用的是CIoU Loss公式里除了IoU之外还考虑了中心点距离和长宽比L_CIoU 1 - IoU ρ²(b, b_gt) / c² αv其中ρ²(b, b_gt)是预测框和真实框中心点之间的欧氏距离平方c是包含两个框的最小外接矩形对角线长度α是平衡因子v衡量长宽比一致性。对比普通的IoU LossCIoU在两个框完全不重叠时梯度不为零模型还能靠中心点距离和长宽比的约束继续优化。我在做建筑物边界检测时明显感觉CIoU让框的定位更稳不会出现那种“框倒是框住了但总是偏上一截”的玄学问题。置信度损失和类别损失都用了二元交叉熵这个选择的工程意义在于它把每个类别当作独立的二分类问题来做而不是像多分类softmax那样类别之间互相竞争。卫星影像里一个检测框内可能出现“建筑物带一点绿地”这种混合情况独立二分类的输出更灵活但也更容易出现同一目标被同时打上两个类别标签的情况后处理时通常需要按最高置信度类目做取舍。3. 卫星影像预处理从原始影像到可训练数据集3.1 数据源取舍WorldView、Landsat 8和哨兵2号怎么选做遥感目标检测数据源选错比模型调参翻车更致命。文档里给出了几个主流数据源的参数我根据自己的实操经验把它们整理成一张选型表数据源空间分辨率主要波段适合场景获取途径WorldView系列全色0.31m多光谱1.24m4波段城市精细地物、单体建筑检测商业渠道采购QuickBird全色0.61m多光谱2.44m4波段土地利用监测、基础设施商业渠道采购Landsat 8 OLI/TIRS全色15m多光谱30m热红外100m9波段2热红外区域尺度覆盖变化、生态环境USGS EarthExplorer免费哨兵2号Sentinel-210m/20m/60m13波段农业监测、植被分类、变化检测ESA Copernicus Open Access Hub免费个人经验是如果做单体建筑物检测或城市精细分类WorldView这类的亚米级影像基本是必需品10米分辨率的哨兵2号上一个建筑就三四个像素检测框跟胡猜差不多。反过来如果做的是大范围水体、农田或森林覆盖变化免费且重访周期短的哨兵2号反而更合适我就在哨兵2号卫星影像官网上找过同一区域不同月份的时序影像来扩充训练集。文档里提到的Landsat 8的30米多光谱波段更适合做宏观土地利用趋势分析而不是做目标检测的底图。3.2 辐射校正与几何校正不做这两步模型精度会掉一截拿到原始影像直接喂给YOLOv11是一个新手容易踩的坑。卫星传感器记录的DN值受太阳高度角、大气散射、传感器响应差异等因素影响同一地物在不同时间、不同姿态下获取的影像光谱值会明显漂移。如果没做辐射校正就做变化检测两期影像的差异里会混入大量“伪变化”我把这个现象叫作大气给地物化了个不同色号的妆。辐射校正分绝对校正和相对校正。绝对校正需要大气参数工程上直接用ENVI或SNAP这类工具完成相对校正则简单很多——以某一期影像为参考对其他期影像做直方图匹配或线性回归拟合让两期影像的光谱分布对齐。我做变化检测时一般至少会做一步相对辐射校正这是性价比最高的操作。几何校正同样不容忽视。卫星影像存在由传感器姿态、地形起伏引起的几何畸变不做几何校正两期影像叠加时同一地物会错位好几个像素。文档里给出的处理流程是先做几何精校正再做正射校正消除地形引起的位移。在代码层面我通常用GDAL按控制点做多项式拟合重采样。# 以参考影像为基准对目标影像做几何校正多项式拟合 gdal_translate -of VRT reference.tif ref.vrt gdal_translate -of VRT target.tif tgt.vrt # 收集地面控制点GCP后执行 gdalwarp -tps -order 1 -r bilinear -co COMPRESSLZW tgt.vrt geocorrected.tif逻辑说明-tps启用薄板样条插值适合控制点数量多且分布不均匀的情况-order 1表示一阶多项式适合地形平坦区域的近似校正-r bilinear使用双线性内插保留平滑过渡。参数说明如果影像覆盖区域有高山峡谷建议改用-r cubicspline或接入外部DEM做正射校正否则地形引起的局部位移会直接导致后续检测框偏差。3.3 影像融合与噪声去除把多光谱信息压缩成YOLOv11能学的RGBYOLOv11默认接收三通道RGB输入但遥感影像的原始数据往往包含多光谱波段。文档里提到的影像融合就是把高分辨率全色波段和低分辨率多光谱波段融合生成既保留空间细节又包含光谱信息的高分辨率RGB影像。常用的融合方法有Brovey变换、IHS融合和主成分分析融合工程上我用得最多的是ENVI的Gram-Schmidt融合和GDAL的pansharpen工具。# 将10米多光谱波段重采样到2米再与2米全色波段融合 gdal_merge.py -o ms.tif -separate -ps 2 2 -ot Byte B2.tif B3.tif B4.tif gdal_pansharpen.py pan.tif ms.tif fused.tif -r bilinear -co PHOTOMETRICRGB逻辑说明gdal_merge.py先把多个波段合成一个多波段影像-ps 2 2指定输出像元大小为2米-ot Byte把DN值转换为8位整型这符合YOLO训练时对图像数据类型的常规要求。gdal_pansharpen.py执行锐化融合-co PHOTOMETRICRGB确保输出被解释为RGB影像。参数说明如果输入影像包含近红外波段我更建议把近红外替换到红色通道组成NIR-R-G的假彩色合成对植被类地物的检测效果会好很多这是文档里没细讲但实践中很管用的技巧。噪声去除方面卫星影像中常见的噪声包括传感器噪声、条带噪声和大气散射噪声。我用中值滤波处理椒盐噪声用傅里叶变换去周期性条带不过一个总被忽视的问题是噪声去除过度会模糊地物边缘反而损害小目标检测。除非噪声已经明显影响目视判读否则我一般只在训练数据里保留原始细节。4. 基于YOLOv11的地物分类数据标注、增强与训练实操4.1 地物分类数据准备收集、标注与划分把预处理好的影像转成YOLO训练格式要从标注开始。卫星影像的标注和自然图像标注用的是同一套坐标体系——归一化的中心点坐标加宽高但它有两个特殊点。一是大图中的小目标居多一张4096×4096的影像里可能分布着上千个独立目标如果直接把整张图送进网络显存直接被吃掉并且目标占比太小二是边界框的标定主观性强两个人标同一个建筑物框大小经常会差几个像素这会给训练引入噪声所以标注规范必须提前定死。文档提到数据划分要分成训练集、验证集和测试集遥感场景里我补充一个原则如果若干张成片的影像来自同一景原始影像不能让它们同时出现在训练集和验证集里否则空间相关性会带来数据泄漏验证集分数虚高。我一般用GeoPandas按矢量多边形边界来做空间划分而不是简单随机划分文件。import geopandas as gpd from sklearn.model_selection import train_test_split # 读取瓦片中心点对应的矢量网格 gdf gpd.read_file(tiles_grid.shp) # 按空间不重叠原则拆分成训练集和验证集 train_idx, val_idx train_test_split( gdf.index, test_size0.2, stratifygdf[landcover_code], random_state42 ) # 保存每个瓦片对应的集别后续按文件名匹配 train_tiles gdf.loc[train_idx, tile_id].tolist() val_tiles gdf.loc[val_idx, tile_id].tolist()逻辑说明stratify参数按地物类别比例做分层抽样避免某一类地物的瓦片全部落在验证集里random_state42保证每次划分结果一致。参数说明如果类别分布极度不均衡建议先把稀有类别的瓦片单独挑出来确保它们同时出现在训练集和验证集中否则模型对稀有类别的泛化能力完全无法被评估。4.2 数据增强翻转、裁剪和颜色抖动边界框要同步文档里给出了基于Albumentations的数据增强配置这段代码在实际项目中可以直接复用。关键是bbox_params必须格式对齐YOLO格式的边界框是归一化后的[x_center, y_center, width, height]增强库默认用pascal_voc格式时会错位这是我见的频次最高的低级错误之一。import cv2 import albumentations as A # 定义数据增强管道 transform A.Compose( [ A.RandomCrop(width512, height512, p0.8), A.HorizontalFlip(p0.5), A.VerticalFlip(p0.5), A.RandomBrightnessContrast(p0.3), A.HueSaturationValue(hue_shift_limit10, sat_shift_limit20, val_shift_limit20, p0.3), ], bbox_paramsA.BboxParams(formatyolo, label_fields[class_labels]), ) # 读取影像和标注 image cv2.imread(tile_0001.tif) with open(tile_0001.txt, r) as f: lines f.read().strip().splitlines() bboxes [list(map(float, line.split()[1:5])) for line in lines] class_labels [int(line.split()[0]) for line in lines] # 应用增强边界框同步变换 transformed transform(imageimage, bboxesbboxes, class_labelsclass_labels) image_aug transformed[image] bboxes_aug transformed[bboxes] labels_aug transformed[class_labels]逻辑说明A.Compose按顺序执行各增强操作bbox_params指定标注格式为yololabel_fields声明类别标签随边界框一起变换。翻转操作会镜像边界框坐标RandomCrop会把落在裁剪区域外的框过滤掉所以增强后的框数量和原始框数量不一定相同这是正常的。参数说明HueSaturationValue的颜色抖动幅度要克制遥感影像本身色彩分布和自然图像差异很大色相偏移过大会生成不真实的训练样本。文档里还建议做亮度对比度增强这符合遥感影像多时相、多光照条件的特点。4.3 模型架构调整与超参数设置直接拿YOLOv11默认的80类COCO权重来训卫星影像输出层不匹配需要把类别数改成自己的地物类别。常见做法是修改数据配置文件中的nc值然后加载预训练权重继续微调。工程上我会保留骨干网络的COCO预训练参数只随机初始化检测头这样收敛速度会明显快于从头训练。这里要单独说yolov11环境配置。Ultralytics通过pip安装后首次运行时自动下载预训练权重但如果训练机和外网网络受限预训练权重下载会卡住。我的习惯是先手动下载权重文件放到项目目录再在训练脚本里指定modelweights/yolo11n.pt这样环境配置一小时内能搞定。# dataset.yaml path: /data/satellite/ train: images/train val: images/val nc: 6 names: 0: building 1: road 2: water 3: vegetation 4: bareland 5: farmland训练启动命令我一般这样写。yolo train modelweights/yolo11s.pt datadataset.yaml \ epochs120 imgsz1024 batch16 workers8 \ device0 optimizerAdamW lr00.001 \ cos_lrTrue patience20逻辑说明imgsz1024是根据遥感小目标特点设置的这个尺寸对显存有压力16GB显存以下建议降到896cos_lrTrue让学习率按余弦曲线衰减后期训练更稳patience20表示20个epoch内验证集指标没提升就提前停止。参数说明batch的大小取决于显存如果训练中出现CUDA out of memory优先降低batch其次降低imgsz不要一上来就换小模型因为小模型在遥感小目标上的掉点比自然图像场景明显得多。4.4 模型评估与优化mAP还不是唯一答案文档用了mAP、Precision、Recall作为评估指标。遥感场景里我会补充两个观察维度小目标类别的AP50和AP75分开看以及类别混淆矩阵。AP50和AP75的差距能直接反映边界框定位精度如果AP50不错但AP75很差说明框虽然大致框对了但边缘偏差大需要提升CIoU损失权重或提高输入分辨率。混淆矩阵则能定位到具体误判——比如道路和建筑经常互相误判是因为它们的形状和灰度在屋顶、水泥路面上有重叠区。处理方式有两个方向一是为容易混淆的类别增加训练样本二是调整类别定义把“不透水面”这种合并类别拆开。我的经验是先把混淆矩阵打印出来看再做针对性优化而不是盲目改网络结构。文档里提到的优化策略包括调整anchor尺寸、修改数据增强策略。我在实践中最有体感的优化有两个一个是在训练后期冻结骨干网络、仅微调检测头此时学习率要降低到原来的十分之一左右能让定位更稳定另一个是动态调整正样本分配阈值让模型在低置信度时不过早放弃对小目标的预测。5. 变化检测的避坑清单多时相对齐、类别混淆与阈值玄学5.1 基于分类后比较的变化检测流程地物分类模型训好之后变化检测并不需要另起炉灶。文档里给出的分类后比较Post-Classification Comparison思路是最适合和YOLOv11结合的变化检测路线对T0期影像和T1期影像分别做地物分类再逐像素比较两期分类结果类别发生变化的位置就是变化区域。这条路线的好处是思路清晰、可以复用已有的分类模型坏处是分类误差会直接传导到变化检测结果里两期分类各自有5%的误差变化图的误差可能被放大到10%以上这是变化检测的数学代价。我在工程上做分类后比较时不会在像素级直接比较而是先对分类结果做矢量化和空间滤波再比较。比如把YOLOv11输出的检测框转换为面要素按类别做融合和剔除小图斑再叠加分析。这样能避免像素级比较的椒盐噪声也更贴近GIS工作流。5.2 基于图像差值与孪生网络的路线选择除了分类后比较文档还提到了两条深度学习的路线图像差值法和孪生网络法。图像差值法本质是传统图像处理的延伸——计算两期影像对应波段的差异再做阈值分割实现简单但只适合辐射一致性极好的数据对。孪生网络法则是把两期影像同时输入共享权重的网络让网络直接学习变化特征。文档给出的孪生网络结构是把两期影像分别过同一套卷积特征提取器然后计算特征向量的差异并接一个sigmoid分类输出。from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, Flatten, Dense, Lambda from tensorflow.keras.models import Model import tensorflow as tf # 共享的特征提取网络 def create_base_network(input_shape): input_layer Input(shapeinput_shape) x Conv2D(32, (3, 3), activationrelu)(input_layer) x MaxPooling2D((2, 2))(x) x Flatten()(x) x Dense(64, activationrelu)(x) return Model(input_layer, x) input_shape (512, 512, 3) input_a Input(shapeinput_shape) input_b Input(shapeinput_shape) base_network create_base_network(input_shape) feature_a base_network(input_a) feature_b base_network(input_b) # 计算特征差异并映射到变化概率 distance Lambda(lambda x: tf.abs(x[0] - x[1]))([feature_a, feature_b]) output Dense(1, activationsigmoid)(distance) model Model([input_a, input_b], output)逻辑说明孪生网络共享权重两个输入走的是完全相同的特征提取器保证两期影像在同一个特征空间中比较Lambda层计算特征向量逐元素差的绝对值这个差异向量经过全连接层后被映射为变化概率。参数说明这种做法的前提是两期影像已完成严格的辐射对齐和几何配准如果预处理没做好网络学到的变化特征会包含大量噪声。到底选分类后比较还是孪生网络我的判断标准很简单有标注数据、追求可解释性就选分类后比较数据量大、想要端到端的就上孪生网络。文档里同时给出这两条路线说明这不是二选一的问题而是要根据具体任务数据量决定。另外要提一句变化检测近年还有个开放词汇变化检测Open-Vocabulary Change Detection的方向核心是用CLIP这类视觉语言模型让用户用自然语言指定“我要看什么变化”比如“新增建筑”“森林变耕地”而无需预先固定类别。这份文档没有覆盖这个方向但如果你做的项目类别经常变动可以把这个方向作为后续的模型迭代参考。5.3 我用YOLOv11做变化检测时踩过的五个坑下面这五个坑是我在一轮实际项目里真实遇到的每条按现象、原因、解决来说明。坑一两期同一地点的影像YOLOv11在T0期把某块地识别成了裸地在T1期识别成了农田变化图里多出一大片绿色。原因不是地物真变了而是影像获取季节不同——一个是冬季一个是夏季植被指数差异大模型误判。解决在数据准备阶段做相对辐射校正统一两期影像的光谱分布同时收集训练数据时按多季节混合让模型学到的是跨季节的地物不变特征。坑二分类后比较生成的变化图呈现密集的椒盐噪声像撒了一地的芝麻。原因单幅影像的分类误差在比较阶段被放大YOLOv11的检测框边缘也天然存在几个像素的抖动。解决对单期分类结果先做形态学闭运算和多数滤波再用最小图斑面积阈值剔除孤立的碎斑我通常把面积小于两个检测框平均大小的图斑直接过滤掉。坑三模型在同一期影像上推理时相邻瓦片接缝处的目标被重复检测同一个建筑物出现了两个略有重叠的框。原因瓦片切片有重叠区域位于重叠区的目标被两个瓦片各检测一次后处理阶段没有做全局的重复框合并。解决推理时把检测结果带瓦片坐标还原到全局坐标系按类别和IoU做非极大值抑制我设置IoU阈值为0.4既合并重复检测又不至于把相邻的两个真实目标合并掉。坑四验证集上AP指标很好看但实际推一段完全陌生的区域时建筑检测漏检率飙升。原因训练集和验证集来自同一区域模型其实记住了区域特征而不是学到了“建筑”这个类别的一般性特征。解决严格按空间不重叠原则划分数据集并且从不同地理位置收集尽可能多的测试数据。从那以后我做训练集划分时强制按矢量网格的空间位置来分绝不小聪明地随机分文件。坑五变化检测阈值怎么调都调不准阈值高一点漏检大量小变化区域低一点噪声爆炸。原因阈值是全局标量但不同地物类型的辐射变化幅度天然不同——水体变化可能只有几个DN值裸地变建筑则变化剧烈全局阈值无法适配所有类型。解决按地物类别分别统计变化幅度分布为每个类别单独设定阈值或者干脆对检测结果按类别加权后再走统一阈值。6. 结果可视化和落地验证保存推理结果把这套东西部署到边缘设备模型训完、评估指标也满意之后还差最后几步才算把这个资源真正用到项目里把推理结果保存成可读的格式并在真实硬件上验证部署可行性。我用YOLOv11保存推理结果时通常一次会同时输出两个产物一个是带检测框标注的影像用来做肉眼检查另一个是结构化的结果文件——CSV或JSON里面记录每个目标的类别、置信度和像素坐标方便后续做GIS分析。用Ultralytics接口的话代码极省事from ultralytics import YOLO model YOLO(runs/train/exp/best.pt) results model.predict( sourcetest_tiles/, imgsz1024, conf0.25, saveTrue, # 保存带标注的影像 save_txtTrue, # 保存YOLO格式的txt标注 save_confTrue, # 在txt中同时输出置信度 )逻辑说明saveTrue直接产出可视化的检测图save_txtTrue把每张图的目标框和类别写入同名txtsave_confTrue让txt每行末尾附带置信度分数。参数说明conf0.25是保守的置信度阈值卫星影像地物重叠少可以比自然场景的0.5阈值设得低一些减少漏检。如果想要带位置信息的结果就把这些txt和瓦片的地理坐标对应起来用GDAL把检测框在原始大图上反算为地理坐标。部署方面Jetson Nano这类边缘设备上用YOLOv11有一套固定流程。导出TensorRT引擎是最重要的一步因为Jetson的GPU对TensorRT的算子有深度优化推理速度比直接跑PyTorch模型快好几倍。# 先导出ONNX再在Jetson上用TensorRT转换为engine yolo export modelbest.pt formatonnx imgsz1024 dynamicTrue trtexec --onnxbest.onnx --saveEnginebest_fp16.engine --fp16逻辑说明dynamicTrue让ONNX支持动态输入尺寸边缘部署时方便按实际输入图尺寸调整trtexec --fp16把模型量化为半精度推理在Jetson Nano上这往往是精度损失和速度提升之间最均衡的平衡点。参数说明Jetson Nano的算力有限如果int8量化后精度掉点严重优先保持fp16只优化输入分辨率和预处理管线推理时把imgsz降到与训练时相近的值比如640速度能进一步提升。这套流程走完后我每次训变化检测模型都会强制跑一遍最后的验证步骤把历史卫星影像和当前影像用同一套预处理流程跑一遍人工核对变化图上的区域有没有明显的“假变化”。这一步曾经帮我抓住了一次数据管线错位导致的整批标注偏移问题。从那以后我再也不跳过这个验证环节哪怕是时间再紧也至少会检查二十个随机区域确认结果和实际情况吻合。希望这篇从数据预处理到模型训练、从变化检测到边缘部署的拆解能帮你在自己项目里少走几个弯路。本文还有配套的精品资源点击获取
返回列表