Ανίχνευση αντικειμένων και τμηματοποίηση στιγμιότυπων σε Python με Detectron2 PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Ανίχνευση αντικειμένων και τμηματοποίηση στιγμιότυπων σε Python με Detectron2

Εισαγωγή

Η ανίχνευση αντικειμένων είναι ένα μεγάλο πεδίο στην όραση υπολογιστή και μια από τις πιο σημαντικές εφαρμογές της όρασης υπολογιστή «στη φύση». Από τη μία πλευρά, μπορεί να χρησιμοποιηθεί για την κατασκευή αυτόνομων συστημάτων που πλοηγούν πράκτορες μέσα από περιβάλλοντα – είτε πρόκειται για ρομπότ που εκτελούν εργασίες είτε για αυτοοδηγούμενα αυτοκίνητα, αλλά αυτό απαιτεί διασταύρωση με άλλα πεδία. Ωστόσο, η ανίχνευση ανωμαλιών (όπως ελαττωματικά προϊόντα σε μια γραμμή), ο εντοπισμός αντικειμένων μέσα σε εικόνες, η ανίχνευση προσώπου και διάφορες άλλες εφαρμογές ανίχνευσης αντικειμένων μπορούν να γίνουν χωρίς να διασταυρωθούν άλλα πεδία.

Η ανίχνευση αντικειμένων δεν είναι τόσο τυποποιημένη όσο η ταξινόμηση εικόνων, κυρίως επειδή οι περισσότερες από τις νέες εξελίξεις γίνονται συνήθως από μεμονωμένους ερευνητές, συντηρητές και προγραμματιστές, παρά από μεγάλες βιβλιοθήκες και πλαίσια. Είναι δύσκολο να συσκευάσετε τα απαραίτητα σενάρια βοηθητικών προγραμμάτων σε ένα πλαίσιο όπως το TensorFlow ή το PyTorch και να διατηρήσετε τις οδηγίες API που καθοδηγούσαν την ανάπτυξη μέχρι στιγμής.

Αυτό καθιστά την ανίχνευση αντικειμένων κάπως πιο περίπλοκη, συνήθως πιο περιεκτική (αλλά όχι πάντα) και λιγότερο προσιτή από την ταξινόμηση εικόνων. Ένα από τα σημαντικότερα οφέλη της ύπαρξης σε ένα οικοσύστημα είναι ότι σας παρέχει έναν τρόπο να μην αναζητάτε χρήσιμες πληροφορίες σχετικά με καλές πρακτικές, εργαλεία και προσεγγίσεις χρήσης. Με την ανίχνευση αντικειμένων – οι περισσότεροι πρέπει να κάνουν πολύ περισσότερη έρευνα στο τοπίο του πεδίου για να αποκτήσουν καλή πρόσφυση.

Detectron2 του Meta AI – Τμηματοποίηση περιπτώσεων και ανίχνευση αντικειμένων

Ανιχνευτής 2 είναι το πακέτο ανίχνευσης, τμηματοποίησης και εκτίμησης πόζας αντικειμένων ανοιχτού κώδικα της Meta AI (πρώην FAIR – Facebook AI Research) – όλα σε ένα. Με δεδομένη μια εικόνα εισόδου, μπορεί να επιστρέψει τις ετικέτες, τα πλαίσια οριοθέτησης, τις βαθμολογίες εμπιστοσύνης, τις μάσκες και τους σκελετούς αντικειμένων. Αυτό αναπαρίσταται καλά στη σελίδα του αποθετηρίου:

Προορίζεται να χρησιμοποιηθεί ως βιβλιοθήκη στην κορυφή της οποίας μπορείτε να δημιουργήσετε ερευνητικά έργα. Προσφέρει α μοντέλο ζωολογικός κήπος με τις περισσότερες υλοποιήσεις να βασίζονται στο Mask R-CNN και στο R-CNN γενικά, παράλληλα με το RetinaNet. Έχουν επίσης μια αρκετά αξιοπρεπή τεκμηρίωση. Ας εκτελέσουμε ένα παραδειγματικό σενάριο συμπερασμάτων!

Αρχικά, ας εγκαταστήσουμε τις εξαρτήσεις:

$ pip install pyyaml==5.1
$ pip install 'git+https://github.com/facebookresearch/detectron2.git'

Στη συνέχεια, θα εισαγάγουμε τα βοηθητικά προγράμματα Detectron2 – εδώ μπαίνει στο παιχνίδι η γνώση του τομέα-πλαισίου. Μπορείτε να κατασκευάσετε έναν ανιχνευτή χρησιμοποιώντας το DefaultPredictor class, μεταβιβάζοντας ένα αντικείμενο διαμόρφωσης που το ρυθμίζει. ο Visualizer προσφέρει υποστήριξη για οπτικοποίηση αποτελεσμάτων. MetadataCatalog και DatasetCatalog ανήκουν στο API δεδομένων του Detectron2 και προσφέρουν πληροφορίες για ενσωματωμένα σύνολα δεδομένων καθώς και για τα μεταδεδομένα τους.

Ας εισάγουμε τις κλάσεις και τις συναρτήσεις που θα χρησιμοποιήσουμε:

import torch, detectron2
from detectron2.utils.logger import setup_logger
setup_logger()

from detectron2 import model_zoo
from detectron2.engine import DefaultPredictor
from detectron2.config import get_cfg
from detectron2.utils.visualizer import Visualizer
from detectron2.data import MetadataCatalog, DatasetCatalog

Χρησιμοποιώντας requests, θα κατεβάσουμε μια εικόνα και θα την αποθηκεύσουμε στην τοπική μας μονάδα δίσκου:

import matplotlib.pyplot as plt
import requests
response = requests.get('http://images.cocodataset.org/val2017/000000439715.jpg')
open("input.jpg", "wb").write(response.content)
    
im = cv2.imread("./input.jpg")
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(cv2.cvtColor(im, cv2.COLOR_BGR2RGB))

Αυτο εχει ως αποτελεσμα:

Ανίχνευση αντικειμένων και τμηματοποίηση στιγμιότυπων σε Python με Detectron2 PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Τώρα, φορτώνουμε τη διαμόρφωση, εφαρμόζουμε αλλαγές εάν χρειάζεται (τα μοντέλα εκτελούνται με GPU από προεπιλογή, οπότε αν δεν έχετε GPU, θα θέλετε να ρυθμίσετε τη συσκευή σε 'cpu' στη διαμόρφωση):

cfg = get_cfg()

cfg.merge_from_file(model_zoo.get_config_file("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml"))
cfg.MODEL.ROI_HEADS.SCORE_THRESH_TEST = 0.5
cfg.MODEL.WEIGHTS = model_zoo.get_checkpoint_url("COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x.yaml")


Εδώ, καθορίζουμε ποιο μοντέλο θα θέλαμε να εκτελέσουμε από το model_zoo. Έχουμε εισαγάγει ένα μοντέλο τμηματοποίησης παρουσίας, βασισμένο στην αρχιτεκτονική Mask R-CNN και με βάση το ResNet50. Ανάλογα με το τι θέλετε να επιτύχετε (ανίχνευση σημείων κλειδιού, τμηματοποίηση παρουσίας, πανοπτική τμηματοποίηση ή ανίχνευση αντικειμένων), θα φορτώσετε στο κατάλληλο μοντέλο.

Τέλος, μπορούμε να κατασκευάσουμε έναν προγνωστικό παράγοντα με αυτό cfg και τρέξε το στις εισόδους! ο Visualizer Η κλάση χρησιμοποιείται για να σχεδιάσει προβλέψεις στην εικόνα (σε αυτήν την περίπτωση, τμηματοποιημένες περιπτώσεις, κλάσεις και πλαίσια οριοθέτησης:

predictor = DefaultPredictor(cfg)
outputs = predictor(im)

v = Visualizer(im[:, :, ::-1], MetadataCatalog.get(cfg.DATASETS.TRAIN[0]), scale=1.2)
out = v.draw_instance_predictions(outputs["instances"].to("cpu"))
fig, ax = plt.subplots(figsize=(18, 8))
ax.imshow(out.get_image()[:, :, ::-1])

Τέλος, αυτό έχει ως αποτέλεσμα:

Ρίξτε μια ματιά στον πρακτικό μας οδηγό για την εκμάθηση του Git, με βέλτιστες πρακτικές, πρότυπα αποδεκτά από τον κλάδο και συμπεριλαμβανόμενο φύλλο εξαπάτησης. Σταματήστε τις εντολές του Git στο Google και πραγματικά μαθαίνουν το!

Ανίχνευση αντικειμένων και τμηματοποίηση στιγμιότυπων σε Python με Detectron2 PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Going Further – Πρακτική βαθιά μάθηση για το Computer Vision

Η περιπετειώδης φύση σας σας κάνει να θέλετε να πάτε παραπέρα; Σας προτείνουμε να ελέγξετε το δικό μας Πορεία: "Πρακτική βαθιά μάθηση για την όραση υπολογιστή με Python".

Ανίχνευση αντικειμένων και τμηματοποίηση στιγμιότυπων σε Python με Detectron2 PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Ένα άλλο μάθημα Computer Vision;

Δεν θα κάνουμε ταξινόμηση ψηφίων MNIST ή μόδας MNIST. Υπηρέτησαν το μέρος τους εδώ και πολύ καιρό. Πάρα πολλοί πόροι εκμάθησης εστιάζουν σε βασικά σύνολα δεδομένων και βασικές αρχιτεκτονικές πριν αφήσουν τις προηγμένες αρχιτεκτονικές μαύρου κουτιού να επωμιστούν το βάρος της απόδοσης.

Θέλουμε να επικεντρωθούμε απομυθοποίηση, πρακτικότητα, κατανόηση, διαίσθηση και πραγματικά έργα. Θέλω να μάθω πως μπορείς να κάνεις την διαφορά? Θα σας μεταφέρουμε από τον τρόπο με τον οποίο ο εγκέφαλός μας επεξεργάζεται εικόνες έως τη σύνταξη ενός ταξινομητή βαθιάς μάθησης για τον καρκίνο του μαστού σε δίκτυα βαθιάς μάθησης που «παραισθάνονται», διδάσκοντάς σας τις αρχές και τη θεωρία μέσω πρακτικής εργασίας, εξοπλίζοντάς σας με τεχνογνωσία και εργαλεία για να γίνετε ειδικός στην εφαρμογή της βαθιάς μάθησης για την επίλυση της όρασης υπολογιστή.

Τι είναι μέσα?

  • Οι πρώτες αρχές της όρασης και πώς οι υπολογιστές μπορούν να διδαχθούν να «βλέπουν»
  • Διαφορετικές εργασίες και εφαρμογές της όρασης υπολογιστή
  • Τα εργαλεία του εμπορίου που θα κάνουν τη δουλειά σας πιο εύκολη
  • Εύρεση, δημιουργία και χρήση συνόλων δεδομένων για την όραση υπολογιστή
  • Η θεωρία και η εφαρμογή των συνελικτικών νευρωνικών δικτύων
  • Χειρισμός μετατόπισης τομέα, συνεμφάνισης και άλλων προκαταλήψεων στα σύνολα δεδομένων
  • Μεταφέρετε τη μάθηση και χρησιμοποιείτε τον χρόνο εκπαίδευσης και τους υπολογιστικούς πόρους άλλων προς όφελός σας
  • Κατασκευή και εκπαίδευση ενός υπερσύγχρονου ταξινομητή καρκίνου του μαστού
  • Πώς να εφαρμόσετε μια υγιή δόση σκεπτικισμού στις επικρατούσες ιδέες και να κατανοήσετε τις επιπτώσεις των ευρέως υιοθετημένων τεχνικών
  • Οπτικοποίηση του «εννοιολογικού χώρου» ενός ConvNet χρησιμοποιώντας t-SNE και PCA
  • Μελέτες περίπτωσης για το πώς οι εταιρείες χρησιμοποιούν τεχνικές όρασης υπολογιστή για να επιτύχουν καλύτερα αποτελέσματα
  • Σωστή αξιολόγηση μοντέλου, οπτικοποίηση λανθάνοντος χώρου και αναγνώριση της προσοχής του μοντέλου
  • Εκτέλεση έρευνας τομέα, επεξεργασία των δικών σας συνόλων δεδομένων και δημιουργία δοκιμών μοντέλων
  • Αρχιτεκτονικές αιχμής, η εξέλιξη των ιδεών, τι τις κάνει μοναδικές και πώς να τις εφαρμόσετε
  • KerasCV – μια βιβλιοθήκη WIP για τη δημιουργία αγωγών και μοντέλων τελευταίας τεχνολογίας
  • Πώς να αναλύετε και να διαβάζετε έγγραφα και να τα εφαρμόζετε μόνοι σας
  • Επιλογή μοντέλων ανάλογα με την εφαρμογή σας
  • Δημιουργία ενός αγωγού μηχανικής εκμάθησης από άκρο σε άκρο
  • Τοπίο και διαίσθηση για την ανίχνευση αντικειμένων με ταχύτερα R-CNN, RetinaNets, SSD και YOLO
  • Παρουσίαση και σημασιολογική κατάτμηση
  • Αναγνώριση αντικειμένων σε πραγματικό χρόνο με το YOLOv5
  • Εκπαίδευση ανιχνευτών αντικειμένων YOLOv5
  • Εργασία με μετασχηματιστές χρησιμοποιώντας KerasNLP (βιβλιοθήκη WIP με αντοχή στη βιομηχανία)
  • Ενσωμάτωση Transformers με ConvNets για τη δημιουργία λεζάντων εικόνων
  • DeepDream

Συμπέρασμα

Η τμηματοποίηση του στιγμιότυπου προχωρά ένα βήμα πέρα ​​από τη σημασιολογική τμηματοποίηση και σημειώνει την ποιοτική διαφορά μεταξύ μεμονωμένων παρουσιών μιας κλάσης (άτομο 1, άτομο 2, κ.λπ.…) αντί απλώς εάν ανήκουν σε μία. Κατά κάποιο τρόπο – είναι ταξινόμηση σε επίπεδο pixel.

Σε αυτόν τον σύντομο οδηγό, ρίξαμε μια γρήγορη ματιά στον τρόπο με τον οποίο το Detectron2 κάνει την τμηματοποίηση παρουσιών και την ανίχνευση αντικειμένων εύκολη και προσβάσιμη μέσω του API του, χρησιμοποιώντας ένα Mask R-CNN.

Σφραγίδα ώρας:

Περισσότερα από Stackabuse