Solution d'erreur de compilation PaddleOCR C++


Préface

  Récemment, j'ai voulu essayer le raisonnement C++ de PaddleOCR, mais le processus n'a pas été aussi bon que prévu. Hormis de nombreux problèmes, parlons ici des points clés !


1. Préparation de l'environnement

1. Environnement principal

L'environnement ici fait référence à certains environnements de base utilisés par notre GPU ou CPU, tels que CUDA, cudnn, trt, etc. Ici, j'ai choisi d'utiliser l' image officielle du docker . Après avoir entré, sélectionnez simplement la version souhaitée. Il est recommandé d'utiliser la dernière version. Revenez en arrière 1-2 versions, ce sera plus stable et tout le monde le comprendra, comme indiqué ci-dessous :
Insérer la description de l'image ici

2. Téléchargement du code source

Ici, vous pouvez accéder directement à github pour télécharger le code source .

3. Téléchargement de la bibliothèque de raisonnement C++

Vous pouvez le compiler vous-même, mais préparez-vous aux plantages et aux divers timeouts de git. Cependant, si vous savez surfer scientifiquement sur Internet, il n'y a pas de gros problème. J'irai directement dans la documentation officielle pour trouver la plateforme correspondante (comme win ou linux ) . , lors de la sélection de la version ici, veillez à la faire correspondre à l'environnement de base que vous avez sélectionné dans 1.1, comme indiqué ci-dessous :
Insérer la description de l'image ici
sélectionnez la version dans le coin supérieur gauche, puis sélectionnez la plate-forme, puis sélectionnez l'inférence correspondante. bibliothèque selon qu'il s'agit d'un CPU ou d'un GPU. Remarque : Pour les bibliothèques mathématiques, il est recommandé d'utiliser MKL.

2. Message d'erreur

Une fois l'environnement configuré, démarrez Docker. Vous pouvez envisager de monter directement le code source et la bibliothèque d'inférence, puis suivre le document md dans PaddleOCR/deploy/cpp_infer étape par étape. Les bugs rencontrés lors du processus de compilation sont les suivants

1. Erreur d'appel de bibliothèque statique

L'erreur est signalée comme indiqué ci-dessous :
Insérer la description de l'image ici
 Cela est probablement dû au fait qu'il n'y a pas de libcudnn.so dans le répertoire cudnn indiqué dans CmakeLists.txt (ou tools/build.sh). Vous pouvez utiliser la commande suivante pour afficher l'emplacement spécifique de libcudnn. .donc:

find / -iname "*libcudnn.so*"

Remplacez ensuite le chemin de cudnn dans CMakeLists.txt (ou tools/build.sh).

2.ld a renvoyé 1 statut de sortie

Le rapport d'erreur détaillé est le suivant :
Insérer la description de l'image ici
Vous pouvez essayer les solutions suivantes :

  • set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -o3 ${FLAG_OPENMP} -std=c++11")Remplacez -o dans CMakeLists.txt par -O

  • Vérifiez si DWITH_GPU est activé et DWITH_STATIC_LIB est désactivé dans votre tools/build.sh.

Ici, j'ai l'impression d'avoir téléchargé l'image avec GPU, mais d'avoir défini DWITH_GPU sur OFF lors de la compilation. Les résultats normaux de la compilation sont les suivants :
Insérer la description de l'image ici


Résumer

Ce qui précède représente l'intégralité du contenu de cet article. Si vous avez des questions, n'hésitez pas à les corriger dans la zone de commentaires.

Je suppose que tu aimes

Origine blog.csdn.net/qq_55068938/article/details/131944661
conseillé
Classement