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

Συμπεράσματα ανίχνευσης αντικειμένων σε πραγματικό χρόνο σε Python με YOLOv7

Εισαγωγή

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

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

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

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

Σε αυτόν τον σύντομο οδηγό, θα εκτελούμε την ανίχνευση αντικειμένων σε Python, με το υπερσύγχρονο YOLOv7.

YOLO Landscape και YOLOv7

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

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

Το YOLOv5 εξακολουθεί να είναι το βασικό έργο για τη δημιουργία μοντέλων ανίχνευσης αντικειμένων και πολλά αποθετήρια που στοχεύουν στην προώθηση της μεθόδου YOLO ξεκινούν με το YOLOv5 ως βάση και προσφέρουν ένα παρόμοιο API (ή απλώς διαχωρίζουν το έργο και αναπτύσσουν πάνω του). Τέτοια είναι η περίπτωση YOLOR (Μαθαίνεις μόνο μία παράσταση) και YOLOv7 που χτίστηκε πάνω από το YOLOR (ίδιος συγγραφέας). Το YOLOv7 είναι η πιο πρόσφατη πρόοδος στη μεθοδολογία YOLO και κυρίως, το YOLOv7 παρέχει νέες κεφαλές μοντέλων, που μπορούν να εξάγουν σημεία-κλειδιά (σκελετούς) και να εκτελούν τμηματοποίηση στιγμιότυπων εκτός από τον περιορισμό της παλινδρόμησης πλαισίου, η οποία δεν ήταν τυπική με τα προηγούμενα μοντέλα YOLO.

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

Επιπλέον, το YOLOv7 αποδίδει ταχύτερα και με υψηλότερο βαθμό ακρίβειας από τα προηγούμενα μοντέλα λόγω μειωμένου αριθμού παραμέτρων και υψηλότερης υπολογιστικής απόδοσης:

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

Το ίδιο το μοντέλο δημιουργήθηκε μέσω αρχιτεκτονικών αλλαγών, καθώς και βελτιστοποίησης πτυχών της εκπαίδευσης, που ονομάστηκαν "bag-of-freebies", οι οποίες αύξησαν την ακρίβεια χωρίς να αυξάνουν το κόστος συμπερασμάτων.

Εγκατάσταση του YOLOv7

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

Σημείωση: Δυστυχώς, από τη στιγμή που γράφτηκε, το YOLOv7 δεν προσφέρει ένα καθαρό προγραμματικό API όπως το YOLOv5, το οποίο συνήθως φορτώνεται από torch.hub(), περνώντας το αποθετήριο του GitHub. Αυτό φαίνεται να είναι μια δυνατότητα που θα έπρεπε να λειτουργεί αλλά επί του παρόντος αποτυγχάνει. Καθώς διορθωθεί, θα ενημερώσω τον οδηγό ή θα δημοσιεύσω έναν νέο στο API μέσω προγραμματισμού. Προς το παρόν – θα επικεντρωθούμε στα σενάρια συμπερασμάτων που παρέχονται στο αποθετήριο.

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

Ας κατεβάσουμε το αποθετήριο και ας κάνουμε κάποια συμπεράσματα:

! git clone https://github.com/WongKinYiu/yolov7.git

Αυτό δημιουργεί ένα yolov7 στον τρέχοντα κατάλογο εργασίας σας, στον οποίο στεγάζεται το έργο. Ας μεταφερθούμε σε αυτόν τον κατάλογο και ας ρίξουμε μια ματιά στα αρχεία:

%cd yolov7
!ls
/Users/macbookpro/jup/yolov7
LICENSE.md       detect.py        models           tools
README.md        export.py        paper            train.py
cfg              figure           requirements.txt train_aux.py
data             hubconf.py       scripts          utils
deploy           inference        test.py          runs

Σημείωση: Σε ένα Σημειωματάριο Google Colab, θα πρέπει να εκτελέσετε το μαγικό %cd εντολή σε κάθε κελί στο οποίο θέλετε να αλλάξετε τον κατάλογό σας yolov7, ενώ το επόμενο κελί σας επιστρέφει στον αρχικό σας κατάλογο εργασίας. Σε τοπικούς φορητούς υπολογιστές Jupyter, αλλαγή του καταλόγου μια φορά σας κρατά σε αυτό, επομένως δεν χρειάζεται να εκδοθεί ξανά η εντολή πολλές φορές.

Η detect.py είναι τα σενάρια συμπερασμάτων που εκτελούν ανιχνεύσεις και αποθηκεύουν τα αποτελέσματα κάτω από runs/detect/video_name, όπου μπορείτε να καθορίσετε το video_name καλώντας το detect.py γραφή. export.py εξάγει το μοντέλο σε διάφορες μορφές, όπως ONNX, TFLite κ.λπ. train.py μπορεί να χρησιμοποιηθεί για την εκπαίδευση ενός προσαρμοσμένου ανιχνευτή YOLOv7 (το θέμα ενός άλλου οδηγού) και test.py μπορεί να χρησιμοποιηθεί για τη δοκιμή ενός ανιχνευτή (φορτωμένο από ένα αρχείο βαρών).

Αρκετοί επιπλέον κατάλογοι διατηρούν τις διαμορφώσεις (cfg), παραδείγματα δεδομένων (inference), δεδομένα για την κατασκευή μοντέλων και διαμορφώσεις COCO (data), Κ.λπ.

YOLOv7 Μεγέθη

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

Το YOLOv7 προσφέρει διάφορα μεγέθη και τα σημείωσε σε σχέση με το MS COCO:

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

Μοντέλο Μέγεθος δοκιμής APδοκιμή AP50 δοκιμή AP75 δοκιμή παρτίδα 1 fps παρτίδα 32 μέσος χρόνος
YOLOv7 640 51.4% 69.7% 55.9% 161 fps ms 2.8
YOLOv7-X 640 53.1% 71.2% 57.8% 114 fps ms 4.3
YOLOv7-W6 1280 54.9% 72.6% 60.1% 84 fps ms 7.6
YOLOv7-E6 1280 56.0% 73.5% 61.2% 56 fps ms 12.3
YOLOv7-D6 1280 56.6% 74.0% 61.8% 44 fps ms 15.0
YOLOv7-E6E 1280 56.8% 74.4% 62.1% 36 fps ms 18.7

Ανάλογα με το υποκείμενο υλικό στο οποίο περιμένετε να εκτελεστεί το μοντέλο και την απαιτούμενη ακρίβεια – μπορείτε να επιλέξετε μεταξύ τους. Το μικρότερο μοντέλο επιτυγχάνει πάνω από 160 FPS σε εικόνες μεγέθους 640, σε V100! Μπορείτε να περιμένετε ικανοποιητική απόδοση σε πραγματικό χρόνο και σε πιο κοινές GPUs των καταναλωτών.

Συμπεράσματα βίντεο με το YOLOv7

Δημιουργία ενός inference-data φάκελο για να αποθηκεύσετε τις εικόνες ή/και τα βίντεο από τα οποία θέλετε να εντοπίσετε. Υποθέτοντας ότι βρίσκεται στον ίδιο κατάλογο, μπορούμε να εκτελέσουμε ένα σενάριο ανίχνευσης με:

! python3 detect.py --source inference-data/busy_street.mp4 --weights yolov7.pt --name video_1 --view-img

Αυτό θα σας ζητήσει ένα βίντεο με βάση το Qt στην επιφάνεια εργασίας σας στο οποίο μπορείτε να δείτε ζωντανά την πρόοδο και τα συμπεράσματα, καρέ προς καρέ, καθώς και να εξάγετε την κατάσταση στον τυπικό σωλήνα εξόδου:

Namespace(weights=['yolov7.pt'], source='inference-data/busy_street.mp4', img_size=640, conf_thres=0.25, iou_thres=0.45, device='', view_img=True, save_txt=False, save_conf=False, nosave=False, classes=None, agnostic_nms=False, augment=False, update=False, project='runs/detect', name='video_1', exist_ok=False, no_trace=False)
YOLOR 🚀 v0.1-112-g55b90e1 torch 1.12.1 CPU

Downloading https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt to yolov7.pt...
100%|██████████████████████████████████████| 72.1M/72.1M [00:18<00:00, 4.02MB/s]

Fusing layers... 
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
RepConv.fuse_repvgg_block
Model Summary: 306 layers, 36905341 parameters, 6652669 gradients
 Convert model to Traced-model... 
 traced_script_module saved! 
 model is traced! 
 
video 1/1 (1/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1071.6ms) Inference, (2.4ms) NMS
video 1/1 (2/402) /Users/macbookpro/jup/yolov7/inference-data/busy_street.mp4: 24 persons, 1 bicycle, 8 cars, 3 traffic lights, 2 backpacks, 2 handbags, Done. (1070.8ms) Inference, (1.3ms) NMS

Λάβετε υπόψη ότι το έργο θα εκτελείται αργά σε μηχανήματα που βασίζονται σε CPU (όπως 1000ms ανά βήμα συμπερασμάτων στην παραπάνω έξοδο, σε MacBook Pro 2017 που βασίζεται σε Intel) και σημαντικά ταχύτερα σε μηχανήματα που βασίζονται σε GPU (πιο κοντά στα ~5ms/πλαίσιο σε V100). Ακόμη και σε συστήματα που βασίζονται σε CPU όπως αυτό, yolov7-tiny.pt τρέχει στις 172ms/frame, το οποίο αν και απέχει πολύ από τον πραγματικό χρόνο, είναι πολύ αξιοπρεπές για το χειρισμό αυτών των λειτουργιών σε μια CPU.

Μόλις ολοκληρωθεί η εκτέλεση, μπορείτε να βρείτε το βίντεο που προκύπτει παρακάτω runs/video_1 (το όνομα που δώσαμε στο detect.py κλήση), αποθηκεύτηκε ως .mp4:

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

Συμπεράσματα για εικόνες

Η εξαγωγή συμπερασμάτων για τις εικόνες συνοψίζεται στην ίδια διαδικασία - παροχή της διεύθυνσης URL σε μια εικόνα στο σύστημα αρχείων και κλήση detect.py:

! python3 detect.py --source inference-data/desk.jpg --weights yolov7.pt

Σημείωση: Κατά τη σύνταξη, η έξοδος δεν κλιμακώνει τις ετικέτες στο μέγεθος της εικόνας, ακόμα κι αν έχετε ορίσει --img SIZE. Αυτό σημαίνει ότι οι μεγάλες εικόνες θα έχουν πολύ λεπτές οριογραμμές και μικρές ετικέτες.

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

Συμπέρασμα

Σε αυτόν τον σύντομο οδηγό – ρίξαμε μια σύντομη ματιά στο YOLOv7, την τελευταία εξέλιξη της οικογένειας YOLO, η οποία βασίζεται στο YOLOR. Ρίξαμε μια ματιά στον τρόπο εγκατάστασης του αποθετηρίου στον τοπικό σας υπολογιστή και εκτέλεσης σεναρίων συμπερασμάτων ανίχνευσης αντικειμένων με ένα προεκπαιδευμένο δίκτυο σε βίντεο και εικόνες.

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

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

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

Συμπεράσματα ανίχνευσης αντικειμένων σε πραγματικό χρόνο σε Python με το YOLOv7 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
  • Βελτιστοποίηση μοντέλου Deep Learning για όραση υπολογιστή

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

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