Συμπεράσματα ανίχνευσης αντικειμένων σε Python με YOLOv5 και PyTorch PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Συμπεράσματα ανίχνευσης αντικειμένων σε Python με YOLOv5 και PyTorch

Εισαγωγή

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

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

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

Ευτυχώς για τις μάζες – η Ultralytics έχει αναπτύξει ένα απλό, πολύ ισχυρό και όμορφο API ανίχνευσης αντικειμένων γύρω από την εφαρμογή YOLOv5.

Σε αυτόν τον σύντομο οδηγό, θα εκτελούμε Ανίχνευση αντικειμένων στην Python, με το YOLOv5 που κατασκευάστηκε από την Ultralytics στο PyTorch, χρησιμοποιώντας ένα σύνολο προεκπαιδευμένων βαρών που έχουν εκπαιδευτεί στο MS COCO.

YOLOv5

YOLO (Μόνο μια φορά κοιτάς) είναι μια μεθοδολογία, καθώς και μια οικογένεια μοντέλων που έχουν κατασκευαστεί για την ανίχνευση αντικειμένων. Από την αρχή το 2015, τα YOLOv1, YOLOv2 (YOLO9000) και YOLOv3 έχουν προταθεί από τους ίδιους συγγραφείς – και η κοινότητα βαθιάς μάθησης συνέχισε με προόδους ανοιχτού κώδικα τα επόμενα χρόνια.

YOLOv5 της Ultralytics είναι η πρώτη μεγάλης κλίμακας υλοποίηση του YOLO στο PyTorch, που το έκανε πιο προσιτό από ποτέ, αλλά ο κύριος λόγος που το YOLOv5 έχει αποκτήσει τέτοια βάση είναι επίσης το όμορφα απλό και ισχυρό API που έχει χτιστεί γύρω του. Το έργο αφαιρεί τις περιττές λεπτομέρειες, ενώ επιτρέπει την εξατομίκευση, πρακτικά όλες τις χρησιμοποιήσιμες μορφές εξαγωγής, και χρησιμοποιεί εκπληκτικές πρακτικές που κάνουν ολόκληρο το έργο τόσο αποτελεσματικό όσο και όσο το δυνατόν βέλτιστο. Πραγματικά, είναι ένα παράδειγμα της ομορφιάς της εφαρμογής λογισμικού ανοιχτού κώδικα και του τρόπου με τον οποίο τροφοδοτεί τον κόσμο στον οποίο ζούμε.

Το έργο παρέχει προεκπαιδευμένα βάρη στο MS COCO, ένα βασικό σύνολο δεδομένων για αντικείμενα στο περιβάλλον, το οποίο μπορεί να χρησιμοποιηθεί τόσο για τη συγκριτική αξιολόγηση όσο και για τη δημιουργία γενικών συστημάτων ανίχνευσης αντικειμένων – αλλά το πιο σημαντικό, μπορεί να χρησιμοποιηθεί για τη μεταφορά γενικής γνώσης των αντικειμένων σε περιβάλλον σε προσαρμοσμένο σύνολα δεδομένων.

Ανίχνευση αντικειμένων με το YOLOv5

Πριν προχωρήσετε, βεβαιωθείτε ότι έχετε torch και torchvision εγκατεστημένα:

! python -m pip install torch torchvision

Το YOLOv5 έχει λεπτομερή, χωρίς νόημα τεκμηρίωση και ένα όμορφα απλό API, όπως φαίνεται στο ίδιο το repo και στο ακόλουθο παράδειγμα:

import torch

model = torch.hub.load('ultralytics/yolov5', 'yolov5s')
img = 'https://i.ytimg.com/vi/q71MCWAEfL8/maxresdefault.jpg'  
results = model(img)
fig, ax = plt.subplots(figsize=(16, 12))
ax.imshow(results.render()[0])
plt.show()

Το δεύτερο επιχείρημα των hub.load() Η μέθοδος καθορίζει τα βάρη που θα θέλαμε να χρησιμοποιήσουμε. Επιλέγοντας οπουδήποτε μεταξύ yolov5n προς την yolov5l6 – φορτώνουμε στα προεκπαιδευμένα βάρη MS COCO. Για προσαρμοσμένα μοντέλα:

model = torch.hub.load('ultralytics/yolov5', 'custom', path='path_to_weights.pt')

Σε κάθε περίπτωση – μόλις περάσετε την είσοδο μέσω του μοντέλου, το επιστρεφόμενο αντικείμενο περιλαμβάνει χρήσιμες μεθόδους για την ερμηνεία των αποτελεσμάτων και επιλέξαμε να render() τους, ο οποίος επιστρέφει έναν πίνακα NumPy τον οποίο μπορούμε να βάλουμε σε ένα imshow() κλήση. Αυτό έχει ως αποτέλεσμα ένα όμορφα διαμορφωμένο:

Αποθήκευση αποτελεσμάτων ως αρχεία

Μπορείτε να αποθηκεύσετε τα αποτελέσματα του συμπεράσματος ως αρχείο, χρησιμοποιώντας το results.save() μέθοδος:

results.save(save_dir='results')

Αυτό θα δημιουργήσει έναν νέο κατάλογο εάν δεν υπάρχει ήδη και θα αποθηκεύσει την ίδια εικόνα που μόλις σχεδιάσαμε ως αρχείο.

Περικοπή αντικειμένων

Μπορείτε επίσης να αποφασίσετε να περικόψετε τα αντικείμενα που εντοπίστηκαν ως μεμονωμένα αρχεία. Στην περίπτωσή μας, για κάθε ετικέτα που ανιχνεύεται, μπορεί να εξαχθεί ένας αριθμός εικόνων. Αυτό επιτυγχάνεται εύκολα μέσω του results.crop() μέθοδος, η οποία δημιουργεί α runs/detect/ κατάλογο, με expN/crops (όπου το N αυξάνεται για κάθε εκτέλεση), στον οποίο δημιουργείται ένας κατάλογος με περικομμένες εικόνες για κάθε ετικέτα:

results.crop()
Saved 1 image to runs/detect/exp2
Saved results to runs/detect/exp2

[{'box': [tensor(295.09409),
   tensor(277.03699),
   tensor(514.16113),
   tensor(494.83691)],
  'conf': tensor(0.25112),
  'cls': tensor(0.),
  'label': 'person 0.25',
  'im': array([[[167, 186, 165],
          [174, 184, 167],
          [173, 184, 164],

Μπορείτε επίσης να επαληθεύσετε τη δομή του αρχείου εξόδου με:

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

! ls runs/detect/exp2/crops


! ls runs/detect/exp2/crops

Καταμέτρηση αντικειμένων

Από προεπιλογή, όταν εκτελείτε εντοπισμό ή εκτυπώνετε το results αντικείμενο – θα λάβετε τον αριθμό των εικόνων στις οποίες έγινε το συμπέρασμα για αυτό results αντικείμενο (Το YOLOv5 λειτουργεί και με παρτίδες εικόνων), η ανάλυσή του και ο αριθμός κάθε ετικέτας που ανιχνεύεται:

print(results)

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

image 1/1: 720x1280 14 persons, 1 car, 3 buss, 6 traffic lights, 1 backpack, 1 umbrella, 1 handbag
Speed: 35.0ms pre-process, 256.2ms inference, 0.7ms NMS per image at shape (1, 3, 384, 640)

Συμπεράσματα με σενάρια

Εναλλακτικά, μπορείτε να εκτελέσετε το σενάριο ανίχνευσης, detect.py, κλωνοποιώντας το αποθετήριο YOLOv5:

$ git clone https://github.com/ultralytics/yolov5 
$ cd yolov5
$ pip install -r requirements.txt

Και μετά τρέξιμο:

$ python detect.py --source img.jpg

Εναλλακτικά, μπορείτε να παρέχετε μια διεύθυνση URL, ένα αρχείο βίντεο, μια διαδρομή σε έναν κατάλογο με πολλά αρχεία, μια σφαίρα σε μια διαδρομή για αντιστοίχιση μόνο για ορισμένα αρχεία, έναν σύνδεσμο YouTube ή οποιαδήποτε άλλη ροή HTTP. Τα αποτελέσματα αποθηκεύονται στο runs/detect Κατάλογο.

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

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

Συμπεράσματα ανίχνευσης αντικειμένων σε Python με YOLOv5 και PyTorch 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

Συμπέρασμα

Σε αυτόν τον σύντομο οδηγό, ρίξαμε μια ματιά στο πώς μπορείτε να εκτελέσετε ανίχνευση αντικειμένων με το YOLOv5 που έχει δημιουργηθεί χρησιμοποιώντας το PyTorch.

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

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