Liberar
[2024/11/4] O grupo de seis wechat.
[2024/10/24] Os quatro grupos de wechat anteriores estão lotados, então criamos um quinto grupo.
[2024/10/11] Muitos amigos querem entrar no grupo wechat, então criamos um quarto grupo.
[2024/10/2] versões onnx e mnn do GOT-OCR2.0.
[2024/09/29]??? A comunidade implementou a primeira versão do llama_cpp_inference.
[2024/09/24]??? Suporte ms-swift rápido ajuste fino para seus próprios dados.
[2024/9/23]??? Lançamos a demonstração oficial do Modelscope. Muito obrigado por Modelscope fornecer o recurso GPU.
[2024/9/14]??? Lançamos a demo oficial. Muito obrigado por Huggingface fornecer o recurso GPU.
[2024/09/13]??? Liberamos a implantação Huggingface.
[03/09/2024]??? Abrimos o código-fonte dos códigos, pesos e benchmarks. O artigo pode ser encontrado neste repositório. Também o enviamos ao Arxiv.
[03/09/2024]??? Lançamos o modelo OCR-2.0 GOT!
Encorajamos todos a desenvolver aplicativos GOT baseados neste repositório. Obrigado pelas seguintes contribuições:
referência vllm ~ contribuidor: @Jay
suporte onnx e mnn ~ contribuidor: @BaofengZan
inferência llama_cpp ~ contribuidor: @ 1694439208
Colab do GOT ~ contribuidor: @Zizhe Wang
Versão CPU do GOT ~ contribuidor: @ElvisClaros
Demonstração online ~ contribuidor: @Joseph Pollack
Dokcer e demonstração do cliente ~ contribuidor: @QIN2DIM
GUI do GOT ~ contribuidor: @XJF2332
Instalar
TENHO Pesos
Demonstração
Trem
Afinar
Avaliação
Rumo ao OCR-2.0 por meio de um modelo unificado de ponta a ponta
Nosso ambiente é cuda11.8+torch2.0.1
Clone este repositório e navegue até a pasta GOT
clone git https://github.com/Ucas-HaoranWei/GOT-OCR2.0.gitcd 'a pasta GOT'
Instalar pacote
conda criar -n obteve python=3.10 -y conda ativar obteve pip instalar -e.
Instale Flash-Atenção
pip install ninja pip install flash-attn --no-build-isolation
Abraçando cara
Google Drive
Código Baidu Yun: OCR2
OCR de textos simples:
python3 GOT/demo/run_ocr_2.0.py --model-name /GOT_weights/ --image-file /an/image/file.png --type ocr
formatar textos OCR:
python3 GOT/demo/run_ocr_2.0.py --model-name /GOT_weights/ --image-file /an/image/file.png --type formato
OCR refinado:
python3 GOT/demo/run_ocr_2.0.py --model-name /GOT_weights/ --image-file /an/image/file.png --type format/ocr --box [x1,y1,x2,y2]
python3 GOT/demo/run_ocr_2.0.py --model-name /GOT_weights/ --image-file /an/image/file.png --type format/ocr --color red/green/blue
OCR multi-corte:
python3 GOT/demo/run_ocr_2.0_crop.py --model-name /GOT_weights/ --image-file /an/image/file.png
OCR de várias páginas (o caminho da imagem contém vários arquivos .png):
python3 GOT/demo/run_ocr_2.0_crop.py --model-name /GOT_weights/ --image-file /images/path/ --multi-page
renderize os resultados de OCR formatados:
python3 GOT/demo/run_ocr_2.0.py --model-name /GOT_weights/ --image-file /an/image/file.png --type format --render
Nota : Os resultados da renderização podem ser encontrados em /results/demo.html. Abra o demo.html para ver os resultados.
A amostra do trem pode ser encontrada aqui. Observe que o '
Esta base de código suporta apenas pós-treinamento (estágio 2/estágio 3) em nossos pesos GOT.
Se quiser treinar a partir do estágio 1 descrito em nosso artigo, você precisa deste repositório.
velocidade profunda /GOT-OCR-2.0-master/GOT/train/train_GOT.py --deepspeed /GOT-OCR-2.0-master/zero_config/zero2.json --model_name_or_path /GOT_weights/ --use_im_start_end Verdadeiro --bf16 Verdadeiro --gradient_accumulation_steps 2 --eavaliação_estratégia "não" --save_strategy "etapas" --save_steps 200 --save_total_limit1 --weight_decay 0. --warmup_ratio 0,001 --lr_scheduler_type "cosseno" --logging_steps 1 --tf32 Verdadeiro --model_max_length 8192 --gradient_checkpointing Verdadeiro --dataloader_num_workers8 --report_to nenhum --per_device_train_batch_size 2 --num_train_épocas 1 --learning_rate 2e-5 --datasets pdf-ocr+scence --output_dir /sua/saída/caminho
Observação :
Altere as informações de dados correspondentes em constante.py.
Altere a linha 37 em conversa_dataset_qwen.py para seu data_name.
Ajuste rápido com ms-swift:
clone git https://github.com/modelscope/ms-swift.gitcd ms-swift pip instalar -e .[llm]
# padrão: sft LLM e projetor, codificador de visão congeladaCUDA_VISIBLE_DEVICES = 0 swift sft --model_type got-ocr2 --model_id_or_path stepfun-ai/GOT-OCR2_0 --sft_type lora --dataset latex-ocr-print#5000# Deepspeed ZeRO2NPROC_PER_NODE=4 CUDA_VISIBLE_DEVICES=0,1,2,3 rápido --model_type got-ocr2 --model_id_or_path stepfun-ai/GOT-OCR2_0 --sft_type lora --dataset latex-ocr-print#5000 --deepspeed padrão-zero2
Com seus dados :
--dataset train.jsonl --val_dataset val.jsonl (opcional)
Formato de dados :
{"query": "55555", "response": "66666", "images": ["image_path"]} {"query": " eeeee", "response": "fffff", "history": [], "images": ["image_path1", "image_path2"]} {"consulta": "EEEEE", "resposta": "FFFFF", "histórico": [["consulta1", "resposta1"], ["consulta2", "resposta2"]]}
Mais detalhes podem ser vistos em ms-swift.
Usamos os benchmarks Fox e OneChart, e outros benchmarks podem ser encontrados no link para download de pesos.
Os códigos de avaliação podem ser encontrados em GOT/eval.
Você pode usar avaliar_GOT.py para executar a avaliação. Se você tiver 8 GPUs, --num-chunks poderá ser definido como 8.
python3 GOT/eval/evaluate_GOT.py --model-name /GOT_weights/ --gtfile_path xxxx.json --image_path /image/path/ --out_path /data/eval_results/GOT_mathpix_test/ --num-chunks 8 --datatype OCR
Se você estiver interessado neste trabalho ou tiver dúvidas sobre o código ou o artigo, entre em nosso grupo Wechat de comunicação.
Nota : Todos os cinco grupos do Wechat estão lotados, por favor junte-se ao grupo 6.
Não hesite em entrar em contato comigo por e-mail, [email protected], se tiver alguma dúvida.
Vary: a base de código sobre a qual construímos!
Qwen: o modelo básico LLM do Vary, que é bom tanto em inglês quanto em chinês!
@artigo{wei2024general, title={Teoria geral do OCR: Rumo ao OCR-2.0 por meio de um modelo unificado de ponta a ponta}, autor={Wei, Haoran e Liu, Chenglong e Chen, Jinyue e Wang, Jia e Kong, Lingyu e Xu, Yanming e Ge, Zheng e Zhao, Liang e Sun, Jianjian e Peng, Yuang e outros}, diário={arXiv preprint arXiv:2409.01704}, ano={2024}}@article{wei2023vary, title={Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models}, autor = {Wei, Haoran e Kong, Lingyu e Chen, Jinyue e Zhao, Liang e Ge, Zheng e Yang, Jinrong e Sun, Jianjian e Han, Chunrui e Zhang, Xiangyu }, diário={pré-impressão arXiv arXiv:2312.06109}, ano={2023}}