Outils pour utilisateurs

Outils du site


darknet_letters_unload_gpu_ram_in_python_script

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
darknet_letters_unload_gpu_ram_in_python_script [2019/11/29 16:29] – [Modifications des fichiers] sergedarknet_letters_unload_gpu_ram_in_python_script [2020/10/04 08:55] (Version actuelle) – [Compilation] serge
Ligne 1: Ligne 1:
-======Darknet Letters unload GPU RAM in python script======+======Yolo Darknet unload GPU RAM in python script======
  
-  * **Bug: Libération de la RAM GPU à la fin d'une détection en gardant le script python actif.**+  * **Ajout de la Libération de la RAM GPU à la fin d'une détection en gardant le script python actif.**
   * **unload network in python script https://github.com/AlexeyAB/darknet/issues/3467**   * **unload network in python script https://github.com/AlexeyAB/darknet/issues/3467**
 +  * Cette modification ne marche qu'avec CUDA. Sur une machine sans CUDA (pour des tests), il ne faut pas modifier darknet.py
 ====Modifications des fichiers==== ====Modifications des fichiers====
   * [[https://github.com/AlexeyAB/darknet|des sources de darknet]]   * [[https://github.com/AlexeyAB/darknet|des sources de darknet]]
Ligne 11: Ligne 11:
 void show_total_time(); void show_total_time();
  
-// ajout alexandre pour vider la memoire+// ajout serge pour vider la memoire ligne 904
 LIB_API void free_network(network net); LIB_API void free_network(network net);
  
Ligne 22: Ligne 22:
 ===./src/network.c=== ===./src/network.c===
 <code c> <code c>
 +// ajout serge pour vider la memoire ligne 1252
 +void api_free_network(network *net)
 +{
 +    int i;
 +    for (i = 0; i < (*net).n; ++i) {
 +        free_layer((*net).layers[i]);
 +    }
 +    free((*net).layers);
  
 +    free((*net).seq_scales);
 +    free((*net).scales);
 +    free((*net).steps);
 +    free((*net).seen);
  
 +#ifdef GPU
 +    if (gpu_index >= 0) cuda_free((*net).workspace);
 +    else free((*net).workspace);
 +    if ((*net).input_state_gpu) cuda_free((*net).input_state_gpu);
 +    if ((*net).input_pinned_cpu) {   // CPU
 +        if ((*net).input_pinned_cpu_flag) cudaFreeHost((*net).input_pinned_cpu);
 +        else free((*net).input_pinned_cpu);
 +    }
 +    if (*(*net).input_gpu) cuda_free(*(*net).input_gpu);
 +    if (*(*net).truth_gpu) cuda_free(*(*net).truth_gpu);
 +    if ((*net).input_gpu) free((*net).input_gpu);
 +    if ((*net).truth_gpu) free((*net).truth_gpu);
 +
 +    if (*(*net).input16_gpu) cuda_free(*(*net).input16_gpu);
 +    if (*(*net).output16_gpu) cuda_free(*(*net).output16_gpu);
 +    if ((*net).input16_gpu) free((*net).input16_gpu);
 +    if ((*net).output16_gpu) free((*net).output16_gpu);
 +    if ((*net).max_input16_size) free((*net).max_input16_size);
 +    if ((*net).max_output16_size) free((*net).max_output16_size);
 +#else
 +    free((*net).workspace);
 +#endif
 +}
 </code> </code>
 +
 ===./src/network.h=== ===./src/network.h===
 <code c> <code c>
 +void restore_network_recurrent_state(network net);
  
 +// ajout serge pour vider la memoire ligne 173
 +void api_free_network(network *net);
  
 +#ifdef __cplusplus
 +}
 +#endif
 +#endif
 </code> </code>
  
 ===./darknet.py=== ===./darknet.py===
 <code python> <code python>
-predict_image.restype = POINTER(c_float)+... 
 +... 
 +predict_image_letterbox.restype = POINTER(c_float)
  
-alexandre lien entre lib api de darknet.c et play_letters +ajout serge pour vider la memoire ligne 210 
-free_network = lib.free_network+free_network = lib.api_free_network
 free_network.argtypes = [c_void_p] free_network.argtypes = [c_void_p]
  
 def array_to_image(arr): def array_to_image(arr):
 +    import numpy as np
 +    
 +    :
 </code> </code>
  
Ligne 69: Ligne 117:
 </code> </code>
  
-{{tag> ia sb bge yolo_darknet deap_learning}}+====Fichiers modifiés==== 
 +Les fichiers modifiés le 29/11/2019 sont dans le dossier [[https://github.com/sergeLabo/darknet-letters/tree/master/issue_3467|issue_3467]] 
 + 
 +====Compilation==== 
 +Voir [[yolo_darknet_sur_un_portable_optimus#installation_de_yolo_darknet|Installation de YOLO Darknet]] 
 + 
 +Dans le dossier darknet, 
 +  make clean 
 +  make -j8 
 +   
 +Copier les fichiers darknet.py et libdarknet.so dans le dossier avec votre fichier python de détection. 
 + 
 +{{tag> ia sb bge yolo_darknet}}
darknet_letters_unload_gpu_ram_in_python_script.1575044964.txt.gz · Dernière modification : 2019/11/29 16:29 de serge