有没有直接做网站的软件wordpress 默认 私密
2026/4/18 5:58:56 网站建设 项目流程
有没有直接做网站的软件,wordpress 默认 私密,wordpress+引用+样式,做个网站#x1f3d7;️ 数据集类别#xff08;共 10 类#xff09;类别英文名中文名称说明Debris建筑垃圾 / 碎屑建筑物倒塌后的瓦砾、混凝土块、钢筋等残骸Water水体河流、湖泊、积水区域等Building_No_Damage无损建筑完整未受损的建筑物Building_Minor_Damage轻微损坏建筑局部墙体…️ 数据集类别共 10 类类别英文名中文名称说明Debris建筑垃圾 / 碎屑建筑物倒塌后的瓦砾、混凝土块、钢筋等残骸Water水体河流、湖泊、积水区域等Building_No_Damage无损建筑完整未受损的建筑物Building_Minor_Damage轻微损坏建筑局部墙体开裂、屋顶破损但主体结构完好Building_Major_Damage严重损坏建筑大面积坍塌、结构倾斜但尚未完全倒塌Building_Total_Destruction全部损毁建筑完全倒塌仅剩废墟Vehicle车辆各类汽车、卡车、工程车等Road道路普通道路、公路、桥梁等交通设施Tree树木绿化植被、林地、树木覆盖区Pool游泳池住宅区或公共区域的泳池可能为灾害评估中的特殊目标Sand沙地沙滩、沙土区域常见于沿海或沙漠地区 应用场景该数据集主要用于灾后评估地震、台风、洪水等自然灾害后的建筑物损毁程度分析城市更新监测识别拆迁现场的建筑垃圾分布遥感影像分割基于无人机或卫星图像进行语义分割如 U-Net、DeepLabV3AI 辅助救援决策快速定位可通行道路、被困区域和危险建筑 注Pool和Sand可能是为特定地理环境如沿海城市设计的补充类别有助于提升模型在复杂背景下的泛化能力。✅ 总结这是一个典型的高分辨率航拍/遥感图像语义分割数据集专注于灾害响应与城市基础设施状态评估。其核心任务是识别不同类型的建筑损伤和环境要素适用于深度学习模型训练如 Segmentation, Detection, Classification尤其适合用于智慧城市、应急管理系统、国土测绘等领域。基于无人机建筑垃圾分割检测数据集的完整实现方案包含✅UNet 语义分割训练代码PyTorch✅数据预处理脚本JSON → Mask✅Web 系统搭建Django WebGIS✅模型推理与可视化✅系统部署建议 一、数据集概览项目说明数据集名称无人机建筑垃圾分割检测数据集采集设备DJI Mavic 2图像数量4,494 张分辨率4000×3000采集高度60m ~ 120m视角角度垂直俯视90°标注格式JSONPolygon、MaskPNG总大小22.1 GB任务类型语义分割Semantic Segmentation核心类别Debris建筑垃圾其他类别Water, Building_No_Damage, Minor/Major/Total Damage, Vehicle, Road, Tree, Pool, Sand 虽然你提到“类别建筑垃圾”但根据 Recall-Confidence 曲线图实际是多类语义分割数据集其中Debris是关键目标。️ 二、博主建议目录结构debris_segmentation_system/ ├── data/ │ ├── images/ # 原始图像 │ ├── masks/ # 分割掩码PNG │ └── annotations/ # JSON 标注可选 ├── models/ │ └── unet_debris.pth # 训练好的 UNet 模型 ├── train.py # UNet 训练脚本 ├── infer.py # 推理脚本 ├── web_app/ │ ├── views.py │ ├── models.py │ └── templates/ │ └── index.html └── requirements.txt 三、requirements.txttorch2.0.1 torchvision0.15.2 opencv-python4.8.0 numpy1.24.3 Pillow9.5.0 matplotlib3.6.3 django4.2.7 pyecharts2.0.0 shapely2.0.0安装pipinstall-r requirements.txt 四、JSON → PNG 掩码转换utils/json_to_mask.py# utils/json_to_mask.pyimportjsonimportcv2importnumpyasnpfrompathlibimportPathdefjson_to_mask(json_path,output_dir,class_nameDebris):withopen(json_path,r)asf:datajson.load(f)ifannotationsnotindata:returnNoneh,wdata[imageHeight],data[imageWidth]masknp.zeros((h,w),dtypenp.uint8)forannindata[annotations]:ifann[label]class_nameandpolygoninann:pointsnp.array(ann[polygon],dtypenp.int32).reshape(-1,2)cv2.fillPoly(mask,[points],color255)output_pathPath(output_dir)/f{Path(json_path).stem}.pngcv2.imwrite(str(output_path),mask)returnoutput_pathif__name____main__:json_dirdata/annotationsmask_dirdata/masksPath(mask_dir).mkdir(parentsTrue,exist_okTrue)forjson_fileinPath(json_dir).glob(*.json):print(fProcessing{json_file.name})json_to_mask(json_file,mask_dir)print(✅ 所有 JSON 已转为掩码) 假设 JSON 中的label字段为Debris且包含polygon数组。 五、UNet 模型定义models/unet.py# models/unet.pyimporttorchimporttorch.nnasnnimporttorch.nn.functionalasFclassDoubleConv(nn.Module):def__init__(self,in_channels,out_channels):super().__init__()self.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.conv(x)classDownSample(nn.Module):def__init__(self,in_channels,out_channels):super().__init__()self.maxpool_convnn.Sequential(nn.MaxPool2d(2),DoubleConv(in_channels,out_channels))defforward(self,x):returnself.maxpool_conv(x)classUpSample(nn.Module):def__init__(self,in_channels,out_channels,bilinearTrue):super().__init__()self.upnn.Upsample(scale_factor2,modebilinear,align_cornersTrue)ifbilinearelsenn.ConvTranspose2d(in_channels//2,in_channels//2,kernel_size2,stride2)self.convDoubleConv(in_channels,out_channels)defforward(self,x1,x2):x1self.up(x1)diff_yx2.size()[2]-x1.size()[2]diff_xx2.size()[3]-x1.size()[3]x1F.pad(x1,[diff_x//2,diff_x-diff_x//2,diff_y//2,diff_y-diff_y//2])xtorch.cat([x2,x1],dim1)returnself.conv(x)classUNet(nn.Module):def__init__(self,n_channels3,n_classes2):super().__init__()self.incDoubleConv(n_channels,64)self.down1DownSample(64,128)self.down2DownSample(128,256)self.down3DownSample(256,512)self.down4DownSample(512,512)self.up1UpSample(1024,256)self.up2UpSample(512,128)self.up3UpSample(256,64)self.up4UpSample(128,64)self.outcnn.Conv2d(64,n_classes,kernel_size1)defforward(self,x):x1self.inc(x)x2self.down1(x1)x3self.down2(x2)x4self.down3(x3)x5self.down4(x4)xself.up1(x5,x4)xself.up2(x,x3)xself.up3(x,x2)xself.up4(x,x1)logitsself.outc(x)returntorch.sigmoid(logits) 六、train.py—— UNet 训练脚本# train.pyimporttorchimporttorch.nnasnnimporttorch.optimasoptimfromtorch.utils.dataimportDataLoader,DatasetfromPILimportImageimportosimportnumpyasnpclassDebrisDataset(Dataset):def__init__(self,image_dir,mask_dir,transformNone):self.image_dirimage_dir self.mask_dirmask_dir self.transformtransform self.imagessorted(os.listdir(image_dir))self.maskssorted(os.listdir(mask_dir))def__len__(self):returnlen(self.images)def__getitem__(self,idx):img_pathos.path.join(self.image_dir,self.images[idx])mask_pathos.path.join(self.mask_dir,self.masks[idx])imageImage.open(img_path).convert(RGB)maskImage.open(mask_path).convert(L)ifself.transform:imageself.transform(image)maskself.transform(mask)masktorch.where(mask0,torch.tensor(1),torch.tensor(0)).float()returnimage,mask# 数据增强fromtorchvisionimporttransforms transformtransforms.Compose([transforms.Resize((512,512)),transforms.ToTensor(),transforms.Normalize(mean[0.485,0.456,0.406],std[0.229,0.224,0.225])])# 初始化devicetorch.device(cudaiftorch.cuda.is_available()elsecpu)modelUNet(n_channels3,n_classes1).to(device)criterionnn.BCELoss()optimizeroptim.Adam(model.parameters(),lr0.001)datasetDebrisDataset(data/images,data/masks,transformtransform)dataloaderDataLoader(dataset,batch_size4,shuffleTrue)epochs10forepochinrange(epochs):model.train()running_loss0.0forimages,masksindataloader:images,masksimages.to(device),masks.to(device)optimizer.zero_grad()outputsmodel(images)losscriterion(outputs,masks)loss.backward()optimizer.step()running_lossloss.item()print(fEpoch [{epoch1}/{epochs}], Loss:{running_loss/len(dataloader):.4f})# 保存模型torch.save(model.state_dict(),models/unet_debris.pth)print(✅ 模型已保存) 七、infer.py—— 推理脚本# infer.pyimporttorchimportcv2importnumpyasnpfromPILimportImagefrommodels.unetimportUNet modelUNet(n_channels3,n_classes1)model.load_state_dict(torch.load(models/unet_debris.pth))model.eval()defpredict_image(image_path):imageImage.open(image_path).convert(RGB)transformtransforms.Compose([transforms.Resize((512,512)),transforms.ToTensor(),transforms.Normalize(mean[0.485,0.456,0.406],std[0.229,0.224,0.225])])input_tensortransform(image).unsqueeze(0).to(cudaiftorch.cuda.is_available()elsecpu)withtorch.no_grad():outputmodel(input_tensor)pred_maskoutput.squeeze().cpu().numpy()pred_mask(pred_mask0.5).astype(np.uint8)*255returnpred_mask# 使用示例maskpredict_image(data/images/test.jpg)cv2.imwrite(output_mask.png,mask) 八、Django Web 系统web_app/views.pyfromdjango.shortcutsimportrenderfromdjango.httpimportJsonResponsefromdjango.core.files.storageimportFileSystemStoragefrom.modelsimportDetectionRecordimportcv2importosdefindex(request):returnrender(request,index.html)defdetect_debris(request):ifrequest.methodPOST:imagerequest.FILES[image]fsFileSystemStorage()filenamefs.save(image.name,image)input_pathfs.path(filename)output_maskstatic/results/filename.replace(.jpg,_mask.png)# 推理maskpredict_image(input_path)cv2.imwrite(output_mask,mask)# 保存记录recordDetectionRecord.objects.create(imageimage,result_maskoutput_mask)returnJsonResponse({result_url:fs.url(output_mask),area:int(mask.sum()/255)})✅ 总结应用场景应用领域说明环保执法自动识别非法倾倒建筑垃圾行为辅助城管取证变化检测对比不同时期航拍图发现新增垃圾堆智慧城市集成于城市大脑实现低空智能巡查灾后评估快速定位废墟区域支持救援决策以上文字及代码仅供参考学习。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询