Liberar
[2024/11/4] Los seis grupos de wechat.
[2024/10/24] Los cuatro grupos de WeChat anteriores están llenos, por lo que creamos un quinto grupo.
[2024/10/11] Demasiados amigos quieren unirse al grupo de WeChat, así que creamos un cuarto grupo.
[2024/10/2] versiones onnx y mnn de GOT-OCR2.0.
[29/9/2024]??? La comunidad ha implementado la primera versión de llama_cpp_inference.
[24/9/2024]??? Admite ms-swift rápido Ajuste fino para sus propios datos.
[23/9/2024]??? Lanzamos la demostración oficial de Modelscope. Muchas gracias por que Modelscope proporcione el recurso GPU.
[2024/9/14]??? Lanzamos la demo oficial. Muchas gracias por Huggingface por proporcionar el recurso de GPU.
[2024/9/13]??? Lanzamos el despliegue de Huggingface.
[03/9/2024]??? Abrimos los códigos, pesos y puntos de referencia. El artículo se puede encontrar en este repositorio. También lo hemos enviado a Arxiv.
[03/9/2024]??? ¡Lanzamos el modelo OCR-2.0 GOT!
Alentamos a todos a desarrollar aplicaciones GOT basadas en este repositorio. Gracias por las siguientes contribuciones:
referencia de vllm ~ colaborador: @Jay
Soporte para onnx y mnn ~ colaborador: @BaofengZan
inferencia llama_cpp ~ colaborador: @ 1694439208
Colaboración de GOT ~ colaborador: @Zizhe Wang
Versión CPU de GOT ~ colaborador: @ElvisClaros
Demostración en línea ~ colaborador: @Joseph Pollack
Demostración de Dokcer y cliente ~ colaborador: @QIN2DIM
GUI de GOT ~ colaborador: @XJF2332
Instalar
Tengo pesos
Manifestación
Tren
Afinar
evaluar
Hacia OCR-2.0 a través de un modelo unificado de extremo a extremo
Nuestro entorno es cuda11.8+torch2.0.1
Clona este repositorio y navega hasta la carpeta GOT.
git clone https://github.com/Ucas-HaoranWei/GOT-OCR2.0.gitcd 'la carpeta GOT'
Instalar paquete
conda crear -n consiguió python=3.10 -y conda activar tengo instalación de pip -e.
Instalar Flash-Atención
pip install ninja pip install flash-attn --no-build-isolation
abrazando cara
Google Drive
Código BaiduYun: OCR2
OCR de texto plano:
python3 GOT/demo/run_ocr_2.0.py --nombre-modelo /GOT_weights/ --archivo-imagen /an/image/file.png --tipo ocr
formatear textos OCR:
python3 GOT/demo/run_ocr_2.0.py --nombre-modelo /GOT_weights/ --archivo-imagen /an/image/file.png --tipo formato
OCR detallado:
python3 GOT/demo/run_ocr_2.0.py --nombre-modelo /GOT_weights/ --archivo-imagen /an/image/file.png --tipo formato/ocr --box [x1,y1,x2,y2]
python3 GOT/demo/run_ocr_2.0.py --nombre-modelo /GOT_weights/ --archivo-imagen /an/image/file.png --tipo formato/ocr --color rojo/verde/azul
OCR multicultivo:
python3 GOT/demo/run_ocr_2.0_crop.py --nombre-modelo /GOT_weights/ --archivo-imagen /an/image/file.png
OCR de varias páginas (la ruta de la imagen contiene varios archivos .png):
python3 GOT/demo/run_ocr_2.0_crop.py --model-name /GOT_weights/ --image-file /images/path/ --multi-page
renderice los resultados de OCR formateados:
python3 GOT/demo/run_ocr_2.0.py --nombre-modelo /GOT_weights/ --archivo-imagen /an/image/file.png --tipo formato --render
Nota : Los resultados de la renderización se pueden encontrar en /results/demo.html. Abra demo.html para ver los resultados.
La muestra del tren se puede encontrar aquí. Tenga en cuenta que la '
Este código base solo admite el entrenamiento posterior (etapa 2/etapa 3) en nuestros pesos GOT.
Si desea entrenar desde la etapa 1 descrita en nuestro documento, necesita este repositorio.
velocidad 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 Verdadero --bf16 Verdadero --gradient_acumulación_pasos 2 --evaluación_estrategia "no" --save_strategy "pasos" --save_steps 200 --save_total_limit 1 --weight_decay 0. --relación_calentamiento 0.001 --lr_scheduler_type "coseno" --logging_steps 1 --tf32 Verdadero --model_max_length 8192 --gradient_checkpointing Verdadero --dataloader_num_workers 8 --reportar_a ninguno --per_device_train_batch_size 2 --num_train_epochs 1 --tasa_de_aprendizaje 2e-5 --conjuntos de datos pdf-ocr+scence --output_dir /tu/salida/ruta
Nota :
Cambie la información de datos correspondiente en constante.py.
Cambie la línea 37 en conversation_dataset_qwen.py a su data_name.
Ajuste rápido con ms-swift:
clon de git https://github.com/modelscope/ms-swift.gitcd ms-swift instalación de pip -e .[llm]
# predeterminado: sft LLM y proyector, codificador de visión 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 sft rápido --model_type got-ocr2 --model_id_or_path stepfun-ai/GOT-OCR2_0 --sft_type lora --conjunto de datos latex-ocr-print#5000 --deepspeed default-zero2
Con tus datos :
--conjunto de datos train.jsonl --val_dataset val.jsonl (opcional)
Formato de datos :
{"consulta": "55555", "respuesta": "66666", "imágenes": ["image_path"]} {"consulta": " eeeee", "respuesta": "fffff", "historial": [], "imágenes": ["image_path1", "image_path2"]} {"consulta": "EEEEE", "respuesta": "FFFFF", "historial": [["consulta1", "respuesta1"], ["consulta2", "respuesta2"]]}
Se pueden ver más detalles en ms-swift.
Usamos los puntos de referencia de Fox y OneChart, y se pueden encontrar otros puntos de referencia en el enlace de descarga de pesas.
Los códigos de evaluación se pueden encontrar en GOT/eval.
Puede utilizar evalua_GOT.py para ejecutar la evaluación. Si tiene 8 GPU, --num-chunks se puede configurar en 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
Si está interesado en este trabajo o tiene preguntas sobre el código o el documento, únase a nuestro grupo de comunicación de Wechat.
Nota : Los cinco grupos de WeChat están llenos, únase al grupo 6.
No dude en ponerse en contacto conmigo por correo electrónico, [email protected], si tiene alguna pregunta.
Vary: ¡la base de código sobre la que construimos!
Qwen: el modelo base LLM de Vary, ¡que es bueno tanto en inglés como en chino!
@article{wei2024general, title={Teoría general de OCR: hacia OCR-2.0 mediante un modelo unificado de extremo a extremo}, autor={Wei, Haoran y Liu, Chenglong y Chen, Jinyue y Wang, Jia y Kong, Lingyu y Xu, Yanming y Ge, Zheng y Zhao, Liang y Sun, Jianjian y Peng, Yuang y otros}, diario={arXiv preprint arXiv:2409.01704}, año={2024}}@article{wei2023vary, title={Vary: Scaling subir el vocabulario de visión para modelos de lenguaje-visión amplios}, autor={Wei, Haoran y Kong, Lingyu y Chen, Jinyue y Zhao, Liang y Ge, Zheng y Yang, Jinrong y Sun, Jianjian y Han, Chunrui y Zhang, Xiangyu }, diario={arXiv preprint arXiv:2312.06109}, año={2023}}