Esta é uma implementação do Tensorflow de Learning to See in the Dark no CVPR 2018, por Chen Chen, Qifeng Chen, Jia Xu e Vladlen Koltun.
Site do projeto
Papel
Este código inclui o modelo padrão para treinamento e teste no conjunto de dados See-in-the-Dark (SID).
https://youtu.be/qWKUFK7MWvg
Bibliotecas python necessárias (versão 2.7): Tensorflow (>=1.1) + Scipy + Numpy + Rawpy.
Testado em Ubuntu + CPU Intel i7 + Nvidia Titan X (Pascal) com Cuda (>=8.0) e CuDNN (>=5.0). O modo CPU também deve funcionar com pequenas alterações, mas não testado.
Atualização em agosto de 2018: Encontramos algum desalinhamento com a verdade básica para as imagens 10034, 10045, 10172. Remova essas imagens para obter resultados quantitativos, mas elas ainda podem ser usadas para avaliações qualitativas.
Você pode baixá-lo diretamente do Google Drive para os conjuntos Sony (25 GB) e Fuji (52 GB).
Há limite de download do Google Drive em um período fixo de tempo. Se você não conseguir fazer o download por causa disso, tente estes links: Sony (25 GB) e Fuji (52 GB).
Novo: agora fornecemos partes de arquivo no Baidu Drive. Depois de baixar todas as partes, você pode combiná-las executando: "cat SonyPart* > Sony.zip" e "cat FujiPart* > Fuji.zip".
As listas de arquivos são fornecidas. Em cada linha, há um caminho de imagem com exposição curta, o caminho de imagem com exposição longa correspondente, ISO da câmera e número F. Observe que várias imagens com exposição curta podem corresponder à mesma imagem com exposição longa.
O nome do arquivo contém as informações da imagem. Por exemplo, em "10019_00_0.033s.RAF", o primeiro dígito "1" significa que é do conjunto de teste ("0" para conjunto de treinamento e "2" para conjunto de validação); “0019” é o ID da imagem; o "00" seguinte é o número na sequência/rajada; "0,033s" é o tempo de exposição de 1/30 segundos.
python download_models.py
Por padrão, o código pega os dados da pasta "./dataset/Sony/" e "./dataset/Fuji/". Se você salvar o conjunto de dados em outras pastas, altere "input_dir" e "gt_dir" no início do código.
Por padrão, o código pega os dados da pasta "./dataset/Sony/" e "./dataset/Fuji/". Se você salvar o conjunto de dados em outras pastas, altere "input_dir" e "gt_dir" no início do código.
O carregamento dos dados brutos e o processamento pelo Rawpy levam muito mais tempo do que a retropropagação. Por padrão, o código carregará todos os dados verdadeiros processados pelo Rawpy na memória sem quantização de 8 ou 16 bits. Isso requer pelo menos 64 GB de RAM para treinar o modelo Sony e 128 GB de RAM para o modelo Fuji. Se você precisar treiná-lo em uma máquina com menos RAM, pode ser necessário revisar o código e usar os dados reais no disco. Fornecemos imagens reais de 16 bits processadas pelo Rawpy: Sony (12 GB) e Fuji (22 GB).
Se você usar nosso código e conjunto de dados para pesquisa, cite nosso artigo:
Chen Chen, Qifeng Chen, Jia Xu e Vladlen Koltun, "Aprendendo a ver no escuro", em CVPR, 2018.
Licença MIT.
O método proposto é projetado para dados brutos de sensores. O modelo pré-treinado provavelmente não funciona para dados de outro sensor de câmera. Não temos suporte para outros dados de câmera. Também não funciona para imagens posteriores à câmera ISP, ou seja, dados JPG ou PNG.
Este é um projeto de pesquisa e um protótipo para comprovar um conceito.
Geralmente, você só precisa subtrair o nível de preto correto e compactar os dados da mesma forma que os dados da Sony/Fuji. Se estiver usando rawpy, você precisará ler o nível de preto em vez de usar 512 no código fornecido. O intervalo de dados também pode ser diferente se não for de 14 bits. Você precisa normalizá-lo para [0,1] para a entrada de rede.
Muitas vezes é porque o modelo pré-treinado não foi baixado corretamente. Após o download, você deverá obter 4 arquivos relacionados ao ponto de verificação para o modelo.
Se você tiver dúvidas adicionais depois de ler o FAQ, envie um e-mail para [email protected].