Λογότυπο Zephyrnet

Πώς να προσεγγίσετε την αρχιτεκτονική του CNN από το μηδέν;

Ημερομηνία:

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

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

Βαθιά μάθηση

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

Layman's Explanation of Deep Learning

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

Χρησιμοποιώντας το παραπάνω χρονοδιάγραμμα έναρξης, μπορεί να χρειαστεί να κατεβείτε πολλά στρώματα βαθιά στη νευρική δομή της μηχανής (τεχνικά ονομάζεται διάδοση προς τα εμπρός, αλλά στο διάγραμμα, ονομάζεται διαφορετικό επίπεδο ονείρων) και να εκτελέσετε μια κλωτσιά (πίσω διάδοση) για να ενισχύσετε τη μάθηση , ανάλογα με το τι θέλετε να πετύχετε. Για την αρχή, οι νευρικοί κόμβοι (οι ονειροπόλοι κοινής κατάστασης) χρησιμοποιούν μια συνάρτηση ενεργοποίησης/αρχιτέκτονα (Relu, Sigmoid και άλλοι).

                                                  

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

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

Γιατί πηγαίνουμε από τη Μηχανική Μάθηση στη Βαθιά Μάθηση;

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

Οι προσεγγίσεις Deep Learning πρέπει να αναλύουν τις δηλώσεις προβλημάτων σε διαφορετικά κομμάτια και στη συνέχεια να συνδυάζουν τα αποτελέσματά τους στο συμπέρασμα, ενώ οι στρατηγικές Μηχανικής Μάθησης απαιτούν την κατανομή των δηλώσεων προβλημάτων σε ξεχωριστά μέρη και στη συνέχεια το συνδυασμό των αποτελεσμάτων τους στο τέλος. Τα συστήματα Deep Learning όπως το Yolo net λαμβάνουν μια φωτογραφία ως είσοδο και εξάγουν τη θέση και τα ονόματα των αντικειμένων σε μια εργασία ανίχνευσης πολλαπλών αντικειμένων. Ωστόσο, πριν το HOG μπορεί να χρησιμοποιηθεί ως είσοδος σε έναν αλγόριθμο εκμάθησης για την κατηγοριοποίηση σχετικών στοιχείων σε μεθόδους Μηχανικής Μάθησης όπως το SVM, πρέπει πρώτα να χρησιμοποιηθεί για τον εντοπισμό όλων των πιθανών αντικειμένων χρησιμοποιώντας μια προσέγγιση αναγνώρισης αντικειμένων οριοθέτησης πλαισίου.

Γιατί πηγαίνουμε από τη Μηχανική Μάθηση στη Βαθιά Μάθηση;| Αρχιτεκτονική του CNN

 

Τύποι Deep Learning

Υπάρχουν πολλοί τύποι με βάση την εφαρμογή και την αρχιτεκτονική,

  1. Τεχνητό Νευρωνικό Δίκτυο
  2. Νευρωνικό Δίκτυο συνέλιξης
  3. Επαναλαμβανόμενο νευρωνικό δίκτυο
  4. Αυτόματο κωδικοποιητές
  5. Αυτοοργάνωση χάρτη
  6. Multi-layer Perceptron και πολλά άλλα…

Νευρωνικό Δίκτυο συνέλιξης:

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

Επίπεδα σε νευρωνικό δίκτυο συνέλιξης

Το CNN έχει ορισμένα δομικά στοιχεία για την κατασκευή της αρχιτεκτονικής, όπως π.χ

Στρώμα συνέλιξης

Το συνελικτικό στρώμα, το οποίο κατέχει την πλειοψηφία του υπολογισμού, είναι το θεμέλιο ενός CNN. Απαιτεί δεδομένα εισαγωγής, φίλτρο και χάρτη χαρακτηριστικών, μεταξύ άλλων. Ας υποθέσουμε ότι η είσοδος είναι μια μήτρα 3D pixel με έγχρωμη εικόνα. Αυτό σημαίνει ότι η είσοδος θα έχει τρεις διαστάσεις που αντιστοιχούν στον χρωματικό χώρο RGB μιας εικόνας. Ένας ανιχνευτής χαρακτηριστικών, γνωστός και ως πυρήνας ή φίλτρο, θα αναζητήσει το χαρακτηριστικό στα πεδία λήψης της εικόνας. Συνέλιξη είναι το όνομα αυτής της τεχνικής.

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

Το No Valid padding είναι επίσης γνωστό ως έγκυρο padding. Εάν οι διαστάσεις δεν ευθυγραμμίζονται, η τελική περιέλιξη απορρίπτεται.

Ίδια επένδυση: Αυτή η επένδυση εγγυάται ότι το επίπεδο εξόδου ταιριάζει σε μέγεθος με το επίπεδο εισόδου.

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

Επίπεδο ενεργοποίησης

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

Επίπεδο συγκέντρωσης

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

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

Μέση συγκέντρωση: Το φίλτρο υπολογίζει τη μέση τιμή μέσα στο πεδίο λήψης καθώς περνά από την είσοδο και τη στέλνει στον πίνακα εξόδου.

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

Το τελευταίο επίπεδο ενός συνελικτικού νευρωνικού δικτύου είναι ένας ταξινομητής (CNN). Ονομάζεται πυκνό στρώμα και είναι απλώς ένας ταξινομητής τεχνητού νευρωνικού δικτύου (ANN).

Ένας ταξινομητής ANN, όπως και κάθε άλλος ταξινομητής, απαιτεί ορισμένες ιδιότητες. Αυτό υποδηλώνει ότι απαιτείται ένα διάνυσμα χαρακτηριστικών.

Ως αποτέλεσμα, πρέπει να μετατρέψετε την έξοδο της συνελικτικής συνιστώσας του CNN σε ένα διάνυσμα χαρακτηριστικών 1D που μπορεί να χρησιμοποιήσει το ANN. Αυτή η διαδικασία είναι γνωστή ως ισοπέδωση. Ισοπεδώνει όλη τη δομή της εξόδου των συνελικτικών στρωμάτων σε ένα ενιαίο διάνυσμα μεγάλου μήκους χαρακτηριστικών που μπορεί να χρησιμοποιήσει το πυκνό στρώμα για ταξινόμηση.

Πλεονεκτήματα

  1. Καλύτερα να εκπαιδεύσετε το μοντέλο από πλευράς υπολογιστών
  2. Πολύ υψηλή ακρίβεια σε προβλήματα αναγνώρισης εικόνων
  3. Εντοπίζει αυτόματα τα σημαντικά χαρακτηριστικά χωρίς ανθρώπινη επίβλεψη.

Μειονεκτήματα

  1. Αντίπαλες επιθέσεις
  2. Εκπαίδευση εντατικής χρήσης δεδομένων

Εφαρμογές του CNN

  1. Ταξινόμηση εικόνας
  2. Ανίχνευση αντικειμένων
  3. Οπτικοακουστική αντιστοίχιση
  4. Ανακατασκευή αντικειμένου
  5. Αναγνώρισης ομιλίας

CNN με χρήση εικόνας

Αρχικό σύνολο δεδομένων

Σύνολο δεδομένων Kaggle

!wget https://download.microsoft.com/download/3/E/1/3E1C3F21-ECDB-4869-8368-6DEBA77B919F/kagglecatsanddogs_3367a.zip
CNN χρησιμοποιώντας εικόνα
#για αποσυμπίεση του συνόλου δεδομένων
!unzip kagglecatsanddogs_3367a.zip
CNN με χρήση εικόνας| Αρχιτεκτονική του CNN

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

εισαγωγή numpy ως np
εισαγωγή panda ως pd
εισαγωγή matplotlib.pyplot ως plt
από το keras.preprocessing.image import load_img
προειδοποιήσεις εισαγωγής
εισαγωγή θαλάσσης ως sns
εισαγωγή os
εισαγωγή τυχαία
warnings.filterwarnings('ignore')

όλες οι εικόνες στο αρχείο μπορούν να μετατραπούν σε μορφή πλαισίου δεδομένων για περαιτέρω επεξεργασία ώστε να είναι ομαλή,

#Γάτα - 0 και Σκύλος -1
διαδρομή_εισόδου = []
ετικέτα = []
για class_name στο os.listdir("PetImages"):
    για διαδρομή στο os.listdir("PetImages/"+class_name):
        if class_name == 'Cat':
            label.append(0)
        αλλού:
            label.append(1)
        input_path.append(os.path.join("PetImages", class_name, path))
print(input_path[20000], label[20000])

για να διασταυρώσετε και να δείτε το αποτέλεσμα,

print(input_path[2], label[2])
petimages

μερικά βασικά στατιστικά στοιχεία και προβολή του συνόλου δεδομένων,

len (διαδρομή_εισόδου)
σύνολο δεδομένων = pd.DataFrame()
σύνολο δεδομένων ['εικόνες'] = διαδρομή_εισόδου
σύνολο δεδομένων['label'] = ετικέτα
σύνολο δεδομένων = σύνολο δεδομένων.sample(frac=1).reset_index(drop=True)
σύνολο δεδομένων.head()
dataset.tail()
σύνολο δεδομένων.σχήμα
dataset.info()

για να διαγράψετε τα ανεπιθύμητα ή άχρηστα αρχεία εκτός από τη μορφή .jpg

#για κατεστραμμένες εικόνες
εισαγωγή PIL
l = []
για εικόνα στο σύνολο δεδομένων['images']:
    δοκιμάστε:
        img = PIL.Image.open(image)
    εκτός:
        l.append(εικόνα)
μεγάλο

διαγράφοντας τα παραπάνω ανεπιθύμητα αρχεία

# διαγραφή αρχείων db
σύνολο δεδομένων = σύνολο δεδομένων[σύνολο δεδομένων['images']!='PetImages/Dog/Thumbs.db']
σύνολο δεδομένων = σύνολο δεδομένων[σύνολο δεδομένων['images']!='PetImages/Cat/Thumbs.db']
σύνολο δεδομένων = σύνολο δεδομένων[σύνολο δεδομένων['εικόνες']!='PetImages/Cat/666.jpg']
σύνολο δεδομένων = σύνολο δεδομένων[σύνολο δεδομένων['εικόνες']!='PetImages/Dog/11702.jpg']
len (σύνολο δεδομένων)

ΕΔΑ – Σκύλος

# για εμφάνιση πλέγματος εικόνων
plt.figure(figsize=(25,25))
temp = σύνολο δεδομένων[σύνολο δεδομένων['label']==1]['εικόνες']
start = random.randint(0, len(temp))
αρχεία = θερμοκρασία[start:start+25]
για ευρετήριο, αρχείο στο enumerate(files):
    plt.subplot(5,5, index+1)
    img = load_img (αρχείο)
    img = np.array(img)
    plt.imshow(img)
    plt.title('Sample Dogs images')
    plt.axis('off')
ΕΔΑ - Σκύλος| Αρχιτεκτονική του CNN

ΕΔΑ – Κατ

# για εμφάνιση πλέγματος εικόνων
plt.figure(figsize=(25,25))
temp = σύνολο δεδομένων[σύνολο δεδομένων['label']==0]['εικόνες']
start = random.randint(0, len(temp))
αρχεία = θερμοκρασία[start:start+25]
για ευρετήριο, αρχείο στο enumerate(files):
    plt.subplot(5,5, index+1)
    img = load_img (αρχείο)
    img = np.array(img)
    plt.imshow(img)
    plt.title('Sample Cats images')
    plt.axis('off')
ΕΔΑ - Γάτα| Αρχιτεκτονική του CNN

καθώς και η κατηγορία που έχει ίσο αριθμό δεδομένων,

sns.countplot(σύνολο δεδομένων['label'])

Πρόγραμμα δημιουργίας δεδομένων για εικόνες

σύνολο δεδομένων['label'] = σύνολο δεδομένων ['label'].atype('str')
# διαχωρισμός εισόδου
από το sklearn.model_selection εισαγωγή train_test_split
τρένο, δοκιμή = train_test_split(σύνολο δεδομένων, μέγεθος_δοκιμής=0.3, τυχαία_κατάσταση=42)
από το keras.preprocessing.image import ImageDataGenerator
train_generator = ImageDataGenerator(
    rescale = 1./255, # κανονικοποίηση εικόνων
    rotation_range = 40, # αύξηση εικόνων για αποφυγή υπερβολικής προσαρμογής
    εύρος_διάτμησης = 0.2,
    εύρος_ζουμ = 0.2,
    horizontal_flip = Σωστό,
    fill_mode = 'πλησιέστερο'
)
val_generator = ImageDataGenerator (rescale = 1./255)
train_iterator = train_generator.flow_from_dataframe(
    τρένο,
    x_col='εικόνες',
    y_col='label',
    target_size=(128,128),
    batch_size=512,
    class_mode='δυαδικό'
)

val_iterator = val_generator.flow_from_dataframe(

δοκιμή

x_col='εικόνες',

y_col='label',

target_size=(128,128),

batch_size=512,

class_mode='δυαδικό'

)

Μοντελοποίηση

από keras εισαγωγή Διαδοχική
από το keras.layers εισάγετε Conv2D, MaxPool2D, Flatten, Dense
μοντέλο = Διαδοχική([
                    Conv2D(16, (3,3), activation='relu', input_shape=(128,128,3)),
                    MaxPool2D((2,2)),
                    Conv2D(32, (3,3), activation='relu'),
                    MaxPool2D((2,2)),
                    Conv2D(64, (3,3), activation='relu'),
                    MaxPool2D((2,2)),
                    Conv2D(128, (3,3), activation='relu'),
                    MaxPool2D((2,2)),
                    Ισοπεδώνω(),
                    Dense(256, activation='relu'),
                    Πυκνό (1, activation='sigmoid')
])
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) model.summary()
Μοντελοποίηση
history = model.fit(train_iterator, epochs=15, validation_data=val_iterator)
Εικόνα μοντελοποίησης 2| Αρχιτεκτονική του CNN

Για να δείτε την έξοδο στην οπτικοποίηση

acc = history.history['accuracy']
val_acc = history.history['val_accuracy']
εποχές = εύρος (len(acc))

plt.plot(epochs, acc, 'b', label='Training Accuracy')

plt.plot(epochs, val_acc, 'r', label='Validation Accuracy')

plt.title ("Γράφημα Ακρίβειας")

plt.legend()

plt.figure()

απώλεια = history.history['απώλεια']

val_loss = history.history['val_loss']

plt.plot(εποχές, απώλεια, 'b', label='Απώλεια προπόνησης')

plt.plot(epo

plt.title ("Γράφημα απώλειας")

plt.legend()

plt.show ()

Απώλεια Εκπαίδευσης & Επικύρωσης| Αρχιτεκτονική του CNN

Λαμβάνουμε σύνολα δεδομένων από ιστότοπους, τότε ποια είναι η βασική προεπεξεργασία ή επιχειρηματολογία δεδομένων που απαιτείται για οποιαδήποτε βασική επεξεργασία εικόνας και, στη συνέχεια, κατασκευάζουμε αρχιτεκτονικές CNN χρησιμοποιώντας επίπεδα όπως συνέλιξη, maxpool, επίπεδα και πυκνά επίπεδα. Ο λόγος για αυτό το blog είναι ότι πρέπει να κατανοήσουμε τις βασικές αρχιτεκτονικές, οι οποίες οδηγούν σε προηγμένες αρχιτεκτονικές όπως GAN, YOLO, κ.λπ.

Τα μέσα που εμφανίζονται σε αυτό το άρθρο δεν ανήκουν στο Analytics Vidhya και χρησιμοποιούνται κατά την κρίση του συγγραφέα.

spot_img

Τελευταία Νοημοσύνη

spot_img