Πώς αντιγράφω ένα έργο 86 εκατομμυρίων δολαρίων σε 57 γραμμές κώδικα

Όταν ένα πείραμα με υπάρχουσα τεχνολογία ανοιχτού κώδικα κάνει «αρκετά καλή» δουλειά

Η Victoria Police είναι η κύρια υπηρεσία επιβολής του νόμου της Victoria, Αυστραλία. Με περισσότερα από 16.000 οχήματα που έχουν κλαπεί στη Βικτώρια τον περασμένο χρόνο - με κόστος περίπου 170 εκατομμύρια δολάρια - το αστυνομικό τμήμα πειραματίζεται με μια ποικιλία τεχνολογικών λύσεων για την καταστολή της κλοπής αυτοκινήτων. Ονομάζουν αυτό το σύστημα BlueNet.

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

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

Αλλά μετά από λίγο googling ανακάλυψα ότι η Βικτώρια Αστυνομία είχε υποβληθεί πρόσφατα σε δίκη μιας παρόμοιας συσκευής και το εκτιμώμενο κόστος διάθεσης ήταν κάπου κοντά στα 86.000.000 $. Ένας έξυπνος σχολιαστής επεσήμανε ότι το κόστος των 86 εκατομμυρίων δολαρίων για να χωρέσει 220 οχήματα έρχεται με μάλλον διψασμένο 390.909 $ ανά όχημα .

Σίγουρα μπορούμε να κάνουμε λίγο καλύτερα από αυτό.

Τα κριτήρια επιτυχίας

Πριν ξεκινήσω, περιέγραψα μερικές βασικές απαιτήσεις για το σχεδιασμό προϊόντων.

Απαίτηση # 1: Η επεξεργασία εικόνας πρέπει να εκτελείται τοπικά

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

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

Απαίτηση # 2: Πρέπει να λειτουργεί με εικόνες χαμηλής ποιότητας

Δεδομένου ότι δεν έχω κάμερα Raspberry Pi ή κάμερα web USB, οπότε θα χρησιμοποιώ πλάνα κάμερας - είναι άμεσα διαθέσιμη και μια ιδανική πηγή δειγμάτων δεδομένων. Ως πρόσθετο μπόνους, το βίντεο της κάμερας αντιπροσωπεύει τη συνολική ποιότητα των βίντεο που θα περιμένατε από τις κάμερες που είναι τοποθετημένες στο όχημα.

Απαίτηση # 3: Πρέπει να κατασκευαστεί χρησιμοποιώντας τεχνολογία ανοιχτού κώδικα

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

Η λύση μου

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

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

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

Αυτό είναι ό, τι χρειάζεται για την αναγνώριση των χαρακτήρων σε μια πινακίδα:

Μικρή σπηλιά

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

Δείτε πώς φαίνεται η βρωμιά της απόξεσης απόδειξης της έννοιας μου:

Αποτελέσματα

Πρέπει να πω ότι με εξέπληξε ευχάριστα.

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

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

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

Αλλά… η λύση θα τους έδινε τελικά σωστή.

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

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

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

Η ερώτηση 86.000.000 δολαρίων

Για να είμαι δίκαιος, δεν έχω απολύτως ιδέα τι περιλαμβάνει το ποσό των 86 εκατομμυρίων δολαρίων - ούτε μπορώ να μιλήσω για την ακρίβεια του εργαλείου ανοιχτού κώδικα χωρίς τοπική εκπαίδευση έναντι του πιλοτικού συστήματος BlueNet.

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

Από την άλλη πλευρά, το κόστος ~ 391k $ ανά όχημα φαίνεται αρκετά πλούσιο - ειδικά αν το BlueNet δεν είναι ιδιαίτερα ακριβές και δεν υπάρχουν έργα μεγάλης κλίμακας IT για παροπλισμό ή αναβάθμιση εξαρτημένων συστημάτων.

Μελλοντικές εφαρμογές

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

Τα οχήματα της Teslas είναι ήδη γεμάτα με κάμερες και αισθητήρες με τη δυνατότητα να λαμβάνουν ενημερώσεις OTA - φανταστείτε να τα μετατρέψετε σε στόλο εικονικών καλών samaritans. Οι οδηγοί Ubers και Lyft θα μπορούσαν επίσης να εξοπλιστούν με αυτές τις συσκευές για να αυξήσουν δραματικά την περιοχή κάλυψης.

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

Μέρος 2 - Έχω δημοσιεύσει μια ενημέρωση, στην οποία δοκιμάζω με τα δικά μου βίντεο και πιάνω ένα μη εγγεγραμμένο όχημα, εδώ:

Θυμάσαι ότι ανιχνεύτηκα 86 εκατομμύρια δολάρια πινακίδα; Να τι συνέβη στη συνέχεια.

Επιτυχίες, αποτυχίες, και να πιάσει ένα πολύ κακό οδηγό medium.freecodecamp.org