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)