智慧无人机海洋海岸线语义分割数据集 U-Net模型 代码 用于无人机图像海岸线二值分割
数据集文字描述:智慧无人机海洋海岸线语义分割数据集用于无人机图像海岸线二值分割的数据集。数量230张图像类别数量2类别类型海岸线、其他用途目标检测、分类分割、多模态111 数据集总体信息表[仅为参考]项目内容数据集名称无人机海岸线语义分割数据集Drone-based Coastline Semantic Segmentation Dataset图像数量230 张图像来源无人机航拍图像UAV imagery分辨率多为 1920×1080 或 4000×3000高清航拍标注类型语义分割Semantic Segmentation任务类型二值分割Binary Segmentation类别数量2 类类别名称海岸线Coastline、其他Background / Other掩膜格式与原图同名的黑白或单通道标签图像0: 背景255: 海岸线数据划分未明确说明需自行按比例划分如 8:2提供内容原始图像 对应分割掩膜mask部分含视频转图脚本️ 类别定义表ID英文名称中文名称说明0Other其他 / 背景包括海水、陆地非海岸区域、植被、建筑等1Coastline海岸线海陆交界带用于提取边界进行地理分析✅ 掩膜为二值图像灰度图像素值 0 表示背景255 表示海岸线区域。 配套代码说明代码功能文件名示例功能描述视频转图像video_to_frames.py将无人机拍摄的视频自动抽帧生成.jpg图像序列便于构建数据集U-Net 模型代码unet_model.py实现带有批量归一化Batch Normalization的 U-Net 网络结构适用于二值分割任务数据预处理dataset.py加载图像和掩膜、归一化、数据增强可选训练脚本train.py使用 Dice Loss 或 Binary Cross-Entropy 训练模型推理与可视化predict.py对新图像进行预测并输出分割结果图 博主推荐目录结构coastline_segmentation/ ├── images/# 原始无人机图像│ └── *.jpg ├── masks/# 分割标签掩膜│ └── *.png(单通道)├── models/ │ └── unet_model.py# 含 BatchNorm 的 U-Net 结构├── scripts/ │ ├── video_to_frames.py# 视频抽帧工具│ └── preprocess.py# 图像预处理├── train.py# 训练主程序├── predict.py# 预测脚本└── data.yaml# 可选配置文件️ 技术用途应用方向说明目标检测❌ 不适用非目标框检测图像分类⚠️ 可用于场景分类是否包含海岸线语义分割✅ 主要用途精确提取海岸线轮廓多模态融合⚠️ 可结合红外、SAR 等遥感数据做跨模态分割研究地理信息系统GIS✅ 输出矢量化的海岸线用于地图更新环境监测✅ 监测海岸侵蚀、海平面上升等变化 注该数据集主要用于海岸线提取与动态监测在智慧海洋、防灾减灾中有重要价值。 模型性能建议指标指标说明IoU (Intersection over Union)衡量分割重合度越高越好Dice Coefficient类似 IoU常用于医学/遥感分割Pixel Accuracy像素级分类准确率F1-Score综合 precision 和 recall使用 PyTorch 框架编写包含模型定义、数据加载、训练与推理全流程。✅ 一、U-Net 模型实现unet_model.py# unet_model.pyimporttorchimporttorch.nnasnnclassDoubleConv(nn.Module):(卷积 BN ReLU) * 2def__init__(self,in_channels,out_channels):super(DoubleConv,self).__init__()self.double_convnn.Sequential(nn.Conv2d(in_channels,out_channels,kernel_size3,padding1),nn.BatchNorm2d(out_channels),nn.ReLU(inplaceTrue),nn.Conv2d(out_channels,out_channels,kernel_size3,padding1),nn.BatchNorm2d(out_channels),nn.ReLU(inplaceTrue))defforward(self,x):returnself.double_conv(x)classDown(nn.Module):下采样块MaxPool 双重卷积def__init__(self,in_channels,out_channels):super(Down,self).__init__()self.maxpool_convnn.Sequential(nn.MaxPool2d(2),DoubleConv(in_channels,out_channels))defforward(self,x):returnself.maxpool_conv(x)classUp(nn.Module):上采样块上采样 双重卷积含跳跃连接def__init__(self,in_channels,out_channels):super(Up,self).__init__()self.upnn.Upsample(scale_factor2,modebilinear,align_cornersTrue)self.convDoubleConv(in_channels,out_channels)defforward(self,x1,x2):x1self.up(x1)# 裁剪并拼接跳跃连接diffYx2.size()[2]-x1.size()[2]diffXx2.size()[3]-x1.size()[3]x1nn.functional.pad(x1,[diffX//2,diffX-diffX//2,diffY//2,diffY-diffY//2])xtorch.cat([x2,x1],dim1)returnself.conv(x)classOutConv(nn.Module):输出层1x1 卷积映射到类别数def__init__(self,in_channels,out_channels):super(OutConv,self).__init__()self.convnn.Conv2d(in_channels,out_channels,kernel_size1)defforward(self,x):returntorch.sigmoid(x)# 二值分割使用 SigmoidclassUNet(nn.Module): 带 BatchNorm 的 U-Net 网络结构 输入(B, 3, H, W) 输出(B, 1, H, W) # 二值分割图 def__init__(self,n_channels3,n_classes1):super(UNet,self).__init__()self.n_channelsn_channels self.n_classesn_classes self.incDoubleConv(n_channels,64)self.down1Down(64,128)self.down2Down(128,256)self.down3Down(256,512)self.down4Down(512,1024//2)# 减少参数以适应小数据集self.up1Up(1024,512//2)self.up2Up(512,256//2)self.up3Up(256,128//2)self.up4Up(128,64)self.outcOutConv(64,n_classes)defforward(self,x):x1self.inc(x)x2self.down1(x1)x3self.down2(x2)x4self.down3(x3)x5self.down4(x4)xself.up1(x5,x4)xself.up2(x4,x3)# 注意这里应是 x3修复拼写错误xself.up3(x3,x2)xself.up4(x2,x1)logitsself.outc(x)returnlogitsif__name____main__:# 测试模型前向传播modelUNet(n_channels3,n_classes1)input_tensortorch.randn(1,3,256,256)outputmodel(input_tensor)print(f输入形状:{input_tensor.shape})print(f输出形状:{output.shape})# 应为 (1, 1, 256, 256) 二、数据集加载器dataset.py# dataset.pyfromtorch.utils.dataimportDatasetfromPILimportImageimportosimporttorchvision.transformsastransformsclassCoastlineDataset(Dataset):def__init__(self,image_dir,mask_dir,transformNone):self.image_dirimage_dir self.mask_dirmask_dir self.transformtransform self.imagesos.listdir(image_dir)def__len__(self):returnlen(self.images)def__getitem__(self,idx):img_nameself.images[idx]img_pathos.path.join(self.image_dir,img_name)mask_pathos.path.join(self.mask_dir,img_name.replace(.jpg,.png))imageImage.open(img_path).convert(RGB)maskImage.open(mask_path).convert(L)# 灰度图# 归一化0~255 → 0~1并转为单通道mask(torchvision.transforms.ToTensor()(mask)0.5).float()ifself.transform:imageself.transform(image)returnimage,mask# 预处理变换transformtransforms.Compose([transforms.Resize((256,256)),transforms.ToTensor(),transforms.Normalize(mean[0.485,0.456,0.406],std[0.229,0.224,0.225])# ImageNet 标准化]) 三、训练脚本train.py# train.pyimporttorchimporttorch.optimasoptimfromtorch.utils.dataimportDataLoaderfromunet_modelimportUNetfromdatasetimportCoastlineDataset,transformimporttorch.nnasnnimportos# # 参数设置# DEVICEcudaiftorch.cuda.is_available()elsecpuEPOCHS100LR1e-4BATCH_SIZE4IMG_HEIGHT,IMG_WIDTH256,256IMAGE_DIRdata/imagesMASK_DIRdata/masksMODEL_SAVE_PATHsaved_models/unet_coastline.pthos.makedirs(saved_models,exist_okTrue)# # 数据加载# datasetCoastlineDataset(IMAGE_DIR,MASK_DIR,transformtransform)train_sizeint(0.8*len(dataset))val_sizelen(dataset)-train_size train_dataset,val_datasettorch.utils.data.random_split(dataset,[train_size,val_size])train_loaderDataLoader(train_dataset,batch_sizeBATCH_SIZE,shuffleTrue)val_loaderDataLoader(val_dataset,batch_sizeBATCH_SIZE,shuffleFalse)# # 模型初始化# modelUNet(n_channels3,n_classes1).to(DEVICE)optimizeroptim.Adam(model.parameters(),lrLR)criterionnn.BCELoss()# 二值交叉熵损失scheduleroptim.lr_scheduler.ReduceLROnPlateau(optimizer,patience5,verboseTrue)# # 训练循环# best_lossfloat(inf)forepochinrange(EPOCHS):model.train()train_loss0.0forimages,masksintrain_loader:imagesimages.to(DEVICE)masksmasks.to(DEVICE)optimizer.zero_grad()outputsmodel(images)losscriterion(outputs,masks)loss.backward()optimizer.step()train_lossloss.item()# 验证阶段model.eval()val_loss0.0withtorch.no_grad():forimages,masksinval_loader:imagesimages.to(DEVICE)masksmasks.to(DEVICE)outputsmodel(images)losscriterion(outputs,masks)val_lossloss.item()train_loss/len(train_loader)val_loss/len(val_loader)scheduler.step(val_loss)print(fEpoch [{epoch1}/{EPOCHS}], Train Loss:{train_loss:.4f}, Val Loss:{val_loss:.4f})# 保存最佳模型ifval_lossbest_loss:best_lossval_loss torch.save(model.state_dict(),MODEL_SAVE_PATH)print(f✅ 模型已保存至{MODEL_SAVE_PATH})print( 训练完成) 四、推理与可视化predict.py# predict.pyimporttorchfromPILimportImageimportnumpyasnpimportmatplotlib.pyplotaspltfromunet_modelimportUNetfromtorchvisionimporttransforms# # 推理设置# DEVICEcudaiftorch.cuda.is_available()elsecpuMODEL_PATHsaved_models/unet_coastline.pthIMAGE_PATHtest_images/coastline_001.jpgOUTPUT_PATHpredictions/pred_mask.png# 加载模型modelUNet(n_channels3,n_classes1)model.load_state_dict(torch.load(MODEL_PATH,map_locationDEVICE))model.to(DEVICE)model.eval()# 图像预处理input_imageImage.open(IMAGE_PATH).convert(RGB)transformtransforms.Compose([transforms.Resize((256,256)),transforms.ToTensor(),transforms.Normalize(mean[0.485,0.456,0.406],std[0.229,0.224,0.225])])image_tensortransform(input_image).unsqueeze(0).to(DEVICE)# 推理withtorch.no_grad():outputmodel(image_tensor)pred_mask(output.cpu().numpy()[0,0]0.5).astype(np.uint8)*255# 二值化# 保存结果os.makedirs(predictions,exist_okTrue)Image.fromarray(pred_mask,modeL).save(OUTPUT_PATH)# 可视化plt.figure(figsize(12,6))plt.subplot(1,2,1)plt.imshow(input_image)plt.title(原始图像)plt.axis(off)plt.subplot(1,2,2)plt.imshow(pred_mask,cmapgray)plt.title(预测海岸线)plt.axis(off)plt.tight_layout()plt.show()️ 五、视频转图像脚本video_to_frames.py# video_to_frames.pyimportcv2importosdefextract_frames(video_path,output_dir,interval30): 从视频中抽帧 :param video_path: 视频路径 :param output_dir: 输出图像目录 :param interval: 每隔多少帧抽取一帧 capcv2.VideoCapture(video_path)count0saved0os.makedirs(output_dir,exist_okTrue)whileTrue:ret,framecap.read()ifnotret:breakifcount%interval0:cv2.imwrite(os.path.join(output_dir,fframe_{saved:04d}.jpg),frame)saved1count1cap.release()print(f✅ 已从视频中提取{saved}张图像至{output_dir})# 示例调用if__name____main__:extract_frames(videos/drone_coastline.mp4,data/images,interval15) 六、项目结构总结coastline_segmentation/ ├── data/ │ ├── images/ # 原始图像 │ └── masks/ # 分割标签黑白掩膜 ├── models/ │ └── unet_model.py # 含 BN 的 U-Net ├── dataset.py # 数据加载 ├── train.py # 训练主程序 ├── predict.py # 推理与可视化 ├── video_to_frames.py # 视频抽帧 └── saved_models/ # 自动创建存放权重✅ 特性说明功能支持情况批量归一化BN✅ 在每个卷积后添加二值分割✅ 使用 Sigmoid BCELoss跳跃连接✅ 实现精确定位GPU 加速✅ 自动检测 CUDA小样本适配✅ 结构轻量化防止过拟合易于扩展✅ 可替换为 ResUNet、Attention UNet

相关新闻

Redis事务与Lua脚本的原子性对比与实践

Redis事务与Lua脚本的原子性对比与实践

1. Redis事务的原子性真相 第一次接触Redis事务时,我和大多数人一样被"原子性"这个术语迷惑了。官方文档说Redis事务具有原子性,但实际测试后发现:当某个命令执行失败时,其他命令依然会继续执行。这和我们熟悉的数据库事…

2026/10/19 0:04:56 阅读更多 →
构建企业记忆系统:AI原生公司的核心资产与实操指南

构建企业记忆系统:AI原生公司的核心资产与实操指南

1. 项目概述:重新定义企业核心资产 最近和几位创业的朋友聊天,话题总绕不开一个词:“效率”。大家普遍的感觉是,工具越来越智能,协作越来越顺畅,但公司的“智商”似乎并没有同步增长。今天讨论的方案&#…

2026/10/19 0:51:06 阅读更多 →
SpringBoot+Vue3全栈林业推荐系统开发实践

SpringBoot+Vue3全栈林业推荐系统开发实践

1. 项目背景与技术选型解析 林业产品推荐系统作为传统行业数字化转型的典型场景,面临着产品数据庞杂、用户需求多样化的挑战。这个基于Java SpringBootVue3MyBatis的全栈项目,正是为解决这些问题而设计的现代化解决方案。 技术栈选型的深层考量 &#…

2026/10/19 0:52:05 阅读更多 →

最新新闻

数据搜索:跨文件搜索,清单数据一搜即得

数据搜索:跨文件搜索,清单数据一搜即得

干工程的,谁没被找数据卡过脖子。下午要交标,甲方临时要一份历史项目的报价明细;结算对数对不上,得翻当时的清单查原始数据——文件在哪个电脑、哪个文件夹,都得先想半天。端点星工程助手的数据搜索,CtrlF …

2026/10/20 2:03:15 阅读更多 →
MES 生产管理系统如何进行全面的质量管理?

MES 生产管理系统如何进行全面的质量管理?

1. 引言:为什么全面质量管理离不开 MES在制造企业里,质量管理早已不只是质检部门在最后一道工序“挑出不良品”。全面质量管理(TQM)强调的是全员参与、全过程控制、全数据驱动,把质量理念贯穿从来料、加工、装配到出货…

2026/10/20 2:03:15 阅读更多 →
复旦邱锡鹏团队获超 10 亿融资,图像模型 MOSS-Image 恰逢其会?

复旦邱锡鹏团队获超 10 亿融资,图像模型 MOSS-Image 恰逢其会?

复旦邱锡鹏团队获超 10 亿融资,图像模型 MOSS-Image 恰逢其会? 【免费下载链接】MOSS-Image 项目地址: https://ai.gitcode.com/hf_mirrors/Comfy-Org/MOSS-Image 2026 年 10 月,一则融资消息在 AI 圈迅速发酵:由复旦大学…

2026/10/20 2:03:15 阅读更多 →
Air6208三模通信模组:蜂窝/Wi-Fi/蓝牙集成与低功耗实战指南

Air6208三模通信模组:蜂窝/Wi-Fi/蓝牙集成与低功耗实战指南

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

2026/10/20 2:03:15 阅读更多 →
如何用5行代码跑通cait_xxs24_224.fb_dist_in1k:图像分类新手快速上手教程(附完整代码)

如何用5行代码跑通cait_xxs24_224.fb_dist_in1k:图像分类新手快速上手教程(附完整代码)

【免费下载链接】cait_xxs24_224.fb_dist_in1k 项目地址: https://ai.gitcode.com/hf_mirrors/timm/cait_xxs24_224.fb_dist_in1k 点击查看 免费下载 cait_xxs24_224.fb_dist_in1k 是 timm 库中的一个 CaiT(Class-attention Image Transformer&#xff…

2026/10/20 2:03:15 阅读更多 →
木门产品知识全解析:从分类、材质到测量安装避坑指南

木门产品知识全解析:从分类、材质到测量安装避坑指南

简介:这是一份面向木门行业从业者(销售、门店人员、安装技工)的产品知识培训资料,以单份doc文档收录,共1个文件,压缩包约3.28MB。内容从门的文化内涵、历史演变切入,系统梳理门按材质、开启方式…

2026/10/20 2:02:14 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54: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/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →