Zephyrnet-logo

Extractie van objecten in afbeeldingen en video's met behulp van 5 regels code

Datum:

Extractie van objecten in afbeeldingen en video's met behulp van 5 regels code

PixelLib is een bibliotheek die is gemaakt voor eenvoudige integratie van beeld- en videosegmentatie in echte toepassingen. Leer PixelLib gebruiken om objecten uit afbeeldingen en video's te extraheren met minimale code.


By Ayoola Olafenwa, Onafhankelijk AI-onderzoeker



Originele foto door Joanna Nix-Walkup op Unsplash

 

Computervisie is het medium waarmee computers objecten zien en identificeren. Het doel van computer vision is om het voor computers mogelijk te maken objecten in afbeeldingen en video's te analyseren, om verschillende zichtproblemen op te lossen. Objectsegmentatie heeft de weg geëffend voor een gemakkelijke analyse van objecten in afbeeldingen en video's, en heeft een enorme bijdrage geleverd aan verschillende gebieden, zoals de medische sector, het gezichtsvermogen in zelfrijdende auto's en het bewerken van de achtergrond in afbeeldingen en video's.

PixelLib is een bibliotheek die is gemaakt voor eenvoudige integratie van beeld- en videosegmentatie in echte toepassingen. PixelLib heeft de krachtige technieken van objectsegmentatie gebruikt om computervisie voor iedereen toegankelijk te maken. Ik ben verheugd om aan te kondigen dat de nieuwe versie van PixelLib de analyse van objecten in computer vision eenvoudiger dan ooit heeft gemaakt. PixelLib maakt gebruik van segmentatietechnieken om de extractie van objecten in afbeeldingen en video's te implementeren met behulp van vijf regels code.

Installeer PixelLib en zijn afhankelijkheden:

 
Installeer Tensorflow met:(PixelLib ondersteunt tensorflow 2.0 en hoger)

pip3 installeer tensorflow


Installeer PixelLib met

pip3 installeer pixellib


Indien geïnstalleerd, upgrade naar de nieuwste versie met behulp van:

pip3 installeer pixellib - upgrade


Objectextractie in afbeeldingen met behulp van het masker R-CNN COCO-model

import pixellibfrom pixellib.instance import instance_segmentationsegment_image=instance_segmentation()
segment_image.load_model(“mask_rcnn_coco.h5”)


Lijn 1-4: We hebben het PixelLib-pakket geïmporteerd, een exemplaar gemaakt van het instantiesegmentatieklasse en laadde het voorgetrainde Coco-model. Download het model van hier.

segment_image.segmentImage("image_path", extract_segmented_objects=True, save_extracted_objects=True, show_bboxes=True, output_image_name="output.jpg")


Dit is de laatste regel van de code, waar we de functie hebben aangeroepen segmentAfbeelding met de volgende parameters:

  • afbeeldingspad: Dit is het pad naar de afbeelding die moet worden gesegmenteerd.
  • extract_gesegmenteerde_objecten: Dit is de parameter die de functie vertelt de objecten te extraheren die in de afbeelding zijn gesegmenteerd en waarop deze is ingesteld waar.
  • opgeslagen_geëxtraheerde_objecten: Dit is een optionele parameter voor het opslaan van de geëxtraheerde gesegmenteerde objecten.
  • show_bboxes: This is de parameter die gesegmenteerde objecten met selectiekaders toont. Als deze is ingesteld op false, worden alleen de segmentatiemaskers weergegeven.
  • uitvoer_afbeeldingsnaam: Dit is het pad om de uitvoerafbeelding op te slaan.

Voorbeeldafbeelding:



Bron: Door Paul Krueger (CCO)

 

Volledige code voor objectextractie:

 

Uitvoerbeeld:




 

Geëxtraheerde objecten uit de afbeelding:


    

 

Opmerking: Alle objecten in de afbeelding worden geëxtraheerd en afzonderlijk als afbeelding opgeslagen. Ik heb er maar een paar getoond.

Segmentatie van specifieke klassen in het Coco-model

 
We maken gebruik van een voorgetraind Mask R-CNN-cocomodel om beeldsegmentatie uit te voeren. Het Coco-model ondersteunt 80 klassen objecten, maar in sommige toepassingen willen we misschien niet alle objecten die het ondersteunt segmenteren. Daarom heeft PixelLib het mogelijk gemaakt om ongebruikte detecties te filteren en specifieke klassen te segmenteren.

Gewijzigde code voor het segmenteren van specifieke klassen

target_classes = segment_image.select_target_classes(person=True)


Het is nog steeds dezelfde code, behalve dat we een nieuwe functie hebben genoemd select_target_classes, om ongebruikte detecties te filteren en alleen onze doelklasse te segmenteren persoon.

segment_image.segmentImage("sample.jpg", segment_target_classes=target_classes, extract_segmented_objects=True,save_extracted_objects=True, show_bboxes=True, output_image_name="output.jpg")


In het segmentAfbeelding functie introduceerden we een nieuwe parameter genaamd segment_target_classes, om segmentatie uit te voeren op de doelklasse aangeroepen vanuit de select_target_classes functie.



Wauw! we konden alleen de mensen op deze afbeelding detecteren.

Wat als we alleen geïnteresseerd zijn in het detecteren van de transportmiddelen van de mensen op deze foto?

target_classes = segment_image.select_target_classes(car=True, bicycle = True)


We hebben de doelklasse gewijzigd van persoon naar auto en fiets.


Prachtig resultaat! We hebben alleen de fietsen en auto's gedetecteerd die op deze foto beschikbaar zijn.

Opmerking: Als u detecties van kokosmodellen filtert, worden de objecten van de doelklasse, gesegmenteerd in de afbeelding, geëxtraheerd.

Objectextractie in video's met behulp van het Coco-model

 
PixelLib ondersteunt de extractie van gesegmenteerde objecten in video's en camerafeeds.

 
Voorbeeldvideo:


 

segment_video.process_video("sample.mp4", show_bboxes=True, extract_segmented_objects=True, save_extracted_objects=True, frames_per_second= 5, output_video_name="output.mp4")


Het is nog steeds dezelfde code, behalve dat we de functie hebben gewijzigd van segmentAfbeelding naar proces_video. Er zijn de volgende parameters nodig:

  • show_bboxes: This is de parameter die gesegmenteerde objecten met selectiekaders toont. Als deze is ingesteld op false, worden alleen de segmentatiemaskers weergegeven.
  • beelden per seconde: Dit is de parameter die het aantal frames per seconde voor het opgeslagen videobestand instelt. In dit geval is deze ingesteld op 5, dwz dat het opgeslagen videobestand 5 frames per seconde heeft.
  • extract_gesegmenteerde_objecten: Dit is de parameter die de functie vertelt de objecten te extraheren die in de afbeelding zijn gesegmenteerd en waarop deze is ingesteld waar.
  • opgeslagen_geëxtraheerde_objecten: Dit is een optionele parameter voor het opslaan van de geëxtraheerde gesegmenteerde objecten.
  • uitvoer_video_naam: Dit is de naam van de opgeslagen persoon gesegmenteerde video.

 
Uitvoervideo:


 

 
Geëxtraheerde objecten uit de video:

    

 

Opmerking: Alle objecten in de video worden geëxtraheerd en afzonderlijk als afbeelding opgeslagen. Ik heb er slechts enkele getoond.

Segmentatie van specifieke klassen in video's

PixelLib maakt het mogelijk om ongebruikte detecties te filteren en specifieke klassen in video's en camerafeeds te segmenteren.

target_classes = segment_video.select_target_classes(person=True) segment_video.process_video("sample.mp4", show_bboxes=True, segment_target_classes= target_classes, extract_segmented_objects=True, save_extracted_objects=True, frames_per_second= 5, output_video_name="output.mp4")




De doelklasse voor detectie is ingesteld op persoon en we konden alleen de mensen in de video segmenteren.

target_classes = segment_video.select_target_classes(car = True) segment_video.process_video("sample.mp4", show_bboxes=True, segment_target_classes= target_classes, extract_segmented_objects=True, save_extracted_objects=True, frames_per_second= 5, output_video_name="output.mp4")





 

De doelklasse voor segmentatie is ingesteld op auto en we konden alleen de auto's in de video segmenteren.

 
Volledige code voor het segmenteren van specifieke klassen en objectextractie in video's

 
Volledige code voor het segmenteren van specifieke klassen en objectextractie in camerafeeds

import cv2 capture = cv2.VideoCapture(0)


We hebben cv2 geïmporteerd en de code toegevoegd om de cameraframes vast te leggen.

segment_camera.process_camera(capture, show_bboxes=True, show_frames=True, extract_segmented_objects=True, save_extracted_objects=True, frame_name="frame", frames_per_second=5, output_video_name="output.mp4")


In de code voor het uitvoeren van segmentatie hebben we het bestandspad van de video vervangen door vast te leggen, dwz we verwerken een stroom frames die door de camera zijn vastgelegd. We hebben extra parameters toegevoegd om de frames van de camera weer te geven:

  • show_frames: Dit is de parameter die de weergave van gesegmenteerde cameraframes regelt.
  • framenaam: Dit is de naam die aan het weergegeven cameraframe is gegeven.

Objectextractie in afbeeldingen met behulp van aangepaste modellen die zijn getraind met PixelLib

 
PixelLib ondersteunt training van een aangepast segmentatiemodel en het is mogelijk om objecten te extraheren die zijn gesegmenteerd met een aangepast model.

importeer pixellib uit pixellib.instance importeer custom_segmentation segment_image = custom_segmentation() segment_image.inferConfig(num_classes=2, class_names=['BG', 'vlinder', 'eekhoorn']) segment_image.load_model("Nature_model_resnet101.h5")


Lijn 1-4: We hebben het PixelLib-pakket geïmporteerd, een exemplaar gemaakt van het gewoonte segmentatie klasse, de inferentieconfiguratiefunctie genoemd (inferConfig) en laadde het aangepaste model. Download het aangepaste model van hier. Het aangepaste model ondersteunt twee klassen, die als volgt zijn:

  • Vlinder
  • Eekhoorn
segment_image.segmentImage("image_path", extract_segmented_objects=True, save_extracted_objects=True, show_bboxes=True, output_image_name="output.jpg")


We hebben dezelfde functie genoemd segmentAfbeelding gebruikt voor detectie van kokosmodellen.

 
Volledige code voor objectextractie met een aangepast model

 
Voorbeeldafbeelding:



Bron: Door Peter Trimming op Wikicommons (CCO)

 

Output:

Figuur
Geëxtraheerd object uit de afbeelding

 

Beeld
 

Objectextractie in video's met behulp van een aangepast model dat is getraind met PixelLib

 
Voorbeeldvideo:

 
Volledige code voor objectextractie in video's met behulp van een aangepast model.

 

 
Output:

 
Geëxtraheerde objecten:

  

 
Volledige code voor objectextractie in camerafeeds met behulp van een aangepast model

Lees dit artikel om te leren hoe u een aangepast model traint met PixelLib:

Aangepaste instance-segmentatietraining met 7 regels code.

 
Bereik mij via:

 
Bekijk deze artikelen over hoe u PixelLib kunt gebruiken voor semantische segmentatie, instantiesegmentatie en achtergrondbewerking in afbeeldingen en video's.

 
Bio: Ayoola Olafenwa is een onafhankelijke AI-onderzoeker die gespecialiseerd is op het gebied van computervisie.

ORIGINELE. Met toestemming opnieuw gepost.

Zie ook:

Coinsmart. Beste Bitcoin-beurs in Europa
Bron: https://www.kdnuggets.com/2021/03/extraction-objects-images-videos-5-lines-code.html

spot_img

Laatste intelligentie

spot_img