Priyabrata Mohapatra
09 avr. 2021 · 1 min de lecture
Partagez ceci
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
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
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).
Après avoir installé les bibliothèques, créez un nouveau fichier python et collez le code suivant
import cv2
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 = v.draw_instance_predictions(outputs["instances"].to("cpu"))
cv2.imshow('',v.get_image()[:, :, ::-1])
cv2.waitKey(0)
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.
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)
fps = video_capture.get(cv2.CAP_PROP_FPS)
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 = v.draw_instance_predictions(outputs["instances"].to("cpu"))
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
Lire la suite
Le concept de LSTM
Kishan Menaria dans l' apprentissage en profondeur
28 sept. 2020 · 1 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