Vous êtes sur la page 1sur 4

10/19/21, 8:20 AM Inférence du modèle Detectron2 dans le système local :: InBlog

Inférence du modèle Detectron2 dans le système local


#l'apprentissage en profondeur
#detectron2
#détection d'objets
#imagesegmentation
#maskrcnn

Priyabrata Mohapatra
09 avr. 2021 · 1 min de lecture

Partagez ceci

Logo officiel Detectron2

Detectron2 est un framework publié par Facebook qui est utilisé pour la segmentation d'objets ainsi que pour la détection
d'objets. Nous pouvons facilement entraîner un modèle detectron2 avec peu d'images en moins de temps dans Google Colab.
Le référentiel officiel pour la formation est : https://colab.research.google.com/drive/16jcaJoc6bCFAQ96jDe2HwtXj7BMD_-
m5

Les vidéos expliquant la formation de Detectron se trouvent dans ce lien : https://www.youtube.com/watch?v=U1fcDAF-


whw&list=PLmQAMKHKeLZ-jKUXG1SlpjL6y1j8dFmNF

Après avoir entraîné le modèle dans Google Colab, vous pouvez voir deux fichiers dans votre répertoire de fichiers Colab. Les
deux fichiers sont le fichier config.yml qui contient la configuration du modèle entraîné et model_final.pth qui contient les
poids. Vous devez télécharger les deux fichiers.

https://inblog.in/Inference-of-Detectron2-model-in-local-system-pdBrQbYmCV 1/4
10/19/21, 8:20 AM Inférence du modèle Detectron2 dans le système local :: InBlog

fichier config.yml et fichier model_final.pth (présent dans le répertoire de sortie) à télécharger

Si vous avez monté votre Google Drive dans Colab, les deux fichiers seront présents dans votre Google Drive. Après le
téléchargement, créez un nouveau dossier et déplacez les deux fichiers que vous avez téléchargés dans ce dossier. Créez un
nouvel environnement en utilisant conda create -n your_env_name python=3.7. Activez ensuite votre environnement à l'aide
de conda activate your_env_name et installez les bibliothèques requises à l'aide des commandes ci-dessous.

pip install torch==1.7.1 (si vous rencontrez des problèmes lors de l'installation de la torche, accédez à ce lien
(https://pytorch.org/) et installez Pytorch en fonction de la configuration de votre système).

pip installer pyyaml==5.1

pip installer git+https://github.com/facebookresearch/detectron2.git

pip install opencv-python==4.5.1.48

Après avoir installé les bibliothèques, créez un nouveau fichier python et collez le code suivant

from detectron2.utils.logger import setup_logger



setup_logger()

import cv2

from detectron2.engine import DefaultPredictor

from detectron2.config import get_cfg

from detectron2.utils.visualizer import Visualizer

from detectron2.data import MetadataCatalog

config_file_path = "E:\detectron2_webapp_trained_on_custom_dataset\config.yml"

weights_path = "E:\detectron2_webapp_trained_on_custom_dataset\model_final.pth"

image_path = "E:\detectron2_webapp_trained_on_custom_dataset\test_image"

model = config_file_path

im = cv2.imread(image_path)

cfg = get_cfg()

cfg.merge_from_file(config_file_path)

cfg.MODEL.WEIGHTS = weights_path

cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.8

predictor = DefaultPredictor(cfg)

outputs = predictor(im)

MetadataCatalog.get(cfg.DATASETS.TRAIN[0]).thing_classes = ['Apple','Oranges']

v = Visualizer(im[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)

v = v.draw_instance_predictions(outputs["instances"].to("cpu"))

cv2.imshow('',v.get_image()[:, :, ::-1])

cv2.waitKey(0)

Les modifications à apporter au code sont :

A la ligne n°9, vous devez indiquer l'emplacement du fichier config.yml que vous avez téléchargé.

https://inblog.in/Inference-of-Detectron2-model-in-local-system-pdBrQbYmCV 2/4
10/19/21, 8:20 AM Inférence du modèle Detectron2 dans le système local :: InBlog

A la ligne n°11, vous devez indiquer l'emplacement du fichier de poids (model_final.pth) que vous avez téléchargé.

A la ligne n°13, vous devez indiquer l'emplacement de l'image que vous souhaitez tester.

A la ligne n°24, vous devez donner les noms des classes sur lesquelles vous vous êtes entraîné. Par exemple, si vous
avez entraîné le modèle sur la classe Cheval et Lion, vous devez changer la ligne en
MetadataCatalog.get(cfg.DATASETS.TRAIN[0]).thing_classes = ['Horse','Lion']

Après avoir apporté des modifications, vous pouvez exécuter le fichier et faire des inférences sur l'image. 

Si vous voulez faire des inférences sur une vidéo, il vous suffit d'ajouter quelques lignes de code supplémentaires. Et à la place
du chemin de l'image, vous pouvez donner le chemin de la vidéo.

from detectron2.utils.logger import setup_logger



setup_logger()

from detectron2.engine import DefaultPredictor

from detectron2.config import get_cfg

from detectron2.utils.visualizer import Visualizer

from detectron2.data import MetadataCatalog

import cv2

config_file_path = 'E:\detectron2_webapp_trained_on_custom_dataset\config3.yml'

weights_path = "E:\detectron2_webapp_trained_on_custom_dataset\model_final3.pth"

video_path = "E:\detectron2_webapp_trained_on_custom_dataset\video.mp4"

cfg = get_cfg()

model = config_file_path

cfg.merge_from_file(config_file_path)

cfg.MODEL.WEIGHTS = weights_path

cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.8

MetadataCatalog.get(cfg.DATASETS.TRAIN[0]).thing_classes = ["Apples","Oranges"]

video_capture = cv2.VideoCapture(video_path)

width, height = int(video_capture.get(cv2.CAP_PROP_FRAME_WIDTH)), int(video_capture.get(cv2.CAP_PROP_FRAME_HEIGHT))

fps = video_capture.get(cv2.CAP_PROP_FPS)

video_writer = cv2.VideoWriter("output.avi", cv2.VideoWriter_fourcc(*'MJPG'), fps, (width, height))

while video_capture.isOpened():

ret, im = video_capture.read()

if not ret:

break

predictor = DefaultPredictor(cfg)

outputs = predictor(im)

cls_ids = outputs["instances"].pred_classes.cpu().numpy()

v = Visualizer(im[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)

v = v.draw_instance_predictions(outputs["instances"].to("cpu"))

cv2.imshow('', v.get_image()[:, :, ::-1])

key=cv2.waitKey(1)

if key == ord("q"):

break

video_capture.release()

video_writer.release()

cv2.destroyAllWindows()

commentaires

https://inblog.in/Inference-of-Detectron2-model-in-local-system-pdBrQbYmCV 3/4
10/19/21, 8:20 AM Inférence du modèle Detectron2 dans le système local :: InBlog

Le plus récent

Basyiruddin Wicaksono 22/07/2021

Merci Priyabrata ! J'ai une question cependant, je n'ai pas


trouvé le config.yml sur mon répertoire de sortie. Dois-je
écrire le config.yml avec cfg.dump (comme indiqué sur votre
capture d'écran sur cette page) ? Puis-je obtenir le fichier
config.yml du zoo modèle de detectron ? Merci d'avance!

Lire la suite

Prédiction et prévisions boursières à l'aide de LSTM empilés


Prédiction et prévisions boursières à l'aide de LSTM empilés

Kishan Menaria dans l' apprentissage en profondeur


26 sept. 2020 · 1 min de lecture

Apprentissage par transfert


surya gokul dans l' apprentissage profond
17 févr. 2021 · 3 min de lecture

Le concept de LSTM
Kishan Menaria dans l' apprentissage en profondeur
28 sept. 2020 · 1 min de lecture

Réseaux Adversifs Génératifs


Shyam u dans Deep Learning
14 sept 2021 · 2 min de lecture


Copyright ©
2021 . Tous les droits sont réservés. Accueil
Nous contacter
Intimité
Termes et conditions

https://inblog.in/Inference-of-Detectron2-model-in-local-system-pdBrQbYmCV 4/4

Vous aimerez peut-être aussi