
CLPSTNet: A Progressive Multi-Scale Convolutional Steganography Model Integrating Curriculum Learning
Fengchun Liu; Tong Zhang; Chunying Zhang
Este repositório contém a implementação oficial do artigo "CLPSTNet: Um modelo progressivo de esteganografia convolucional multi-escala que integra aprendizado curricular".

O CLPSTNet é um modelo de rede progressivo de esteganografia convolucional multi-escala que integra aprendizado curricular. A rede consiste em múltiplos módulos convolucionais multi-escala progressivos que integram estruturas Inception e convoluções dilatadas. O módulo contém múltiplos caminhos ramificados, começando com um kernel convolucional e uma taxa de dilatação menores, extraindo as informações de características básicas e locais do mapa de características, e expandindo gradualmente para a convolução com um kernel convolucional e uma taxa de dilatação maiores, para perceber as informações de características de um campo receptivo maior, de modo a realizar a extração de características multi-escala do nível raso ao profundo, e do fino ao grosseiro, permitindo que as características rasas das informações secretas sejam refinadas em diferentes estágios de fusão.
Os resultados experimentais mostram que o CLPSTNet proposto não apenas possui altas métricas de PSNR e SSIM e alta acurácia de decodificação em três grandes conjuntos de dados públicos, ALASKA2, VOC2012 e ImageNet, mas também as imagens esteganográficas geradas pelo CLPSTNet apresentam baixas pontuações de estegananálise.
Nosso ambiente experimental é o seguinte:
Execute o seguinte comando para instalar os pacotes de dependência:
pip install -r requirement.txt
O modelo é treinado e avaliado em três conjuntos de dados públicos:VOC2012;ImageNet;ALASKA2 Conjunto de dados padrão usado no código. A estrutura de diretórios deve ser:
../VOC2012/
├── train/
├── val/
└── test/
O CLPSTNet consiste em três componentes principais:
O núcleo do CLPSTNet é o Bloco Convolucional Multi-Escala Progressivo (PMCB), que é implementado no arquivo clpstnet.py.
A rede codificadora ( Encoder_Network em clpstnet.py ) é responsável por ocultar informações secretas dentro da imagem de cobertura. Ela usa uma série de Blocos Convolucionais Multi-Escala Progressivos para incorporar gradualmente os dados secretos, mantendo a qualidade visual da imagem de cobertura.
A rede decodificadora ( decode_Network em decoder.py ) extrai as informações ocultas da imagem esteganográfica. Ela também usa uma arquitetura multi-escala com vários ramos de convolução para recuperar efetivamente os dados secretos incorporados.
A rede crítica ( XuNet em critic.py ) é projetada para distinguir entre imagens de cobertura e imagens esteganográficas. Ela atua como um adversário durante o treinamento, incentivando o codificador a gerar imagens esteganográficas mais imperceptíveis.
Para treinar o modelo CLPSTNet, execute o script main.py:
python main.py
O processo de treinamento inclui as seguintes etapas:
Carregamento de Dados : As imagens são carregadas do conjunto de dados especificado.
Geração do Segredo : Dados binários aleatórios são gerados como informação secreta a ser ocultada(D).
Passagem para Frente : A imagem de cobertura e os dados secretos são passados pelo codificador para gerar uma imagem esteganográfica, que é então passada pelo decodificador para recuperar o segredo.
Cálculo de Perda : Múltiplas funções de perda são calculadas:
Otimização : Os parâmetros do modelo são atualizados usando o otimizador Adam.
Para avaliar o modelo treinado, use o script val.py:
python val.py
Este script carrega um modelo treinado e o avalia no conjunto de dados de validação, calculando:
Para gerar imagens esteganográficas de exemplo a partir do modelo treinado, use o script sample.py:
python sample.py

Se você achar nosso trabalho útil em sua pesquisa, por favor considere citar:
@article{liu2025clpstnet,
title={CLPSTNet: A Progressive Multi-Scale Convolutional Steganography Model Integrating Curriculum Learning},
author={Liu, Fengchun and Zhang, Tong and Zhang, Chunying},
journal={arXiv preprint arXiv:2504.16364},
year={2025}
}
Se você encontrar qualquer problema ao usar este repositório, sinta-se à vontade para deixar mensagens nas issues ou entrar em contato conosco em: