Introdução • Métodos reproduzidos • Resultados reproduzidos • Como usar • Licença • Agradecimentos • Entre em contato

Bem-vindo ao Pycil, talvez a caixa de ferramentas para aprendizado incremental de classe com os métodos mais implementados. Este é o repositório de código para "Pycil: uma caixa de ferramentas Python para aprendizado incremental de classe" [artigo] em Pytorch. Se você usar algum conteúdo deste repositório para o seu trabalho, cite as seguintes entradas do babador:
@article{zhou2023pycil,
author = {Da-Wei Zhou and Fu-Yun Wang and Han-Jia Ye and De-Chuan Zhan},
title = {PyCIL: a Python toolbox for class-incremental learning},
journal = {SCIENCE CHINA Information Sciences},
year = {2023},
volume = {66},
number = {9},
pages = {197101},
doi = {https://doi.org/10.1007/s11432-022-3600-y}
}
@article{zhou2024class,
author = {Zhou, Da-Wei and Wang, Qi-Wei and Qi, Zhi-Hong and Ye, Han-Jia and Zhan, De-Chuan and Liu, Ziwei},
title = {Class-Incremental Learning: A Survey},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence},
volume={46},
number={12},
pages={9851--9873},
year = {2024}
}
@inproceedings{zhou2024continual,
title={Continual learning with pre-trained models: A survey},
author={Zhou, Da-Wei and Sun, Hai-Long and Ning, Jingyi and Ye, Han-Jia and Zhan, De-Chuan},
booktitle={IJCAI},
pages={8363-8371},
year={2024}
}
Os sistemas tradicionais de aprendizado de máquina são implantados no cenário do mundo fechado, que requer todos os dados de treinamento antes do processo de treinamento offline. No entanto, os aplicativos do mundo real geralmente enfrentam as novas classes de entrada, e um modelo deve incorporá-los continuamente. O paradigma de aprendizado é chamado de aprendizado incremental de classe (CIL). Propomos uma caixa de ferramentas Python que implementa vários algoritmos-chave para o aprendizado incremental de classe para aliviar o ônus dos pesquisadores da comunidade de aprendizado de máquina. A caixa de ferramentas contém implementações de várias obras fundadoras de CIL, como EWC e ICARL, mas também fornece algoritmos atuais de ponta que podem ser usados para a realização de novas pesquisas fundamentais. Esta caixa de ferramentas, chamada Pycil for Python, aprendizado incremental de classe, é de código aberto com uma licença do MIT.
Para obter mais informações sobre o aprendizado incremental, você pode consultar esses materiais de leitura:
FineTune : Método de linha de base que simplesmente atualiza os parâmetros em novas tarefas.EWC : Superando o esquecimento catastrófico nas redes neurais. PNAS2017 [papel]LwF : Aprender sem esquecer. ECCV2016 [papel]Replay : Método de linha de base com repetição exemplar.GEM : Memória episódica de gradiente para aprendizado contínuo. NIPS2017 [papel]iCaRL : Classificador incremental e aprendizado de representação. CVPR2017 [papel]BiC : Aprendizagem incremental em larga escala. CVPR2019 [papel]WA : Manter discriminação e justiça na aprendizagem incremental de classe. CVPR2020 [Paper]PODNet : PodNet: Destilação de saídas combinadas para aprendizado incremental de pequenas tarefas. ECCV2020 [papel]DER : Der: Representação dinamicamente expansível para aprendizado incremental de classe. CVPR2021 [papel]PASS : Aumento do protótipo e auto-supervisão para aprendizado incremental. CVPR2021 [papel]RMM : RMM: Gerenciamento de memória reforçada para aprendizado incremental de classe. Neurips2021 [papel]IL2A : Aprendizagem incremental de classe via aumento duplo. Neurips2021 [papel]ACIL : Aprendizagem Analítica de Classe Incremmental com memorização absoluta e proteção à privacidade. Neurips 2022 [papel]SSRE : Expansão de representação auto-sustentável para aprendizado não expartido de classe incremental. CVPR2022 [papel]FeTrIL : Tradução de recursos para aprendizado de classe incremental sem exemplos. WACV2023 [papel]Coil : co-transportar para a aprendizagem incremental de classe. ACM MM2021 [papel]FOSTER : Aumentação e compactação de recursos para aprendizado incremental de classe. ECCV 2022 [papel]MEMO : um modelo ou 603 exemplos: para o aprendizado incremental de classe eficiente em termos de memória. ICLR 2023 Spotlight [papel]BEEF : carne bovina: aprendizado bin-compatível de classe incremental por meio de expansão e fusão baseadas em energia. ICLR 2023 [papel]DS-AL : Um aprendizado analítico de fluxo duplo para aprendizado de classe incremental sem exemplar. AAAI 2024 [papel]SimpleCIL : Revisitando aprendizado incremental de classe com modelos pré-treinados: generalização e adaptividade são tudo o que você precisa. IJCV 2024 [papel]Aper : Revisitando Aprendizagem InCremental de Classe com modelos pré-treinados: generalização e adaptividade são tudo o que você precisa. IJCV 2024 [papel] 


Mais detalhes e resultados experimentais podem ser encontrados em nossa pesquisa.
Clone este repositório do GitHub:
git clone https://github.com/G-U-N/PyCIL.git
cd PyCIL
[MODEL NAME].json para configurações globais.[MODEL NAME].py (por exemplo, models/icarl.py ).python main.py --config=./exps/[MODEL NAME].json Onde [nome do modelo] deve ser escolhido de finetune , ewc , lwf , replay , gem , icarl , bic , wa , podnet , der , etc.
hyper-parametersAo usar o Pycil, você pode editar os parâmetros globais e o hiper-parâmetro específico do algoritmo no arquivo JSON correspondente.
Esses parâmetros incluem:
ResNet32 é utilizado para CIFAR100 e ResNet18 é usado para ImageNet .Outros parâmetros em termos de otimização do modelo, por exemplo, tamanho do lote, época da otimização, taxa de aprendizado, decaimento da taxa de aprendizado, decaimento de peso, marco e temperatura, podem ser modificados no arquivo python correspondente.
Implementamos o pré-processamento de CIFAR100 , imagenet100, e imagenet1000 . Ao treinar no CIFAR100 , essa estrutura o baixará automaticamente. Ao treinar no imagenet100/1000 , você deve especificar a pasta do seu conjunto de dados no utils/data.py .
def download_data ( self ):
assert 0 , "You should specify the folder of your dataset"
train_dir = '[DATA-PATH]/train/'
test_dir = '[DATA-PATH]/val/'Aqui está a lista de arquivos do ImageNet100 (ou digamos imagenet-sub).
Consolidação dupla para aprendizado de domínio baseado em modelo pré-treinado ( ARXIV 2024 ) [Paper]
Revisitando o aprendizado de classes com modelos pré-treinados: generalização e adaptividade são tudo o que você precisa ( IJCV 2024 ) [Paper] [Código]
Aprendizagem de classe incremental: uma pesquisa ( TPAMI 2024 ) [Paper] [Código]
Ensemble de subespaço expansível para aprendizado incremental de classe baseado em modelo pré-treinado ( CVPR 2024 ) [Paper] [Código]
O aumento do recurso de ensaio de várias camadas para aprendizado incremental de classe ( ICML 2024 ) [Paper] [Código]
Aprendizagem contínua com modelos pré-treinados: uma pesquisa ( IJCAI 2024 ) [Paper] [Código]
Roteamento adaptador adaptativo para aprendizado incremental de classe de cauda longa ( aprendizado de máquina 2024 ) [Paper] [Código]
Aprendendo sem esquecer os modelos de linguagem da visão ( ARXIV 2023 ) [papel]
Piloto: uma caixa de ferramentas de aprendizado contínuo baseado em modelo pré-treinado ( ARXIV 2023 ) [Paper] [Código]
Aprendizagem de poucas categorias de classe através da calibração de protótipo sem treinamento ( Neurips 2023 ) [Paper] [Código]
Carne: Aprendizagem de Classe Bin-Compatível por Expansão e Fusão baseadas em energia ( ICLR 2023 ) [Paper] [Código]
Um modelo ou 603 exemplos: para o aprendizado incremental de classe com eficiência de memória ( ICLR 2023 ) [Paper] [Código]
Aprendizagem com poucas transmissões de classe, amostrando tarefas multifásicas ( TPAMI 2022 ) [Paper] [Código]
Foster: reforço e compactação de recursos para aprendizado incremental de classe ( ECCV 2022 ) [Paper] [Código]
Aprendizagem incremental de classe com poucas fotos compatíveis com a frente ( CVPR 2022 ) [Paper] [Código]
Co-Transporte para Aprendizagem InCremental de Classe ( ACM MM 2021 ) [Paper] [Código]
Rumo à avaliação realista de cenários de aprendizado contínuo industrial, com ênfase no consumo de energia e na pegada computacional ( ICCV 2023 ) [Paper] [Código]
Classificador residual dinâmico para aprendizado incremental de classe ( ICCV 2023 ) [Paper] [Código]
Aprendizagem de S-Promotos com Transformadores pré-treinados: Razor de Occam para aprendizado incremental de domínio ( Neurips 2022 ) [Paper] [Código]
Verifique a licença do MIT listada neste repositório.
Agradecemos aos seguintes repositórios que fornecem componentes/funções úteis em nosso trabalho.
O fluxo de treinamento e as configurações de dados são baseados na reprodução de aprendizado contínuo. As informações originais do repositório estão disponíveis no ramo base.
Se houver alguma dúvida, sinta-se à vontade para propor novos recursos, abrindo um problema ou contato com o autor: Da-wei zhou ([email protected]) e fu-yun wang ([email protected]). Aproveite o código.