Πώς να εκπαιδεύσετε ένα προσαρμοσμένο σύνολο δεδομένων με το YOLOv5;

Πώς να εκπαιδεύσετε ένα προσαρμοσμένο σύνολο δεδομένων με το YOLOv5;

Κόμβος πηγής: 1953267

Εισαγωγή

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

You Only Look Once, ή YOLO είναι μια από τις πιο ευρέως χρησιμοποιούμενες μεθόδους αναγνώρισης αντικειμένων που βασίζονται σε βαθιά μάθηση. Χρησιμοποιώντας ένα προσαρμοσμένο σύνολο δεδομένων, αυτό το άρθρο θα σας δείξει πώς να εκπαιδεύσετε μια από τις πιο πρόσφατες παραλλαγές του, το YOLOv5.

Στόχοι μάθησης 

  1. Αυτό το άρθρο θα επικεντρωθεί κυρίως στην εκπαίδευση του μοντέλου YOLOv5 σε μια προσαρμοσμένη εφαρμογή δεδομένων.
  2. Θα δούμε τι είναι τα προεκπαιδευμένα μοντέλα και θα δούμε τι είναι η μάθηση μεταφοράς.
  3. Θα καταλάβουμε τι είναι το YOLOv5 και γιατί χρησιμοποιούμε την έκδοση 5 του YOLO.

Έτσι, χωρίς να χάνουμε χρόνο, ας ξεκινήσουμε τη διαδικασία

Πίνακας Περιεχομένων

  1. Προ-εκπαιδευμένα μοντέλα
  2. Μεταφορά μάθησης
  3. Τι και γιατί YOLOv5;
  4. Βήματα που εμπλέκονται στη μάθηση μεταφοράς
  5. Εκτέλεση
  6. Μερικές προκλήσεις που μπορείτε να αντιμετωπίσετε
  7. Συμπέρασμα

Προεκπαιδευμένα Μοντέλα

Ίσως έχετε ακούσει ότι οι επιστήμονες δεδομένων χρησιμοποιούν ευρέως τον όρο «προεκπαιδευμένο μοντέλο». Αφού εξηγήσω τι κάνει ένα μοντέλο/δίκτυο βαθιάς μάθησης, θα εξηγήσω τον όρο. Ένα μοντέλο βαθιάς μάθησης είναι ένα μοντέλο που περιέχει διάφορα επίπεδα στοιβαγμένα μεταξύ τους, ώστε να εξυπηρετεί έναν μοναδικό σκοπό, όπως ταξινόμηση, ανίχνευση κ.λπ. Τα δίκτυα βαθιάς μάθησης μαθαίνουν ανακαλύπτοντας περίπλοκες δομές στα δεδομένα που τους τροφοδοτούνται και αποθηκεύοντας τα βάρη σε ένα αρχείο που χρησιμοποιούνται αργότερα για την εκτέλεση παρόμοιων εργασιών. Τα προεκπαιδευμένα μοντέλα είναι ήδη εκπαιδευμένα μοντέλα Deep Learning. Αυτό σημαίνει ότι είναι ήδη εκπαιδευμένοι σε ένα τεράστιο σύνολο δεδομένων που περιέχει εκατομμύρια εικόνες.

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

Ορισμένα εξαιρετικά βελτιστοποιημένα και εξαιρετικά αποτελεσματικά προ-εκπαιδευμένα μοντέλα είναι διαθέσιμα στο διαδίκτυο. Χρησιμοποιούνται διαφορετικά μοντέλα για την εκτέλεση διαφορετικών εργασιών. Μερικά από τα προεκπαιδευμένα μοντέλα είναι τα VGG-16, VGG-19, YOLOv5, YOLOv3 και ResNet 50.

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

Μεταφορά μάθησης

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

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

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

Τι και γιατί YOLOv5;

Το YOLOv5 είναι ένα προ-εκπαιδευμένο μοντέλο που σημαίνει ότι κοιτάτε μόνο όταν χρησιμοποιείται η έκδοση 5 για ανίχνευση αντικειμένων σε πραγματικό χρόνο και έχει αποδειχθεί εξαιρετικά αποτελεσματικό όσον αφορά την ακρίβεια και τον χρόνο συμπερασμάτων. Υπάρχουν και άλλες εκδόσεις του YOLO, αλλά όπως θα προέβλεπε κανείς, το YOLOv5 αποδίδει καλύτερα από άλλες εκδόσεις. Το YOLOv5 είναι γρήγορο και εύκολο στη χρήση. Βασίζεται στο πλαίσιο PyTorch, το οποίο έχει μεγαλύτερη κοινότητα από το Yolo v4 Darknet.

Yolov5

Θα δούμε τώρα την αρχιτεκτονική του YOLOv5.

Η δομή μπορεί να φαίνεται συγκεχυμένη, αλλά δεν έχει σημασία, καθώς δεν χρειάζεται να εξετάσουμε την αρχιτεκτονική αντί να χρησιμοποιήσουμε απευθείας το μοντέλο και τα βάρη.

Στην εκμάθηση μεταφοράς, χρησιμοποιούμε το προσαρμοσμένο σύνολο δεδομένων, δηλαδή τα δεδομένα που το μοντέλο δεν έχει δει ποτέ πριν Ή τα δεδομένα στα οποία το μοντέλο δεν έχει εκπαιδευτεί. Εφόσον το μοντέλο έχει ήδη εκπαιδευτεί σε ένα μεγάλο σύνολο δεδομένων, έχουμε ήδη τα βάρη. Μπορούμε τώρα να εκπαιδεύσουμε το μοντέλο για μια σειρά από εποχές στα δεδομένα που θέλουμε να εργαστούμε. Απαιτείται εκπαίδευση καθώς το μοντέλο έχει δει τα δεδομένα για πρώτη φορά και θα απαιτήσει κάποιες γνώσεις για να εκτελέσει την εργασία.

Βήματα που εμπλέκονται στη μάθηση μεταφοράς

Η μάθηση με μεταφορά είναι μια απλή διαδικασία και μπορούμε να την κάνουμε με μερικά απλά βήματα:

  1. Προετοιμασία δεδομένων
  2. Η σωστή μορφή για τους σχολιασμούς
  3. Αλλάξτε μερικά στρώματα αν θέλετε
  4. Εκπαιδεύστε ξανά το μοντέλο για μερικές επαναλήψεις
  5. Επικύρωση/Δοκιμή

Προετοιμασία δεδομένων

Η προετοιμασία δεδομένων μπορεί να είναι χρονοβόρα εάν τα δεδομένα που έχετε επιλέξει είναι λίγο μεγάλα. Προετοιμασία δεδομένων σημαίνει σχολιασμός των εικόνων, η οποία είναι μια διαδικασία κατά την οποία επισημαίνετε τις εικόνες δημιουργώντας ένα πλαίσιο γύρω από το αντικείμενο της εικόνας. Με αυτόν τον τρόπο, οι συντεταγμένες του αντικειμένου που επισημαίνεται θα αποθηκευτούν σε ένα αρχείο το οποίο στη συνέχεια θα τροφοδοτηθεί στο μοντέλο για εκπαίδευση. Υπάρχουν μερικές ιστοσελίδες, όπως π.χ makeense.αι και roboflow.com, που μπορεί να σας βοηθήσει να ονομάσετε τα δεδομένα. 

Δείτε πώς μπορείτε να σχολιάσετε τα δεδομένα για το μοντέλο YOLOv5 στο makeense.ai.

1. Επίσκεψη https://www.makesense.ai/. 

2. Κάντε κλικ στο ξεκίνημα κάτω δεξιά στην οθόνη.

Yolov5

3. Επιλέξτε τις εικόνες που θέλετε να επισημάνετε κάνοντας κλικ στο πλαίσιο που επισημαίνεται στο κέντρο.

Φορτώστε τις εικόνες που θέλετε να σχολιάσετε και κάντε κλικ στην ανίχνευση αντικειμένων.
Yolov5

4. Μετά τη φόρτωση των εικόνων, θα σας ζητηθεί να δημιουργήσετε ετικέτες για τις διαφορετικές κλάσεις του συνόλου δεδομένων σας.

Ανιχνεύω πινακίδες κυκλοφορίας σε ένα όχημα, επομένως η μόνη ετικέτα που θα χρησιμοποιήσω είναι "Πινακίδα κυκλοφορίας". Μπορείτε να δημιουργήσετε περισσότερες ετικέτες πατώντας απλώς enter κάνοντας κλικ στο κουμπί '+' στην αριστερή πλευρά του πλαισίου διαλόγου.

Αφού δημιουργήσετε όλες τις ετικέτες, κάντε κλικ στην έναρξη του έργου.

Yolov5

Εάν χάσατε κάποιες ετικέτες, μπορείτε να τις επεξεργαστείτε αργότερα κάνοντας κλικ στις ενέργειες και στη συνέχεια να επεξεργαστείτε ετικέτες.

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

κουτί οριοθέτησης

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

Επομένως, πρέπει να κατευθυνθείτε στο κουμπί ενεργειών και να κάνετε κλικ στην εξαγωγή σχολιασμών, μην ξεχάσετε να ελέγξετε την επιλογή "Ένα πακέτο zip που περιέχει αρχεία σε μορφή YOLO", καθώς αυτό θα αποθηκεύσει τα αρχεία στη σωστή μορφή όπως απαιτείται στο μοντέλο YOLO.

μοντέλο YOLO

7. Αυτό είναι ένα σημαντικό βήμα, επομένως ακολουθήστε το προσεκτικά.

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

Για να σας δώσω μια ιδέα του φακέλου, δημιούργησα έναν φάκελο με το όνομα «CarsData» και σε αυτόν τον φάκελο έφτιαξα δύο φακέλους – «εικόνες» και «ετικέτες».

Yolov5

Μέσα στους δύο φακέλους, πρέπει να δημιουργήσετε δύο ακόμη φακέλους με τα ονόματα "train" και "val". Στο φάκελο εικόνων, μπορείτε να χωρίσετε τις εικόνες σύμφωνα με τη θέλησή σας, αλλά πρέπει να είστε προσεκτικοί όταν χωρίζετε την ετικέτα, καθώς οι ετικέτες πρέπει να ταιριάζουν με τις εικόνες που έχετε χωρίσει

8. Τώρα φτιάξτε ένα αρχείο zip του φακέλου και ανεβάστε το στη μονάδα δίσκου για να το χρησιμοποιήσουμε στο colab.

Εκτέλεση

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

Εδώ είναι λοιπόν οι κωδικοί που πρέπει να ακολουθήσετε για να εκπαιδεύσετε το μοντέλο YOLOv5 σε ένα προσαρμοσμένο σύνολο δεδομένων

Σας συνιστώ να χρησιμοποιήσετε το google colab για αυτό το σεμινάριο, καθώς παρέχει επίσης GPU που παρέχει ταχύτερους υπολογισμούς.

1. !git clone https://github.com/ultralytics/yolov5
Αυτό θα δημιουργήσει ένα αντίγραφο του αποθετηρίου YOLOv5 που είναι ένα αποθετήριο GitHub που δημιουργήθηκε από την ultralytics.

2. cd yolov5
Αυτή είναι μια εντολή κελύφους γραμμής εντολών που χρησιμοποιείται για την αλλαγή του τρέχοντος καταλόγου εργασίας στον κατάλογο YOLOv5.

3. !pip install -r απαιτήσεις.txt
Αυτή η εντολή θα εγκαταστήσει όλα τα πακέτα και τις βιβλιοθήκες που χρησιμοποιούνται για την εκπαίδευση του μοντέλου.

4. !αποσυμπιέστε '/content/drive/MyDrive/CarsData.zip'
Αποσυμπίεση του φακέλου που περιέχει εικόνες και ετικέτες στο google colab

Εδώ έρχεται το πιο σημαντικό βήμα…

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

Εδώ είναι τι πρέπει να κάνετε.

Αφού εκτελέσετε τα 4 παραπάνω βήματα, θα έχετε τον φάκελο yolov5 στο google colab σας. Μεταβείτε στο φάκελο yolov5 και κάντε κλικ στο φάκελο «δεδομένα». Τώρα θα δείτε έναν φάκελο με το όνομα «coco128.yaml». 

Yolov5

Προχωρήστε και κάντε λήψη αυτού του φακέλου.

Μετά τη λήψη του φακέλου, πρέπει να κάνετε μερικές αλλαγές σε αυτόν και να τον ανεβάσετε ξανά στον ίδιο φάκελο από τον οποίο τον κατεβάσατε.

Ας δούμε τώρα το περιεχόμενο του αρχείου που έχουμε κατεβάσει και θα μοιάζει κάπως έτσι.

Yolov5

Θα προσαρμόσουμε αυτό το αρχείο σύμφωνα με το σύνολο δεδομένων και τους σχολιασμούς μας.

Έχουμε ήδη αποσυμπιέσει το σύνολο δεδομένων στο colab, επομένως θα αντιγράψουμε τη διαδρομή του τρένου μας και τις εικόνες επικύρωσης. Αφού αντιγράψετε τη διαδρομή των εικόνων του τρένου, που θα βρίσκεται στον φάκελο δεδομένων και μοιάζει με αυτό το '/content/yolov5/CarsData/images/train', επικολλήστε το στο αρχείο coco128.yaml, το οποίο μόλις κατεβάσαμε.

Κάντε το ίδιο με τις εικόνες δοκιμής και επικύρωσης.

Τώρα, αφού τελειώσουμε με αυτό, θα αναφέρουμε τον αριθμό των κλάσεων όπως 'nc: 1'. Ο αριθμός των κλάσεων, σε αυτήν την περίπτωση, είναι μόνο 1. Στη συνέχεια θα αναφέρουμε το όνομα όπως φαίνεται στην παρακάτω εικόνα. Καταργήστε όλες τις άλλες κλάσεις και το σχολιασμένο μέρος, το οποίο δεν χρειάζεται, μετά από αυτό το αρχείο μας θα πρέπει να μοιάζει κάπως έτσι.

Yolo

Αποθηκεύστε αυτό το αρχείο με όποιο όνομα θέλετε. Έχω αποθηκεύσει το αρχείο με το όνομα customPath.yaml και τώρα ανεβάζω αυτό το αρχείο πίσω στο colab στο ίδιο μέρος όπου βρισκόταν το coco128.yaml. 

Τώρα τελειώσαμε με το μοντάζ και έτοιμοι να εκπαιδεύσουμε το μοντέλο.

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

Μην ξεχάσετε να αλλάξετε το όνομα του αρχείου που έχετε ανεβάσει ('customPath.yaml). Μπορείτε επίσης να αλλάξετε τον αριθμό των εποχών που θέλετε να εκπαιδεύσετε το μοντέλο. Σε αυτήν την περίπτωση, πρόκειται να εκπαιδεύσω το μοντέλο μόνο για 3 εποχές.

5. !python train.py –img 640 –batch 16 –epochs 10 –data /content/yolov5/customPath.yaml –weights yolov5s.pt

Λάβετε υπόψη τη διαδρομή στην οποία μεταφορτώνετε το φάκελο. Εάν αλλάξει η διαδρομή, τότε οι εντολές δεν θα λειτουργήσουν καθόλου.

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

Yolo

Yolo

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

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

6. !python detect.py –weight /content/yolov5/runs/train/exp/weights/best.pt –source path_of_the_image

Μπορείτε να χρησιμοποιήσετε αυτήν την εντολή για να δοκιμάσετε την πρόβλεψη του μοντέλου σε ορισμένες από τις εικόνες.

Μερικές προκλήσεις που μπορείτε να αντιμετωπίσετε

Αν και τα βήματα που περιγράφονται παραπάνω είναι σωστά, υπάρχουν ορισμένα προβλήματα που μπορείτε να αντιμετωπίσετε εάν δεν τα ακολουθήσετε ακριβώς. 

  1. Λάθος διαδρομή: Αυτό μπορεί να είναι πονοκέφαλος ή πρόβλημα. Εάν έχετε εισαγάγει λάθος διαδρομή κάπου στην εκπαίδευση της εικόνας, μπορεί να μην είναι εύκολο να την αναγνωρίσετε και δεν θα μπορείτε να εκπαιδεύσετε το μοντέλο.
  2. Λανθασμένη μορφή ετικετών: Αυτό είναι ένα ευρέως διαδεδομένο πρόβλημα που αντιμετωπίζουν οι άνθρωποι κατά την εκπαίδευση ενός YOLOv5. Το μοντέλο δέχεται μόνο μια μορφή στην οποία κάθε εικόνα έχει το δικό της αρχείο κειμένου με την επιθυμητή μορφή μέσα. Συχνά, ένα αρχείο μορφής XLS ή ένα μεμονωμένο αρχείο CSV τροφοδοτείται στο δίκτυο, με αποτέλεσμα ένα σφάλμα. Εάν κάνετε λήψη των δεδομένων από κάπου, αντί να σχολιάζετε κάθε εικόνα, μπορεί να υπάρχει διαφορετική μορφή αρχείου στην οποία αποθηκεύονται οι ετικέτες. Ακολουθεί ένα άρθρο για τη μετατροπή της μορφής XLS σε μορφή YOLO. (σύνδεσμος μετά την ολοκλήρωση του άρθρου).
  3. Μη σωστή ονομασία των αρχείων: Η μη σωστή ονομασία του αρχείου θα οδηγήσει ξανά σε σφάλμα. Δώστε προσοχή στα βήματα κατά την ονομασία των φακέλων και αποφύγετε αυτό το σφάλμα.

Συμπέρασμα

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

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

Περισσότερα από Ανάλυση Vidhya