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

Dmitry Soshnikov, τεχνικός ευαγγελιστής της Microsoft, μέλος της Ρωσικής Ένωσης Τεχνητής Νοημοσύνης, καθηγητής λειτουργικού και λογικού προγραμματισμού τεχνητής νοημοσύνης στο Ινστιτούτο Αεροπορίας της Μόσχας, στο Ινστιτούτο Φυσικής και Τεχνολογίας της Μόσχας και στην Ανώτατη Οικονομική Σχολή, καθώς και τα μαθήματά μας , θα μας βοηθήσει με την ιστορία.

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

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

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

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

Τράπεζες φίλτρων και βιολογική όραση

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

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

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

Κοινή χρήση βάρους

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

Αυτό απαιτεί μια εξειδικευμένη αρχιτεκτονική δικτύου:

  • συνελικτικά δίκτυα για εργασία με εικόνες
  • επαναλαμβανόμενα δίκτυα για εργασία με κείμενο / ακολουθίες
Νευρωνικά δίκτυα που χρησιμοποιούνται αποτελεσματικά στην αναγνώριση εικόνας, τα οποία χρησιμοποιούν ειδικά συνελικτικά στρώματα (Convolution Layers).

Η βασική ιδέα είναι η εξής:

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


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

Ας περιγράψουμε τη συνάρτηση συνέλιξης με τις ακόλουθες παραμέτρους:

  • πυρήνας - πυρήνας συνέλιξης, μήτρα βάρους
  • pad - πόσα pixel να προσθέσετε στην εικόνα γύρω από τις άκρες
  • διασκελισμός - συχνότητα εφαρμογής φίλτρου. Για παράδειγμα, για stride=2 θα πάρουμε κάθε δεύτερο pixel της εικόνας κάθετα και οριζόντια, μειώνοντας την ανάλυση στο μισό
Σε : def convolve(image, kernel, pad = 0, stride = 1): lines, στήλες = image.shape output_rows = lines // stride output_columns = στήλες // stride αποτέλεσμα = np.zeros((output_rows, output_columns)) αν pad > 0: image = np.pad(image, pad, "constant") kernel_size = kernel.size kernel_length = kernel.shape half_kernel = kernel_length // 2 kernel_flat = kernel.reshape(kernel_size, 1) offset = half_kernel-pad) για r in range(offset, rows - offset, stride): for c in range (offset, στήλες - offset, stride): rr = r - half_kernel + pad cc = c - half_kernel + patch pad = αποτέλεσμα εικόνας = np.dot(patch.reshape(1, kernel_size), kernel_flat) αποτέλεσμα επιστροφής
Σε : def show_convolution(kernel, stride = 1): """Εμφανίζει η επίδρασητης συνέλιξης με τον δεδομένο πυρήνα.""" fig = pylab.figure(figsize = (9,9)) gs = gridspec.GridSpec(3, 3, height_ratios=) start=1 για i στην περιοχή (3): εικόνα = images_train conv = convolve(image, kernel, kernel.shape//2, stride) ax = fig.add_subplot(gs[i]) pylab.imshow(image, interpolation="nearest") ax.set_xticks() ax.set_yticks( ) ax = fig.add_subplot(gs) pylab.imshow(kernel, cmap="gray", interpolation="nearest") ax.set_xticks() ax.set_yticks() ax = fig.add_subplot(gs) pylab.imshow(conv , interpolation="nearest") ax.set_xticks() ax.set_yticks() pylab.show()
Σε : blur_kernel = np.array([, , , , ], dtype="float32") blur_kernel /= 273

Φίλτρα

Θολούρα

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


Σε : show_convolution(blur_kernel)

Κάθετες άκρες

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


Σε : vertical_edge_kernel = np.array([, , , , ], dtype="float32") vertical_edge_kernel /= 166
Σε : show_convolution(vertical_edge_kernel)

Οριζόντιες άκρες

Ένα παρόμοιο φίλτρο μπορεί να κατασκευαστεί για να επισημαίνει οριζόντιες πινελιές σε μια εικόνα.


Σε : horizontal_bar_kernel = np.array([, [-2, -8, -13, -8, -2], , [-2, -8, -13, -8, -2], ], dtype=" float32") horizontal_bar_kernel /= 132
Σε : show_convolution(horizontal_bar_kernel)

φίλτρο περιγράμματος

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


Σε : blob_kernel = np.array([, , , , , , , , ], dtype="float32") blob_kernel /= np.sum(np.abs(blob_kernel))
Σε : show_convolution(blob_kernel)
Έτσι λειτουργεί το κλασικό παράδειγμα αναγνώρισης ψηφίων: κάθε ψηφίο έχει τα δικά του χαρακτηριστικά γεωμετρικά χαρακτηριστικά (δύο κύκλοι - εικόνα οκτώ, μια κάθετη στα μισά της εικόνας - ένα, κ.λπ.), σύμφωνα με τα οποία νευρικό σύστημαμπορεί να καθορίσει τι είδους αντικείμενο. Δημιουργούμε φίλτρα που χαρακτηρίζουν κάθε ψηφίο, περνάμε κάθε ένα από τα φίλτρα πάνω στην εικόνα και μειώνουμε το σφάλμα στο ελάχιστο.


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

Βασική ιδέα ενός συνελικτικού δικτύου

  • Δημιουργούμε ένα συνελικτικό στρώμα στο νευρωνικό δίκτυο, το οποίο διασφαλίζει ότι το φίλτρο εφαρμόζεται στην εικόνα.
  • Εκπαιδεύουμε τα βάρη φίλτρων χρησιμοποιώντας τον αλγόριθμο backpropagation
Για παράδειγμα, έχουμε μια εικόνα Εγώ, 2 συνελικτικά φίλτρα wμε πρίζες ο. Τα στοιχεία της εικόνας εξόδου θα υπολογιστούν ως εξής:

Προπόνηση με βάρη

Ο αλγόριθμος είναι:
  • Ένα φίλτρο με τα ίδια βάρη εφαρμόζεται σε όλα τα pixel της εικόνας.
  • Σε αυτή την περίπτωση, το φίλτρο «τρέχει» σε ολόκληρη την εικόνα.
  • Θέλουμε να εκπαιδεύσουμε αυτά τα βάρη (κοινά για όλα τα pixel) χρησιμοποιώντας έναν αλγόριθμο backpropagation.
  • Για να γίνει αυτό, πρέπει να μειώσουμε την εφαρμογή του φίλτρου σε έναν μόνο πολλαπλασιασμό πινάκων.
  • Σε αντίθεση με ένα πλήρως συνδεδεμένο στρώμα, θα υπάρχουν λιγότερα βάρη για προπόνηση και περισσότερα παραδείγματα.
  • Πονηρό - im2col

im2col

Ας ξεκινήσουμε με την εικόνα x, όπου κάθε pixel αντιστοιχεί σε ένα γράμμα:

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


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

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


Τα μάτια είναι τρομακτικά.

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

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

Τσάντα μόδας για το καλοκαίρι. Αποκλειστικός σχεδιασμός!

Πιο πρόσφατα, ο προγραμματιστής Christopher Hesse αποκάλυψε στον κόσμο το πνευματικό τέκνο του - το έργο. Με τη βοήθεια ενός νευρωνικού δικτύου, οι ζωγραφισμένες γάτες μετατρέπονται σε «πραγματικές». Στο επίκεντρο της ιδέας βρίσκεται ένα σύστημα μηχανικής μάθησης από την Google που ονομάζεται TensorFlow. Το Edges2cats χωρίζεται σε δύο «πεδία». Στην πρώτη, ο χρήστης σχεδιάζει μια γάτα (ή κάτι παρόμοιο με αυτήν), και στη δεύτερη, το νευρωνικό δίκτυο προσπαθεί να κάνει το σχέδιο να μοιάζει με πραγματικό ζώο.

Η απλή διασκέδαση άρεσε στους χρήστες του Διαδικτύου. Άρχισαν να δημοσιεύουν μαζικά τα νέα τους κατοικίδια στο Twitter. Σε ορισμένες περιπτώσεις, η «εικόνα» που δημιουργήθηκε από το νευρωνικό δίκτυο φαινόταν πολύ ρεαλιστική, σαν να είχαμε μια φωτογραφία ενός πραγματικού ζωντανού όντος. Μερικοί χρήστες προσπάθησαν να κάνουν τις γάτες χαριτωμένες (μερικές φορές τα κατάφεραν), αλλά σε πολλές περιπτώσεις γεννήθηκαν αληθινά τέρατα.

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



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


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


Για τα πιτσιρίκια, το σοβιετικό κλασικό είναι τέλειο, το οποίο φημίζεται για την απλότητα, την ευγένεια και την ευχάριστη εικόνα του. Για παράδειγμα, "Crocodile Gena", "Prostokvashino", "Λοιπόν, περίμενε ένα λεπτό!", "The Bremen Town Musicians", "Flying Ship", "Winnie the Pooh", "Kid and Carlson" και πολλά άλλα. Μπορείτε ακόμη να καθίσετε με το παιδί σας και να αναπολήσετε την παιδική σας ηλικία. Επίσης για τα μικρά παιδιά υπάρχουν πολλά σύγχρονα εκπαιδευτικά κινούμενα σχέδια που διαφέρουν όχι μόνο σε φωτεινότερη εικόνα, αλλά και σε περιεχόμενο.


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


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


Οι έφηβοι, παρά το γεγονός ότι θεωρούν τους εαυτούς τους ενήλικες, εξακολουθούν να τους αρέσει να παρακολουθούν κινούμενα σχέδια. Για τους έφηβους, είναι ήδη πιο τολμηροί και όχι τόσο ακίνδυνοι όσο τα παιδιά. Κυριαρχούνται από ψυχαγωγία, ανέκδοτα ενηλίκων, εφηβικά προβλήματα. Πρόκειται κυρίως για ξένα σίριαλ καρτούν, όπως The Simsons, Family Guy, Futurama κ.λπ.


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


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