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édente | ||
| darknet_letters_unload_gpu_ram_in_python_script [2019/11/29 16:28] – [Modifications des fichiers] serge | darknet_letters_unload_gpu_ram_in_python_script [2020/10/04 08:55] (Version actuelle) – [Compilation] 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 51: | Ligne 99: | ||
| ... | ... | ||
| ... | ... | ||
| + | # Définition du network | ||
| self.netMain = darknet.load_net_custom(configPath.encode(" | self.netMain = darknet.load_net_custom(configPath.encode(" | ||
| weightPath.encode(" | weightPath.encode(" | ||
| Ligne 68: | Ligne 117: | ||
| </ | </ | ||
| - | {{tag> ia sb bge yolo_darknet | + | ====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}} | ||
darknet_letters_unload_gpu_ram_in_python_script.1575044922.txt.gz · Dernière modification : de serge
