智慧无人机海洋海岸线语义分割数据集 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/8/11 7:48:44 阅读更多 →
构建企业记忆系统:AI原生公司的核心资产与实操指南

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

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

2026/8/11 7:48:44 阅读更多 →
SpringBoot+Vue3全栈林业推荐系统开发实践

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

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

2026/8/11 7:48:44 阅读更多 →

最新新闻

Rudder:构建人机协作操作系统,实现AI Agent团队化协同

Rudder:构建人机协作操作系统,实现AI Agent团队化协同

1. 项目概述:Rudder 是什么,以及它想解决什么问题 最近在 AI 领域,一个叫 Rudder 的项目开始引起不少开发者和团队的注意。简单来说,Rudder 的愿景是构建一个能让人类与多个 AI Agent(智能体)像真正的团队一…

2026/8/11 8:32:00 阅读更多 →
Python音频识别库acrclient使用指南

Python音频识别库acrclient使用指南

1. 认识acrclient:Python中的音频内容识别利器 acrclient是一个专门用于音频内容识别的Python第三方库,它封装了与ACRCloud(全球领先的音频指纹识别服务)API交互的核心功能。这个包让开发者能够轻松实现音乐识别、广播监测、版权保…

2026/8/11 8:32:00 阅读更多 →
XGBoost核心原理与实战应用全解析

XGBoost核心原理与实战应用全解析

1. XGBoost为何成为机器学习领域的"大杀器"? 在机器学习竞赛平台Kaggle上,有一个算法几乎成了冠军选手的标配武器。从2015年开始,超过一半的冠军解决方案中都使用了这个算法。它不是什么神秘的"黑科技",而是一…

2026/8/11 8:32:00 阅读更多 →
可量化的成果Nordic nRF54L15 SoC

可量化的成果Nordic nRF54L15 SoC

在其 Bluetooth LE PIR 传感器产品线上取得了显著提升,包括:在 100 节点的 Mesh 网络中保持稳定运行触发到点亮的延迟从约 200 ms 降至不足 80 ms,降低幅度达 60%为未来的电池版机型带来约 35% 的平均功耗下降通过标准 Mesh调光与占用模型更快…

2026/8/11 8:32:00 阅读更多 →
Headless浏览器自动化:如何捕获页面早期错误与JS异常

Headless浏览器自动化:如何捕获页面早期错误与JS异常

1. 项目概述:当AI“睁眼瞎”,问题出在哪? 最近在调试一个基于Headless Chrome的自动化爬虫时,遇到了一个让我排查了整整两天的诡异问题。我的脚本逻辑清晰,等待策略完备,但就是抓取不到目标页面上那些一闪而…

2026/8/11 8:32:00 阅读更多 →
C++贪吃蛇实战:从控制台到图形界面的游戏开发入门指南

C++贪吃蛇实战:从控制台到图形界面的游戏开发入门指南

1. 项目概述:为什么选择C小游戏作为入门实践? 很多刚学完C基础语法的新手朋友,都会面临一个共同的困惑:书本上的例题都懂了,但感觉离“做出一个东西”还很遥远。指针、类、继承这些概念,单独看都明白&#…

2026/8/11 8:31:00 阅读更多 →

日新闻

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南

如何用Video2X实现专业级视频画质提升:AI视频增强完整指南 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Trending/vi/v…

2026/8/11 0:00:02 阅读更多 →
前后端分离项目中控制台与接口工具数据差异排查指南

前后端分离项目中控制台与接口工具数据差异排查指南

1. 问题现象解析:控制台与Apifox的数据差异 最近在调试一个前后端分离项目时,遇到了一个典型问题:后端服务在本地开发环境控制台能正常输出查询数据,但通过Apifox测试时却返回空结果。这种"控制台有数据,接口工具…

2026/8/11 0:00:03 阅读更多 →
AI编程实战:从Claude Code踩坑到游戏开发入门

AI编程实战:从Claude Code踩坑到游戏开发入门

1. 从“AI能帮我做游戏”到“AI让我重新学编程”最近身边不少朋友,尤其是一些非技术背景、但对游戏开发有浓厚兴趣的朋友,都在问我同一个问题:“听说现在用Claude Code这种AI编程工具,小白也能做游戏了,是真的吗&#…

2026/8/11 0:00:03 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/11 1:08:05 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/11 1:08:05 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/11 1:08:05 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/10 17:07:33 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/11 1:08:06 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/10 17:07:33 阅读更多 →