Unet模型训练无人机裸土未覆盖分割数据集 裸土图像分割数据集,工地环保识别,裸土覆盖绿网,工地监测图像数据集 往期数据集回顾【本期数据集在文章最下方】1.植物病虫害类数据集玉米叶片病虫害数据集 /玉米虫害数据集 水稻叶片及虫害/大豆/小麦/苹果/柑橘葡萄/南瓜/樱桃/荔枝/农业病虫害类等等等**2.交通类数据集** 极端天气数据集 恶劣天气数据集 雾天道路行驶数据集 黑夜情境下的交通数据集 红绿灯检测数据集 疲劳驾驶检测数据集 交通路锥检测数据集 路面标识交通引导线 车道线检测数据集3.行为类数据集打架数据集 头盔佩戴检测数据集 摔倒检测数据集 工地行为检测数据集 打架吸烟 摔倒 电动车头盔佩戴检测数据集 占道经营数据集 手语手势数据集 面部表情检测数据集 反光衣穿戴检测数据集 行人跌倒检测数据集 等等等4.船舶检测类数据集遥感船舶数据集 可见光船舶检测数据集 红外船舶检测数据集 船舶尾迹检测数据集 无人船水面分割检测数据集 船舶目标检测数据集等5.自然灾害类数据集滑坡数据集 落石数据集 遥感滑坡检测数据集 泥石流检测数据集 滑坡分割数据集6.工业零部件类数据集轴承数据集 工业螺栓螺母 螺丝检测数据集等7.小目标检测数据集天空红外小目标检测数据集 SIMD小目标检测数据集 遥感小目标检测数据集 红外弱小飞机检测数据集8.铁轨铁路类数据集轨道缺陷检测数据集 轨道障碍物检测数据集 轨道安全检测数据集 铁路输电线异物检测数据集9.太阳能光伏缺陷检测数据集光伏可见光数据集 红外光伏缺陷检测数据集 光伏红外数据集 红外可见光配对检测数据集10.电力设备红外检测数据集变电站红外检测数据集 绝缘子红外检测数据集 变压器红外检测数据集 开关柜红外检测数据集 开关设备红外过热检测数据集 光伏缺陷红外检测数据集11.道路裂缝类道路病害类数据集道路病害检测数据集 无人机道路病害检测数据集 路面障碍物检测数据集 道路语义分割检测数据集 RDD道路裂缝识别检测数据集 混凝土缺陷检测数据集 道路桥梁底部缺陷检测数据集12.钢材缺陷检测数据集 焊缝缺陷检测数据集 塑料焊缝缺陷检测数据集 铝片表面缺陷检测数据集13.工地类别检测数据集工地工程车检测数据集 工地工人安全帽检测数据集 工地吸烟摔倒检测数据集 高空作业检测数据集 建筑工地安全背心 反光衣智慧化生产工地检测数据集等14.工地工程车检测数据集 工地挖掘机检测数据集 推土机 自卸车 无人机航拍工程车检测数据集 化学品车检测数据集 工程车辆检测数据集卡车渣土车检测数据集15.盲道检测数据集盲道检测分割数据集 盲道障碍物检测数据集 盲道语义分割检测数据集16.管道下水管道数据集管道缺陷检测数据集 管道分割检测数据集 管道裂缝检测数据集等17.煤矿井下类数据集煤炭传送带异物检测数据集 安全帽检测数据集 矿井安全检测数据集等1111智慧工地落土未覆盖识别数据集裸土图像分割数据集工地环保识别裸土覆盖绿网工地监测图像数据集AI图像10195期。数据集包含96张1920x960分辨率图像标注“baresoil”裸露土壤和“mubu”幕布两类属于计算机视觉领域实例分割数据集适合裸露土壤相关视觉识别研究如土地覆盖监测、环境生态评估等场景为模型训练提供基础数据。以下是智慧工地落土未覆盖识别数据集AI图像10195期的表格化描述项目描述数据集名称智慧工地落土未覆盖识别数据集AI图像10195期任务类型实例分割Instance Segmentation图像总数96 张图像分辨率1920 × 960 像素类别数量2 类类别定义-baresoil裸露土壤未覆盖区域-mubu幕布通常指绿色防尘网等覆盖物标注格式实例级掩码如 COCO JSON 或 PNG 掩码具体未说明但属实例分割任务应用场景- 工地环保合规监测- 裸土覆盖状态自动识别- 土地生态与扬尘污染评估- 智慧工地 AI 监管系统适用研究方向- 计算机视觉中的小样本实例分割- 工业场景下的环境合规检测- 遥感/监控图像中的土地利用分析 注该数据集规模较小96张适用于算法验证、迁移学习、小样本学习或作为更大系统的子模块训练数据。建议结合数据增强或预训练模型提升泛化能力。要使用U-Net 模型训练你提供的智慧工地裸土识别实例分割数据集96张1920×960两类baresoil和mubu需将其视为语义分割任务若每个类别仅需像素级分类无需区分同一类别的不同实例或升级为Mask R-CNN / U-Net后处理以支持实例分割。鉴于数据集规模小且标注为两类区域推荐先按语义分割处理U-Net 完全适用。以下是完整的U-Net 训练方案PyTorch 实现 一、数据准备与格式要求✅ 假设你的数据结构如下dataset/ ├── images/# 原始图像 (96张, .jpg 或 .png)│ ├── img_001.jpg │ └──... └── masks/# 对应的语义分割掩码 (同名, 单通道 PNG)├── img_001.png └──... 掩码标注规范必须满足掩码为单通道灰度图8-bit像素值定义0→ 背景非裸土、非幕布1→baresoil裸露土壤2→mubu幕布/绿网图像与掩码文件名一致如img_001.jpg↔img_001.png 若原始标注是 COCO JSON 或多边形需先转换为上述 PNG 掩码格式可用 LabelMe 或自定义脚本。 二、完整训练代码PyTorch U-Net1. 安装依赖pipinstalltorch torchvision opencv-python numpy matplotlib albumentations scikit-learn2. U-Net 模型定义 (unet.py)# unet.pyimporttorchimporttorch.nnasnnclassDoubleConv(nn.Module):def__init__(self,in_ch,out_ch):super().__init__()self.convnn.Sequential(nn.Conv2d(in_ch,out_ch,3,padding1),nn.BatchNorm2d(out_ch),nn.ReLU(inplaceTrue),nn.Conv2d(out_ch,out_ch,3,padding1),nn.BatchNorm2d(out_ch),nn.ReLU(inplaceTrue))defforward(self,x):returnself.conv(x)classUNet(nn.Module):def__init__(self,n_channels3,n_classes3):# 3类背景 baresoil mubusuper(UNet,self).__init__()self.incDoubleConv(n_channels,64)self.down1nn.Sequential(nn.MaxPool2d(2),DoubleConv(64,128))self.down2nn.Sequential(nn.MaxPool2d(2),DoubleConv(128,256))self.down3nn.Sequential(nn.MaxPool2d(2),DoubleConv(256,512))self.down4nn.Sequential(nn.MaxPool2d(2),DoubleConv(512,1024))self.up1nn.ConvTranspose2d(1024,512,2,stride2)self.conv1DoubleConv(1024,512)self.up2nn.ConvTranspose2d(512,256,2,stride2)self.conv2DoubleConv(512,256)self.up3nn.ConvTranspose2d(256,128,2,stride2)self.conv3DoubleConv(256,128)self.up4nn.ConvTranspose2d(128,64,2,stride2)self.conv4DoubleConv(128,64)self.outcnn.Conv2d(64,n_classes,1)defforward(self,x):x1self.inc(x)x2self.down1(x1)x3self.down2(x2)x4self.down3(x3)x5self.down4(x4)xself.up1(x5)xtorch.cat([x,x4],dim1)xself.conv1(x)xself.up2(x)xtorch.cat([x,x3],dim1)xself.conv2(x)xself.up3(x)xtorch.cat([x,x2],dim1)xself.conv3(x)xself.up4(x)xtorch.cat([x,x1],dim1)xself.conv4(x)logitsself.outc(x)returnlogits3. 数据加载与增强 (dataset.py)# dataset.pyimportosimportcv2importnumpyasnpfromtorch.utils.dataimportDatasetfromalbumentationsimport(Compose,HorizontalFlip,VerticalFlip,Rotate,RandomBrightnessContrast,Normalize)fromalbumentations.pytorchimportToTensorV2classBareSoilDataset(Dataset):def__init__(self,image_dir,mask_dir,transformNone):self.image_dirimage_dir self.mask_dirmask_dir self.names[f.split(.)[0]forfinos.listdir(image_dir)iff.endswith(.jpg)orf.endswith(.png)]self.transformtransformdef__len__(self):returnlen(self.names)def__getitem__(self,idx):nameself.names[idx]img_pathos.path.join(self.image_dir,name.jpg)mask_pathos.path.join(self.mask_dir,name.png)imagecv2.imread(img_path)imagecv2.cvtColor(image,cv2.COLOR_BGR2RGB)maskcv2.imread(mask_path,cv2.IMREAD_GRAYSCALE)ifself.transform:augmentedself.transform(imageimage,maskmask)imageaugmented[image]maskaugmented[mask]returnimage,mask.long()# mask 必须为 long 类型用于 CrossEntropyLoss4. 主训练脚本 (train.py)# train.pyimporttorchimporttorch.nnasnnfromtorch.utils.dataimportDataLoaderfromsklearn.model_selectionimporttrain_test_splitfromunetimportUNetfromdatasetimportBareSoilDatasetfromalbumentationsimportCompose,HorizontalFlip,VerticalFlip,Normalize,ToTensorV2defget_transforms(is_trainTrue):ifis_train:returnCompose([HorizontalFlip(p0.5),VerticalFlip(p0.5),# Rotate(limit10, p0.3),Normalize(mean[0.485,0.456,0.406],std[0.229,0.224,0.225]),ToTensorV2()])else:returnCompose([Normalize(mean[0.485,0.456,0.406],std[0.229,0.224,0.225]),ToTensorV2()])defmain():devicetorch.device(cudaiftorch.cuda.is_available()elsecpu)print(f 使用设备:{device})# 划分训练/验证集80/20all_names[f.split(.)[0]forfinos.listdir(dataset/images)]train_names,val_namestrain_test_split(all_names,test_size0.2,random_state42)# 保存划分可选withopen(train.txt,w)asf:f.write(\n.join(train_names))withopen(val.txt,w)asf:f.write(\n.join(val_names))# 创建数据集train_datasetBareSoilDataset(dataset/images,dataset/masks,transformget_transforms(True))val_datasetBareSoilDataset(dataset/images,dataset/masks,transformget_transforms(False))train_loaderDataLoader(train_dataset,batch_size4,shuffleTrue,num_workers4)val_loaderDataLoader(val_dataset,batch_size4,shuffleFalse,num_workers4)# 模型、损失、优化器modelUNet(n_channels3,n_classes3).to(device)criterionnn.CrossEntropyLoss(ignore_index255)# 可忽略无效标签optimizertorch.optim.Adam(model.parameters(),lr1e-4)# 训练循环best_val_lossfloat(inf)forepochinrange(50):model.train()train_loss0.0forimages,masksintrain_loader:images,masksimages.to(device),masks.to(device)outputsmodel(images)losscriterion(outputs,masks)optimizer.zero_grad()loss.backward()optimizer.step()train_lossloss.item()# 验证model.eval()val_loss0.0withtorch.no_grad():forimages,masksinval_loader:images,masksimages.to(device),masks.to(device)outputsmodel(images)losscriterion(outputs,masks)val_lossloss.item()avg_train_losstrain_loss/len(train_loader)avg_val_lossval_loss/len(val_loader)print(fEpoch{epoch1}, Train Loss:{avg_train_loss:.4f}, Val Loss:{avg_val_loss:.4f})# 保存最佳模型ifavg_val_lossbest_val_loss:best_val_lossavg_val_loss torch.save(model.state_dict(),best_unet_baresoil.pth)print(✅ 训练完成模型已保存为 best_unet_baresoil.pth)if__name____main__:importos main()⚙️ 三、关键配置说明项目设置输入尺寸原图 1920×960U-Net 支持任意尺寸但显存有限batch_size4类别数n_classes30背景, 1baresoil, 2mubuBatch Size41920×960 图像较大建议 ≤4Epochs50小数据集易过拟合可配合早停数据增强水平/垂直翻转工地场景对称性合理损失函数CrossEntropyLoss标准语义分割损失 四、推理示例预测掩码# predict.pyimporttorchimportcv2importnumpyasnpfromunetimportUNet modelUNet(n_classes3)model.load_state_dict(torch.load(best_unet_baresoil.pth))model.eval()imagecv2.imread(test.jpg)imagecv2.cvtColor(image,cv2.COLOR_BGR2RGB)imagecv2.resize(image,(960,480))# 可选缩放加速tensortorch.tensor(image).permute(2,0,1).unsqueeze(0).float()/255.0tensor(tensor-torch.tensor([0.485,0.456,0.406]).view(3,1,1))/torch.tensor([0.229,0.224,0.225]).view(3,1,1)withtorch.no_grad():outputmodel(tensor)predtorch.argmax(output,dim1).squeeze().numpy()# pred 是 480x960 的整数矩阵0/1/2 表示类别cv2.imwrite(prediction.png,pred.astype(np.uint8)*100)# 可视化