Libérer
[2024/11/4] Les six groupes Wechat.
[2024/10/24] Les quatre groupes Wechat précédents sont complets, nous avons donc créé un cinquième groupe.
[2024/10/11] Trop d'amis souhaitent rejoindre le groupe Wechat, nous avons donc créé un quatrième groupe.
[2024/10/2] versions onnx et mnn de GOT-OCR2.0.
[2024/9/29] ??? La communauté a implémenté la première version de llama_cpp_inference.
[2024/9/24] ??? Prise en charge de ms-swift quick Affinez vos propres données.
[23/09/2024] ??? Nous publions la démo officielle de Modelscope. Merci beaucoup à Modelscope qui fournit la ressource GPU.
[2024/9/14] ??? Nous publions la démo officielle. Merci beaucoup d'avoir fourni la ressource GPU à Huggingface.
[13/09/2024] ??? Nous publions le déploiement Huggingface.
[03/09/2024] ??? Nous open-source les codes, les poids et les références. L'article peut être trouvé dans ce dépôt. Nous l'avons également soumis à Arxiv.
[03/09/2024] ??? Nous publions le modèle OCR-2.0 GOT !
Nous encourageons tout le monde à développer des applications GOT basées sur ce dépôt. Merci pour les contributions suivantes :
référence vllm ~ contributeur : @Jay
onnx et mnn prennent en charge ~ contributeur : @BaofengZan
inférence llama_cpp ~ contributeur : @1694439208
Colab de GOT ~ contributeur : @Zizhe Wang
Version CPU de GOT ~ contributeur : @ElvisClaros
Démo en ligne ~ contributeur : @Joseph Pollack
Démo Dokcer & client ~ contributeur : @QIN2DIM
GUI de GOT ~ contributeur : @XJF2332
Installer
OBTENU Poids
Démo
Former
Affiner
Évaluer
Vers OCR-2.0 via un modèle unifié de bout en bout
Notre environnement est cuda11.8+torch2.0.1
Clonez ce référentiel et accédez au dossier GOT
git clone https://github.com/Ucas-HaoranWei/GOT-OCR2.0.gitcd 'le dossier GOT'
Installer le package
conda create -n a obtenu python=3.10 -y conda activate obtenu pip install -e .
Installer Flash-Attention
pip install ninja pip install flash-attn --no-build-isolation
Visage câlin
Google Drive
Code BaiduYun : OCR2
OCR de textes bruts :
python3 GOT/demo/run_ocr_2.0.py --model-name /GOT_weights/ --image-file /an/image/file.png --type ocr
formater les textes OCR :
python3 GOT/demo/run_ocr_2.0.py --model-name /GOT_weights/ --image-file /an/image/file.png --type format
OCR à grain fin :
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 rouge/vert/bleu
OCR multi-cultures :
python3 GOT/demo/run_ocr_2.0_crop.py --model-name /GOT_weights/ --image-file /an/image/file.png
OCR multipage (le chemin de l'image contient plusieurs fichiers .png) :
python3 GOT/demo/run_ocr_2.0_crop.py --model-name /GOT_weights/ --image-file /images/path/ --multi-page
rendre les résultats OCR formatés :
python3 GOT/demo/run_ocr_2.0.py --model-name /GOT_weights/ --image-file /an/image/file.png --type format --render
Remarque : Les résultats du rendu se trouvent dans /results/demo.html. Veuillez ouvrir le fichier demo.html pour voir les résultats.
Un échantillon de train peut être trouvé ici. Notez que le '
Cette base de code ne prend en charge que la post-formation (étape 2/étape 3) sur nos poids GOT.
Si vous souhaitez vous entraîner à partir de l'étape 1 décrite dans notre article, vous avez besoin de ce dépôt.
vitesse profonde /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 Vrai --bf16 Vrai --gradient_accumulation_steps 2 --evaluation_strategy "non" --save_strategy "étapes" --save_steps 200 --save_total_limit 1 --weight_decay 0. --rapport_échauffement 0,001 --lr_scheduler_type "cosinus" --logging_steps 1 --tf32 Vrai --model_max_length 8192 --gradient_checkpointing Vrai --dataloader_num_workers 8 --report_to aucun --per_device_train_batch_size 2 --num_train_epochs 1 --learning_rate 2e-5 --datasets pdf-ocr+scence --output_dir /votre/output/chemin
Note :
Modifiez les informations de données correspondantes dans constant.py.
Remplacez la ligne 37 de conversation_dataset_qwen.py par votre data_name.
Ajustement rapide avec ms-swift :
clone git https://github.com/modelscope/ms-swift.gitcd ms-swift pip install -e .[llm]
# par défaut : sft LLM et projecteur, encodeur de vision figéeCUDA_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 pieds rapides --model_type got-ocr2 --model_id_or_path stepfun-ai/GOT-OCR2_0 --sft_type lora --dataset latex-ocr-print#5000 --deepspeed par défaut-zéro2
Avec vos données :
--dataset train.jsonl --val_dataset val.jsonl (facultatif)
Format des données :
{"query": "55555", "response": "66666", "images": ["image_path"]} {"query": " eeeee", "response": "fffff", "history": [], "images": ["image_path1", "image_path2"]} {"query": "EEEEEE", "response": "FFFFF", "history": [["query1", "response1"], ["query2", "response2"]]}
Plus de détails peuvent être vus dans ms-swift.
Nous utilisons les benchmarks Fox et OneChart, et d'autres benchmarks peuvent être trouvés dans le lien de téléchargement des pondérations.
Les codes d'évaluation peuvent être trouvés dans GOT/eval.
Vous pouvez utiliser évalue_GOT.py pour exécuter l'évaluation. Si vous disposez de 8 GPU, le --num-chunks peut être défini sur 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 vous êtes intéressé par ce travail ou si vous avez des questions sur le code ou le document, veuillez rejoindre notre groupe de communication Wechat.
Remarque : les cinq groupes Wechat sont complets, veuillez rejoindre le groupe 6.
N'hésitez pas à me contacter par email, [email protected], si vous avez des questions.
Varier : la base de code sur laquelle nous avons construit !
Qwen : le modèle de base LLM de Vary, qui est bon en anglais et en chinois !
@article{wei2024general, title={Théorie générale de l'OCR : vers l'OCR-2.0 via un modèle unifié de bout en bout}, author={Wei, Haoran et Liu, Chenglong et Chen, Jinyue et Wang, Jia et Kong, Lingyu et Xu, Yanming et Ge, Zheng et Zhao, Liang et Sun, Jianjian et Peng, Yuang et autres}, journal={arXiv preprint arXiv:2409.01704}, year={2024}}@article{wei2023vary, title={Vary : mise à l'échelle le vocabulaire de la vision pour les modèles de langage de grande vision}, author={Wei, Haoran et Kong, Lingyu et Chen, Jinyue et Zhao, Liang et Ge, Zheng et Yang, Jinrong et Sun, Jianjian et Han, Chunrui et Zhang, Xiangyu }, journal={préimpression arXiv arXiv:2312.06109}, année={2023}}