3.25日报

在去烟模块加了创新点,自适应去烟网络

class AdaptiveDehazeNet(nn.Module):
    """创新点2:自适应去烟网络"""
    def __init__(self):
        super().__init__()
        # 编码器
        self.encoder = nn.Sequential(
            nn.Conv2d(3, 32, kernel_size=3, padding=1),
            nn.ReLU(),
            nn.Conv2d(32, 64, kernel_size=3, padding=1),
            nn.ReLU(),
            nn.MaxPool2d(2)
        )
        
        # 带注意力机制的解码器
        self.decoder = nn.Sequential(
            nn.ConvTranspose2d(64, 32, kernel_size=2, stride=2),
            nn.ReLU(),
            nn.Conv2d(32, 16, kernel_size=3, padding=1),
            nn.ReLU(),
            nn.Conv2d(16, 3, kernel_size=3, padding=1),
            nn.Sigmoid()
        )
        
        self.smoke_estimator = SmokeDensityEstimator()
        
    def forward(self, x):
        smoke_density = self.smoke_estimator(x)
        x = self.encoder(x)
        
        # 创新点:烟雾密度引导的特征增强
        x = x * (1 + smoke_density.mean())  # 根据烟雾浓度动态调整
        
        x = self.decoder(x)
        return x, smoke_density

def preprocess_image(image_path):
    """图像预处理"""
    img = cv2.imread(image_path)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    img = img.astype(np.float32) / 255.0
    img = torch.from_numpy(img).permute(2, 0, 1).unsqueeze(0)
    return img

# 使用示例
model = AdaptiveDehazeNet()
input_img = preprocess_image("smoky_scene.jpg")
output_img, density_map = model(input_img)

 

posted @ 2025-04-09 11:04  Code13  阅读(7)  评论(0)    收藏  举报