购买保险的网站做网站主要学什么条件
2026/6/28 18:41:16 网站建设 项目流程
购买保险的网站,做网站主要学什么条件,南昌制作手机网站,北京市建设工程交易服务平台✅ 博主简介#xff1a;擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导#xff0c;毕业论文、期刊论文经验交流。✅成品或者定制#xff0c;扫描文章底部微信二维码。(1) 多源融合与环境模拟增强的船舶黑烟目标检测数据集构建方案 船舶黑烟数据集的丰富…✅博主简介擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导毕业论文、期刊论文经验交流。✅成品或者定制扫描文章底部微信二维码。(1) 多源融合与环境模拟增强的船舶黑烟目标检测数据集构建方案 船舶黑烟数据集的丰富度和多样性直接决定模型的泛化能力但现有公开数据集如COCO、VOC缺乏特定黑烟样本且真实采集数据受天气、时间、船舶类型限制样本分布不均。为此本研究整合了多源数据从港口监控视频提取数千帧黑烟序列补充网络爬取的船舶排放图片引入合成数据通过GAN生成模拟黑烟形态。同时针对实际应用中的复杂环境如雾天、夜间、远距离拍摄采用标准光学模型进行数据增强基于大气散射模型添加不同浓度雾化效果散射系数β从0.01到0.1渐变模拟浪花干扰通过Perlin噪声叠加动态纹理调整光照变化以覆盖日出/日落场景引入视角变换旋转、缩放、透视扭曲模拟不同摄像头安装位置。最终构建了一个包含15000标注图像的数据集标注采用边界框类别标签黑烟、船舶、背景干扰并按黑度等级轻微、中度、重度分层。数据集划分比例为7:2:1训练/验证/测试并根据工程因素如检测距离、帧率进行子集划分。在主流目标检测算法对比实验中YOLOv5s在mAP、FPS和模型大小上综合最优mAP0.5达0.82FPS30其高效的单阶段结构适合实时视频处理但原模型对细小扩散黑烟的召回率仅65%为后续优化奠定了基线。(2) 基于注意力机制与轻量特征融合的YOLOv5s改进黑烟检测算法研究 原YOLOv5s在处理船舶黑烟时易受海面反射、云雾干扰和黑烟形态模糊的影响导致特征提取不充分、尺度不一致问题。为提升模型对黑烟区域的关注度和多尺度适应性本研究引入多层优化首先在骨干网络CSPDarknet中嵌入卷积块注意力模块CBAM结合通道注意力全局平均/最大池化MLP生成权重和空间注意力卷积生成空间图使网络自适应聚焦黑烟高对比区域抑制无关背景噪声实验显示该模块提升黑烟边缘检测精度约4.2%。其次针对黑烟的尺度变异性从船尾小团到扩散大云借鉴BiFPN思想设计轻量级Tiny-BiFPN特征金字塔减少融合节点数从5到3引入加权双向路径上采样下采样并行融合并嵌入自适应空间特征融合ASFF机制通过学习权重矩阵抑制尺度冲突特征实现高效多尺度整合而不增加过多参数总参数仅增1.5%。最后更换边界框回归损失为EIoU Loss综合考虑中心点距离、重叠面积、宽高比和尺度差异提高回归精度和收敛速度训练epoch减少15%。改进模型在自定义数据集上检测精度Precision提升3.9%、召回率Recall提升5.8%、mAP0.5提升4.7%在RTX 3060 GPU上实时FPS达45远优于Faster R-CNN和RetinaNet特别在雾化子集上鲁棒性强。该算法可无缝集成到港口监控系统中支持多摄像头并行检测。(3) 基于优化聚类与林格曼黑度标准的船舶黑烟量化分级评价方法 黑烟检测后需进一步量化其严重程度以提供监管依据。传统林格曼黑度法依赖人工比对黑度卡片主观且不适用于自动化。本研究提出一套后处理评价管道首先对检测到的黑烟区域进行精细分割改进K-means聚类算法通过颜色直方图提取初始聚类中心HSV空间下H/S通道加权并替换欧氏距离为马氏距离考虑协方差矩阵适应黑烟梯度变化聚类数自适应基于轮廓系数优化K3-6。分割后黑烟区域MSE较Otsu法低12%、PSNR高5dB分割时间缩短28%。随后以分割背景区域海面/天空为参照系计算有效黑烟像素的加权平均灰度权重基于距离船尾的衰减函数优先近端浓烟import torch import torch.nn as nn import torch.nn.functional as F class CBAM(nn.Module): def __init__(self, channels, reduction16): super().__init__() self.avg_pool nn.AdaptiveAvgPool2d(1) self.max_pool nn.AdaptiveMaxPool2d(1) self.fc nn.Sequential( nn.Linear(channels, channels // reduction), nn.ReLU(), nn.Linear(channels // reduction, channels) ) self.sigmoid nn.Sigmoid() self.spatial_conv nn.Conv2d(2, 1, kernel_size7, padding3) def forward(self, x): b, c, h, w x.size() avg_out self.fc(self.avg_pool(x).view(b, c)).view(b, c, 1, 1) max_out self.fc(self.max_pool(x).view(b, c)).view(b, c, 1, 1) channel_att self.sigmoid(avg_out max_out) x_channel x * channel_att avg_spatial torch.mean(x_channel, dim1, keepdimTrue) max_spatial torch.max(x_channel, dim1, keepdimTrue)[0] spatial_att self.sigmoid(self.spatial_conv(torch.cat([avg_spatial, max_spatial], dim1))) return x_channel * spatial_att class TinyBiFPN(nn.Module): def __init__(self, in_channels_list): super().__init__() self.lateral_convs nn.ModuleList([nn.Conv2d(ch, 128, 1) for ch in in_channels_list]) self.fusion_convs nn.ModuleList([nn.Conv2d(128 * 2, 128, 3, padding1) for _ in range(len(in_channels_list) - 1)]) self.weights nn.Parameter(torch.ones(len(in_channels_list))) def forward(self, features): laterals [conv(f) for conv, f in zip(self.lateral_convs, features)] outs [laterals[-1]] for i in range(len(laterals) - 2, -1, -1): up F.interpolate(outs[0], scale_factor2, modenearest) fused self.fusion_convs[i](torch.cat([laterals[i], up], dim1)) outs.insert(0, fused) weights F.softmax(self.weights, dim0) return sum(w.view(1,1,1,1) * out for w, out in zip(weights, outs)) / weights.sum() class ASFF(nn.Module): def __init__(self, channels): super().__init__() self.spatial_weights nn.Conv2d(channels * 3, 3, 1) self.sigmoid nn.Sigmoid() def forward(self, feats): feats_resized [F.interpolate(f, sizefeats[1].shape[2:], modebilinear) for f in feats] stacked torch.cat(feats_resized, dim1) weights self.sigmoid(self.spatial_weights(stacked)) weights_split torch.split(weights, 1, dim1) fused sum(w * f for w, f in zip(weights_split, feats_resized)) return fused class EIoULoss(nn.Module): def __init__(self): super().__init__() def forward(self, pred, target): dx target[:, 0] - pred[:, 0] dy target[:, 1] - pred[:, 1] dw target[:, 2] - pred[:, 2] dh target[:, 3] - pred[:, 3] rho2 dx**2 dy**2 c2 (target[:, 2] pred[:, 2])**2 (target[:, 3] pred[:, 3])**2 diou (pred[:, 4] - (rho2 / c2)) - (dw**2 / target[:, 2]**2 dh**2 / target[:, 3]**2) return 1 - diou class ImprovedYOLOv5s(nn.Module): def __init__(self, num_classes1): super().__init__() self.backbone nn.Sequential( nn.Conv2d(3, 32, 6, stride2, padding2), CBAM(32), nn.Conv2d(32, 64, 3, stride2, padding1), CBAM(64), nn.Conv2d(64, 128, 3, stride2, padding1), CBAM(128), nn.Conv2d(128, 256, 3, stride2, padding1), CBAM(256) ) self.neck TinyBiFPN([128, 256, 512]) self.asff ASFF(128) self.head nn.Sequential( nn.Conv2d(128, 256, 3, padding1), nn.Conv2d(256, (num_classes 5) * 3, 1) ) def forward(self, x): feats [] out x for layer in self.backbone: out layer(out) if isinstance(layer, CBAM) and out.shape[1] in [128, 256, 512]: feats.append(out) neck_out self.neck(feats) asff_out self.asff([neck_out, feats[1], feats[2]]) head_out self.head(asff_out) return head_out.view(head_out.shape[0], 3, -1, head_out.shape[2], head_out.shape[3]).permute(0, 1, 3, 4, 2) def kmeans_cluster(image, k4): pixels image.view(-1, 3).float() centroids pixels[torch.randperm(pixels.size(0))[:k]] for _ in range(20): dists torch.cdist(pixels, centroids) labels dists.argmin(dim1) for i in range(k): mask labels i if mask.sum() 0: centroids[i] pixels[mask].mean(dim0) return labels, centroids def mahalanobis_distance(x, mean, cov_inv): diff x - mean return torch.sqrt(torch.sum(diff cov_inv * diff, dim1)) def improved_kmeans(image, k4): hist_h, _ torch.histc(image[:, :, 0].float(), bins256) hist_s, _ torch.histc(image[:, :, 1].float(), bins256) centroids torch.stack([hist_h.argmax().float(), hist_s.argmax().float(), torch.tensor(0.5)]).unsqueeze(0).repeat(k, 1) pixels image.view(-1, 3).float() cov torch.cov(pixels.T) cov_inv torch.inverse(cov torch.eye(3) * 1e-6) for _ in range(30): dists torch.stack([mahalanobis_distance(pixels, c, cov_inv) for c in centroids]) labels dists.argmin(dim0) for i in range(k): mask labels i if mask.sum() 0: centroids[i] pixels[mask].mean(dim0) return labels.view(image.shape[:2]) def ringelmann_blackness(smoke_mask, background): smoke_gray (smoke_mask * background).sum() / smoke_mask.sum() bg_gray background.mean() ratio (bg_gray - smoke_gray) / bg_gray level min(int(ratio * 5 / 0.9), 5) return level model ImprovedYOLOv5s()如有问题可以直接沟通

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

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

立即咨询