Assistant de reconnaissance de texte OCR

【Deep Learning OCR Series·7】CTC Fonction de perte et techniques d’entraînement

Les principes, la mise en œuvre et les techniques d’entraînement des fonctions de perte CTC, ainsi que les techniques de base pour résoudre les problèmes d’alignement des séquences. Plongez dans les algorithmes avant-arrière, les stratégies de décodage et les méthodes d’optimisation.

## Introduction La classification temporelle connexionniste (CTC) est une avancée majeure dans la modélisation de séquences par apprentissage profond, notamment dans le domaine de la TOC. La CTC résout le problème fondamental du décalage entre la longueur de la séquence d’entrée et celle de sortie, permettant l’apprentissage de séquences de bout en bout. Cet article va explorer les principes mathématiques, la mise en œuvre des algorithmes et les techniques d’optimisation de l’entraînement de la CTC. ## Concepts de base du CTC ### Problèmes d’alignement de la séquence Dans les tâches OCR, nous faisons face aux défis suivants : **Décalage de longueur** : La longueur de la séquence de caractéristiques de l’image d’entrée est différente de la longueur de la séquence de texte de sortie. Par exemple, un mot contenant 3 caractères peut correspondre à une séquence de caractéristiques de 100 pas de temps. **Position incertaine** : La position exacte de chaque caractère dans l’image est inconnue. Les méthodes traditionnelles nécessitent une segmentation précise des caractères, ce qui est difficile dans les applications pratiques. **Difficulté dans la segmentation des caractères** : Le texte écrit en continu, le texte manuscrit ou les polices artistiques ont du mal à se diviser précisément en caractères individuels. ### Solution du CTC Le CTC résout les problèmes d’alignement des séquences de manière innovante : Présentation des marqueurs vierges : Utilisez des marqueurs vierges spéciaux pour gérer l’alignement. Les balises vides ne correspondent à aucun caractère de sortie et servent à séparer les caractères dupliqués des séquences de remplissage. Probabilité de chemin : Calcule la probabilité de tous les chemins d’alignement possibles. Chaque chemin représente une correspondance possible entre les pas et les caractères temporels. **Planification dynamique** : Calculer efficacement les probabilités de chemin à l’aide d’algorithmes avant-arrière, en évitant d’énumérer tous les chemins possibles. ## Principes mathématiques CTC ### Définitions de base Étant donné la suite d’entrée X = (x₁, x₂, ..., xt) et la suite cible Y = (y₁, y₂, ..., yu), où T ≥ U. Ensemble de balises : L = {1, 2, ..., K}, contenant K catégories de caractères. **Collection étendue de balises** : L_ext = L ∪ {blanc}, contenant des balises vides. **Chemin d’alignement** : Une suite de longueur T π = (π₁, π₂, ..., πt), où πt ∈ L_ext. ### Cartographie des chemins vers les tags CTC définit une fonction de mappage B qui convertit le chemin d’alignement en une séquence d’étiquettes de sortie : 1. Retirer tous les marqueurs vierges 2. Fusionner des caractères doublés consécutifs **Exemple de cartographie** : - π = (a, a, blanc, b, blanc, b, b) → B(π) = (a, b, b) - π = (blanc, c, c, a, blanc, t) → B(π) = (c, a, t) ### Fonction de perte CTC La fonction de perte CTC est définie comme le logarithme négatif de la somme de toutes les probabilités de chemin mappées à la séquence cible Y : L_CTC = -log P(Y| X) = -log Σ_{π∈B⁻¹(Y)} P(π| X) où B⁻¹(Y) est l’ensemble de tous les chemins mappés à Y. Probabilité de chemin : En supposant que les prédictions de chaque pas de temps soient indépendantes, la probabilité de chemin est : P(π| X) = ∏t yt^{πt} où yt^{πt} est la probabilité que l’étape temporelle t prédise l’étiquette πt. ## Algorithme Avant-Arrière ### Algorithme de Forward L’algorithme de forward calcule la probabilité de chemin depuis le début de la séquence jusqu’à la position actuelle. **Séquence d’étiquettes étendue** : Pour faciliter le calcul, développez la séquence cible Y à Y_ext, en insérant des balises vierges avant et après chaque caractère. **Initialisation** : - α₁(1) = y₁^{blanc} (la première position est vide) - α₁(2) = y₁^{y₁} (la première position est le premier caractère) - α₁(s) = 0 pour les autres emplacements **Formule récursive** : Pour t > 1 et les positions s : - Si Y_ext[s] est vide ou identique au caractère précédent : α_t(s) = (α_{t-1}(s) + α_{t-1}(s-1)) × y_t^{Y_ext[s]} - Sinon : α_t(s) = (α_{t-1}(s) + α_{t-1}(s-1) + α_{t-1}(s-2)) × y_t^{Y_ext[s]} ### Algorithme à rebours L’algorithme rétrograde calcule la probabilité de chemin depuis la position actuelle jusqu’à la fin de la séquence. **Initialisation** : - β_T(| Y_ext|) = 1 - β_T(| Y_ext|-1) = 1 (si la dernière étiquette n’est pas vide) - β_T(s) = 0 pour les autres emplacements **Formule récursive** : Pour t < T et les positions s : - Si Y_ext [s+1] est vide ou identique au caractère courant : β_t(s) = (β_{t+1}(s) + β_{t+1}(s+1)) × y_{t+1}^{Y_ext[s+1]} - Sinon : β_t(s) = (β_{t+1}(s) + β_{t+1}(s+1) + β_{t+1}(s+2)) × y_{t+1}^{Y_ext[s+1]} ### Calcul de gradient Probabilité totale : P (Y| X) = α_T(| Y_ext|) + α_T(| Y_ext|-1) **Gradient de probabilité d’étiquette** : ∂(-en P(Y| X))/∂y_k^t = -1/P(Y| X) × Σ_{s :Y_ext[s]=k} (α_t(s) × β_t(s))/y_k^t ## Stratégie de décodage CTC ### Décodage avide Greedy décode l’étiquette avec la probabilité la plus élevée à chaque pas de temps : π_t = argmax_k y_t^k Ensuite, appliquez la correspondance B pour obtenir la séquence finale. **Avantages** : Calculs faciles et rapidité **Inconvénients** : La solution globale optimale peut ne pas être obtenue ### Décodage par recherche par faisceau La recherche par faisceau maintient plusieurs chemins candidats, développant les chemins les plus prometteurs à chaque étape temporelle. **Étapes de l’algorithme** : 1. Initialisation : La collection candidate contient des chemins vides 2. Pour chaque pas de temps : - Étendre tous les chemins candidats - Garder le K-chemin avec la probabilité la plus élevée 3. Retourner le chemin complet avec la probabilité la plus élevée **Réglage des paramètres** : - Largeur de faisceau K : équilibre la complexité de calcul avec la qualité de décodage - Pénalité de longueur : Éviter de favoriser les séquences courtes ### Recherche par fibré de préfixes La recherche par fibré de préfixes considère la probabilité d’un chemin pour éviter le double comptage des chemins avec le même préfixe. **Idée centrale** : Fusionner les chemins avec le même préfixe, et ne conserver que la méthode d’extension la plus probable. ## Techniques d’entraînement et optimisation ### Prétraitement des données **Traitement de la longueur de séquence** : - Batching dynamique : regroupement de séquences de longueur similaire - Stratégie de remplissage : remplir les courtes séquences avec des marqueurs spéciaux - Stratégie de troncature : tronquent raisonnablement les suites excessivement longues **Prétraitement des étiquettes** : - Standardisation des jeux de caractères : encodage et capitalisation uniformes des caractères - Traitement des caractères spéciaux : gère les signes de ponctuation et les espaces - Construction du vocabulaire : Construire un glossaire complet de personnages ### Stratégie d’entraînement **Apprentissage du cours** : Commencez par vous entraîner avec des échantillons simples et augmentez progressivement la difficulté : - Séquences courtes à longues - Image claire vers image floue - Polices classiques vers polices manuscrites **Amélioration des données** : - Transformations géométriques : rotation, échelle, coupe - Ajout de bruit : bruit gaussienne, bruit poivre et sel - Changements d’éclairage : luminosité, réglages du contraste **Techniques de régularisation** : - Perte : Empêcher le surajustement - Dégradation du poids : régularisation L2 - Lissage des étiquettes : Réduit la surconfiance ### Réglage des hyperparamètres **Planification du rythme d’apprentissage** : - Stratégie d’échauffement : Les premières époques utilisent un faible taux d’apprentissage - Recuissement du cosinus : Le taux d’apprentissage diminue selon la fonction cosinus - Ajustement adaptatif : ajuste en fonction de la performance de l’ensemble de validation **Sélection de la taille du lot** : - Limitations de mémoire : considérer la capacité mémoire du GPU - Stabilité du gradient : Offre un gradient plus stable pour les lots plus importants - Vitesse de convergence : équilibre vitesse d’entraînement et stabilité ## Considérations d’application pratique ### Optimisation computationnelle **Optimisation de la mémoire** : - Points de contrôle de gradient : Réduit l’empreinte mémoire de la propagation directe - Entraînement en précision mixte : réduire les besoins en mémoire avec FP16 - Optimisation dynamique des graphes : Optimise l’allocation mémoire pour les graphes calculés **Optimisation de la vitesse** : - Calcul parallèle : Utilise les capacités de traitement parallèle GPU - Optimisation des algorithmes : mise en œuvre à l’aide d’algorithmes efficaces d’avant en arrière - Optimisation des lots : Définir les tailles des lots de manière appropriée ### Stabilité numérique **Calcul de probabilité** : - Calcul en espace logarithmique : Éviter le débordement de valeurs causé par la multiplication de probabilité - Éclatement numérique : limite la plage des valeurs de probabilité - Techniques de normalisation : Assurer la validité des distributions de probabilité **Stabilité du gradient** : - Recadrage en gradient : Empêche les explosions de gradient - Initialisation des poids : Utiliser une stratégie d’initialisation appropriée - Normalisation par lots : stabilise le processus d’entraînement ## Évaluation des performances ### Évaluer les indicateurs **Précision au niveau des personnages** : Accuracy_char = Nombre de caractères correctement reconnus / Nombre total de caractères **Précision au niveau sériel** : Accuracy_seq = nombre de séquences exactement correctes / nombre total de séquences **Distance de montage** : Mesure la différence entre la séquence prédite et la séquence réelle, y compris le nombre minimum d’opérations d’insertion, de suppression et de remplacement. ### Analyse d’erreur **Types d’erreurs courants** : - Confusion de personnages : Mauvaise identification de caractères similaires - Erreurs dupliquées : Les CTC ont tendance à produire des caractères dupliqués - Erreur de longueur : prédictions de longueur de séquence inexactes **Stratégies d’amélioration** : - Extraction d’échantillons difficile : Accent sur l’entraînement des échantillons avec des taux d’erreur élevés - Optimisation post-traitement : Corrige les erreurs à l’aide de modèles de langage - Approche intégrée : Combinaison de prédictions provenant de plusieurs modèles ## Résumé La fonction de perte CTC fournit un outil puissant pour la modélisation des séquences, notamment lorsqu’il s’agit de problèmes d’alignement. En introduisant l’étiquetage blanc et des algorithmes de programmation dynamique, le CTC permet un apprentissage de séquences de bout en bout et évite des étapes complexes de prétraitement. **Points clés** : - CTC résout le problème des longueurs de séquence d’entrée et de sortie incompatibles - Les algorithmes avant-arrière fournissent des calculs de probabilité efficaces - Une stratégie de décodage appropriée est cruciale pour la performance finale - Les techniques d’entraînement et les stratégies d’optimisation impactent significativement la performance du modèle **Suggestions de candidature** : - Choisir la stratégie de décodage appropriée pour la tâche spécifique - Accent mis sur le prétraitement des données et les techniques d’amélioration - Accent sur la stabilité numérique et l’efficacité de calcul - Optimisation post-traitement basée sur la connaissance du domaine L’application réussie de la CTC a posé une base importante pour le développement de l’apprentissage profond dans le domaine de la modélisation des séquences, et a également apporté un soutien clé au progrès de la technologie OCR.
Assistant OCR QQ service client en ligne
Service client QQ(365833440)
Groupe de communication utilisateur de l’assistant OCR QQ
QQGroupe(100029010)
Assistant OCR contactez le service client par email
Boîte aux lettres:net10010@qq.com

Merci pour vos commentaires et suggestions !