DOCUMENTATION

Kraken est un logiciel OCR optimisé pour les sources historiques, notamment les sources manuscrites. Il permet la reconnaissance de caractères et l'entraînement de modèles pour ces caractères. Il propose également la segmentation de ces sources et l'entraînement de cette segmentation. Les résultats de ces entraînements de modèles peuvent être exportés au format '.mlmodel'. En ce qui concerne la sortie des résultats après l'utilisation des modèles sur nos sources, quatre formats sont disponibles : ALTO, PageXML, abbyyXML et hOCR. Vous pourrez trouver plus d'information sur le logiciel ici : https://kraken.re/main/index.html.

Tous ces résultats, du jeu de données pré-supposé à l'entraînement, également appelé vérité de terrain (ground truth), jusqu'au modèle de segmentation ou de reconnaissance de caractère, peuvent être partagés sur la plateforme Zenodo. La version de Kraken installée sur le centre de calcul est la dernière en date, soit la version 4.3.13. Pour l'utiliser, il faut charger le module :

module load kraken/kraken-4.3.13

Avant de pouvoir utiliser un script qui lancera un entraînement de modèle, il est impératif à chaque fois de compiler votre vérité de terrain en un « binary dataset format ». C’est ce qui va nous permettre d'utiliser le GPU pour diminuer drastiquement le temps d'entraînement de nos modèles.

ketos compile -f xml -o Nom_du_datataset.arrow Verite_de_Terrain/*.xml

Sachant qu’il est possible d’intégrer cette ligne de commande à notre script dont voici un exemple :

#! /bin/sh

#SBATCH -p publicgpu        # 'p' pour Partition (file d'attente) public avec des GPU
#SBATCH -N 1                # 1 nœud, Kraken utilisera dans tous les cas 1 seul noeud.
#SBATCH -t 02:00:00         # Le job sera tué au bout de 2h
#SBATCH --gres=gpu:1        # Il y a 4 GPU par nœud, Kraken n’en nécessite qu’un seul
#SBATCH --constraint=gputc  # Nœuds GPU double précision, nous on va prendre gpu tensor core = puce spécialisé dans le deeplearning
#SBATCH --mail-type=END     # Réception d'un mail à la fin du job
#SBATCH --mail-user=mail@unistra.fr

module load kraken/kraken-4.3.13

ketos compile -f xml -o Nom_du_datataset.arrow Verite_de_Terrain/*.xml
ketos train -d cuda:0 -f binary Nom_du_datataset.arrow

Ce script d’entrainement fait à partir d’une vérité de terrain est le plus basique qu’on puisse faire. Si on dispose d’une large vérité de terrain, une meilleure configuration est recommandé par kraken, en voici le script :

#! /bin/sh

#SBATCH -p publicgpu        # 'p' pour Partition (file d'attente) public avec des GPU
#SBATCH -N 1                # 1 nœud, Kraken utilisera dans tous les cas 1 seul noeud.
#SBATCH -t 02:00:00         # Le job sera tué au bout de 2h
#SBATCH --gres=gpu:1        # Il y a 4 GPU par nœud, Kraken n’en nécessite qu’un seul
#SBATCH --constraint=gputc  # Nœuds GPU double précision, nous on va prendre gpu tensor core = puce spécialisé dans le deeplearning
#SBATCH --mail-type=END     # Réception d'un mail à la fin du job
#SBATCH --mail-user=mail@unistra.fr

module load kraken/kraken-4.3.13

ketos compile -f xml -o Nom_du_datataset.arrow  Verite_de_Terrain/*.xml
ketos train --augment --workers 4 -d cuda -f binary --min-epochs 20 -w 0 -s '[1,120,0,1 Cr3,13,32 Do0.1,2 Mp2,2 Cr3,13,32 Do0.1,2 Mp2,2 Cr3,9,64 Do0.1,2 Mp2,2 Cr3,9,64 Do0.1,2 S1(1x0)1,3 Lbx200 Do0.1,2 Lbx200 Do.1,2 Lbx200 Do]' -r 0.0001 Nom_du_dataset.arrow

Pour plus de renseignement sur cette configuration, se rendre sur la page Kraken dédié à l’entrainement.

Il est possible de changer tous les paramètres de cette configuration pour l’adapter au mieux à votre vérité de terrain et aux résultats que vous souhaitez.

Il en va de même pour le fine-tuning de modèle, voici un exemple avec une configuration spécifique :

#! /bin/sh

#SBATCH -p publicgpu        # 'p' pour Partition (file d'attente) public avec des GPU
#SBATCH -N 1                # 1 nœud, Kraken utilisera dans tous les cas 1 seul noeud.
#SBATCH -t 02:00:00         # Le job sera tué au bout de 2h
#SBATCH --gres=gpu:1        # Il y a 4 GPU par nœud, Kraken n’en nécessite qu’un seul
#SBATCH --constraint=gputc  # Nœuds GPU double précision, nous on va prendre gpu tensor core = puce spécialisé dans le deeplearning
#SBATCH --mail-type=END     # Réception d'un mail à la fin du job
#SBATCH --mail-user=mail@unistra.fr

module load kraken/kraken-4.3.13

ketos compile -f xml -o Nom_du_datataset.arrow  Verite_de_Terrain/*.xml
ketos train -d cuda:0 -s '[1,1200,0,3 Cr7,7,64,2,2 Gn32 Cr3,3,128,2,2 Gn32 Cr3,3,128 Gn32 Cr3,3,256 Gn32]' -f binary --resize union -i Model_de_base.mlmodel Nom_du_datataset.arrow

Entrainement de modèles de segmentation :

Il en va de même pour l'entraînement des modèles de segmentation, à la différence près qu'il n'est pas nécessaire de compiler notre vérité de terrain. En effet, l'entraînement ou le fine-tuning des modèles de segmentation ne peut se faire avec des données au format '.arrow'.

Cependant, là où la configuration avec '-d cuda:0' ne fonctionne qu'avec le format de vérité de terrain en '.arrow' pour les entraînements et le fine-tuning de modèles de reconnaissance de caractères, pour la segmentation, la vérité de terrain au format XML fonctionne.

Pour un script d’entrainement de modèle de segmentation :

#! /bin/sh

#SBATCH -p publicgpu        # 'p' pour Partition (file d'attente) public avec des GPU
#SBATCH -N 1                # 1 nœud, Kraken utilisera dans tous les cas 1 seul noeud.
#SBATCH -t 02:00:00         # Le job sera tué au bout de 2h
#SBATCH --gres=gpu:1        # Il y a 4 GPU par nœud, Kraken n’en nécessite qu’un seul
#SBATCH --constraint=gputc  # Nœuds GPU double précision, nous on va prendre gpu tensor core = puce spécialisé dans le deeplearning
#SBATCH --mail-type=END     # Réception d'un mail à la fin du job
#SBATCH --mail-user=mail@unistra.fr

module load kraken/kraken-4.3.13

ketos segtrain -d cuda:0 -s '[1,1200,0,3 Cr7,7,64,2,2 Gn32 Cr3,3,128,2,2 Gn32 Cr3,3,128 Gn32 Cr3,3,256 Gn32]' -f xml Verite_de_terrain/*.xml

Pour un script de fine-tuning de modèle de segmentation :

#! /bin/sh

#SBATCH -p publicgpu        # 'p' pour Partition (file d'attente) public avec des GPU
#SBATCH -N 1                # 1 nœud, Kraken utilisera dans tous les cas 1 seul noeud.
#SBATCH -t 02:00:00         # Le job sera tué au bout de 2h
#SBATCH --gres=gpu:1        # Il y a 4 GPU par nœud, Kraken n’en nécessite qu’un seul
#SBATCH --constraint=gputc  # Nœuds GPU double précision, nous on va prendre gpu tensor core = puce spécialisé dans le deeplearning
#SBATCH --mail-type=END     # Réception d'un mail à la fin du job
#SBATCH --mail-user=mail@unistra.fr

module load kraken/kraken-4.3.13

ketos segtrain -d cuda:0 --resize new -i model_de_segmentation.mlmodel -s '[Cr3,3,64 Do0.1]' Verite_de_terrain/*.xml

VERSIONS ET SCRIPTS D'INSTALLATION


TAGS