darknet_letters_unload_gpu_ram_in_python_script
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
darknet_letters_unload_gpu_ram_in_python_script [2019/11/29 16:29] – [Modifications des fichiers] serge | darknet_letters_unload_gpu_ram_in_python_script [2020/09/04 16:09] – [YOLO Darknet unload GPU RAM in python script] serge | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ======Darknet | + | ======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:// | * **unload network in python script https:// | ||
+ | * Cette modification ne marche qu' | ||
====Modifications des fichiers==== | ====Modifications des fichiers==== | ||
* [[https:// | * [[https:// | ||
Ligne 11: | Ligne 11: | ||
void show_total_time(); | void show_total_time(); | ||
- | // ajout alexandre | + | // ajout serge pour vider la memoire |
LIB_API void free_network(network net); | LIB_API void free_network(network net); | ||
Ligne 22: | Ligne 22: | ||
===./ | ===./ | ||
<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 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 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 | ||
+ | | ||
+ | : | ||
</ | </ | ||
Ligne 68: | Ligne 116: | ||
self.free_network(self.netMain) | self.free_network(self.netMain) | ||
</ | </ | ||
+ | |||
+ | ====Fichiers modifiés==== | ||
+ | Les fichiers modifiés le 29/11/2019 sont dans le dossier [[https:// | ||
+ | |||
+ | ====Compilation==== | ||
+ | Voir [[yolo_darknet_sur_un_portable_optimus# | ||
+ | |||
+ | 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 deap_learning}} | {{tag> ia sb bge yolo_darknet deap_learning}} |
darknet_letters_unload_gpu_ram_in_python_script.txt · Dernière modification : 2020/10/04 08:55 de serge