Logo Zephyrnet

MẠNG NÔNG THÔN CÁCH MẠNG (CNN)

Ngày:

Bài báo này đã được xuất bản như một phần của Blogathon Khoa học Dữ liệu.

Để hiểu mạng nơ-ron chuyển đổi, trước tiên chúng ta cần biết Học sâu là gì?

Deep Learning là một lĩnh vực Machine learning mới nổi; nghĩa là, nó là một tập hợp con của Học máy trong đó việc học tập diễn ra từ các ví dụ hoặc kinh nghiệm trong quá khứ với sự trợ giúp của 'Mạng lưới thần kinh nhân tạo'.

Deep Learning sử dụng mạng lưới thần kinh sâu, trong đó từ 'sâu' biểu thị sự hiện diện của hơn 1 hoặc 2 lớp ẩn ngoài lớp đầu vào và đầu ra.

Mạng thần kinh nhân tạo là gì?

Mạng nơ-ron nhân tạo được tạo thành từ các nơ-ron, là đơn vị xử lý cốt lõi của mạng. Để hiểu rõ hơn, hãy tham khảo sơ đồ dưới đây:

Trong sơ đồ đã cho, đầu tiên, chúng ta có 'LỚP ĐẦU VÀO', nơi các tế bào thần kinh được nuôi dưỡng bằng các quan sát huấn luyện. Sau đó ở giữa là 'LỚP ẨN' thực hiện hầu hết các tính toán mà mạng của chúng tôi yêu cầu. Cuối cùng, 'LỚP ĐẦU RA' dự đoán kết quả cuối cùng được trích xuất từ ​​hai lớp trước đó.

MẠNG THẦN KINH TUYỆT VỜI

nguồn: Researchgate.net

Mạng lưới thần kinh này hoạt động như thế nào?

  • Ví dụ: nếu một hình ảnh được truyền làm đầu vào, với các pixel NXN, thì mỗi pixel sẽ được cung cấp làm đầu vào cho mỗi nơ-ron của lớp đầu tiên.
  • Các nơ-ron của một lớp được kết nối với các lớp sau thông qua các 'kênh'.
  • Mỗi kênh này được gán một giá trị số gọi là 'trọng lượng'.
  • Đầu vào (x1, x2, …… xn) được nhân với trọng số tương ứng của chúng và tổng của chúng được gửi đến các nơ-ron ở lớp ẩn.
  • Mỗi nơ-ron này được liên kết với một giá trị số gọi là 'Bias', được thêm vào tổng đầu vào.
  • Giá trị này sau đó được chuyển qua một hàm ngưỡng gọi là 'Hàm kích hoạt', hàm này xác định liệu nơ-ron cụ thể có được kích hoạt hay không.
  • Tế bào thần kinh được kích hoạt sẽ truyền dữ liệu đến tế bào thần kinh của lớp tiếp theo qua các kênh.
  • Do đó, dữ liệu được truyền qua mạng và nơ-ron có giá trị cao nhất sẽ xác định đầu ra.
  • Đầu ra= f(sigma w i*xi)+Độ lệch, trong đó f là hàm kích hoạt.

Các loại mạng lưới thần kinh sâu:

  • Mạng lưới thần kinh nhân tạo
  • Perceptron nhiều lớp
  • Mạng thần kinh tái diễn
  • Mạng thần kinh chuyển đổi

MẠNG THẦN KINH TUYỆT VỜI (CNN):

Nó là một lớp mạng lưới thần kinh sâu trích xuất các đặc điểm từ hình ảnh, được đưa ra làm đầu vào, để thực hiện các tác vụ cụ thể như phân loại hình ảnh, nhận dạng khuôn mặt và hệ thống hình ảnh ngữ nghĩa. CNN có một hoặc nhiều lớp tích chập để trích xuất tính năng đơn giản, thực hiện thao tác tích chập (tức là nhân một tập hợp trọng số với đầu vào) trong khi vẫn giữ lại các tính năng quan trọng (thông tin không gian và thời gian) mà không cần sự giám sát của con người.

Tại sao chúng ta cần CNN hơn ANN?

CNN là cần thiết vì đây là cách quan trọng và chính xác hơn cho các bài toán phân loại hình ảnh. Với Mạng thần kinh nhân tạo, hình ảnh 2D trước tiên sẽ được chuyển đổi thành vectơ 1 chiều trước khi đào tạo mô hình.

Ngoài ra, khi kích thước của hình ảnh tăng lên, số lượng tham số huấn luyện sẽ tăng theo cấp số nhân, dẫn đến mất dung lượng lưu trữ. Hơn nữa, ANN không thể nắm bắt được thông tin tuần tự cần thiết cho dữ liệu tuần tự.

Do đó, CNN sẽ luôn là cách được ưu tiên để xử lý các vấn đề phân loại hình ảnh 2D vì khả năng xử lý hình ảnh dưới dạng dữ liệu, từ đó mang lại độ chính xác cao hơn.

Kiến trúc của CNN:

MẠNG THẦN KINH TUYỆT VỜI

nguồn: trung bình

Ba lớp chính xác định cấu trúc của mạng nơ ron tích chập là:

1)Lớp chập:

Đây là lớp đầu tiên của mạng tích chập thực hiện trích xuất đặc trưng bằng cách trượt bộ lọc qua hình ảnh đầu vào. Đầu ra hoặc tính năng tích chập là tích số của các bộ lọc trong ảnh và tổng của chúng cho mọi hành động trượt.

Lớp đầu ra hay còn gọi là bản đồ đặc trưng, ​​​​tương ứng với các hình ảnh gốc như đường cong, cạnh sắc nét, họa tiết, v.v.

Trong trường hợp mạng có nhiều lớp tích chập hơn, các lớp ban đầu nhằm mục đích trích xuất các đặc điểm chung trong khi các phần phức tạp sẽ bị loại bỏ khi mạng ngày càng sâu hơn.

Hình ảnh dưới đây cho thấy hoạt động tích chập.

Lớp chuyển đổi

nguồn: Analyticsindiamag.com

2)Lớp gộp:

Mục đích chính của lớp này là giảm số lượng tham số có thể huấn luyện bằng cách giảm kích thước không gian của hình ảnh, do đó giảm chi phí tính toán.

Độ sâu hình ảnh không thay đổi do việc gộp được thực hiện độc lập trên từng chiều sâu. Tổng hợp tối đa là phương pháp gộp phổ biến nhất, trong đó phần tử quan trọng nhất được lấy làm đầu vào từ bản đồ đối tượng. Max Pooling sau đó được thực hiện để cung cấp hình ảnh đầu ra với kích thước được giảm ở mức độ lớn trong khi vẫn giữ được thông tin cần thiết.

Lớp gộp

nguồn: wiki khoa học máy tính

3) Lớp được kết nối đầy đủ:

Một vài lớp cuối cùng xác định đầu ra là các lớp được kết nối đầy đủ. Đầu ra từ lớp gộp được làm phẳng thành vectơ một chiều và sau đó được đưa làm đầu vào cho lớp được kết nối đầy đủ.

Lớp đầu ra có cùng số lượng nơ-ron với số lượng danh mục mà chúng tôi có trong bài toán phân loại, do đó liên kết các tính năng với một nhãn cụ thể.

Sau quá trình này được gọi là lan truyền chuyển tiếp, đầu ra được tạo ra sẽ được so sánh với sản phẩm thực tế để tạo ra lỗi.

Sau đó, lỗi sẽ được truyền ngược để cập nhật các bộ lọc (trọng số) và giá trị sai lệch. Do đó, một quá trình huấn luyện được hoàn thành sau chu kỳ truyền chuyển tiếp và truyền ngược này.

THỰC HIỆN

Bây giờ, hãy triển khai CNN bằng cách lấy ví dụ về phân loại hình ảnh là chó hoặc mèo. Bộ dữ liệu có thể được tải xuống từ https://www.kaggle.com/c/dogs-vs-cats/data

#import các thư viện cần thiết

import cv2 import os import numpy as np import pandas as pd import sklearn import keras from keras.models import Sequential import tensorflow as tf from keras.preprocessing.image import ImageDataGenerator #Data Preprocessing train_datagen = ImageDataGenerator(rescale = 1./255, shear_range = 0.2, zoom_range = 0.2, Horizontal_flip = True) train_generator = train_datagen.flow_from_directory(r"C:dogs vs catstrain", target_size = (64,64), batch_size = 32, class_mode = 'nhị phân') test_datagen=ImageDataGenerator(rescale=1 ./255) validation_generator = test_datagen.flow_from_directory(r"C:dogs vs catstest", target_size = (64,64), batch_size = 32, class_mode = 'binary') ## Xây dựng mô hình CNN #khởi tạo mô hình cnn=tf .keras.models.Sequential() #Convolution cnn.add(tf.keras.layers.Conv2D(filters=32,kernel_size=3,activation='relu', input_shape=[64,64,3])) #Pooling cnn .add(tf.keras.layers.MaxPool2D(pool_size=2,strides=2)) #Thêm một lớp Convolution nữa cnn.add(tf.keras.layers.Conv2D(filters=32,kernel_size=3,activation='relu ')) # Thêm một lớp gộp nữa cnn.add(tf.keras.layers.MaxPool2D(pool_size=2,strides=2)) #Flatening cnn.add(tf.keras.layers.Flatten()) #Full Connection Layer cnn.add(tf.keras.layers.Dense(units=128,activation='relu')) #Full Connection Layer cnn.add(tf.keras.layers.Dense(units=128,activation='relu')) #biên dịch mô hình cnn.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy']) cnn.summary()
MẠNG THẦN KINH TUYỆT VỜI

Kết quả đầu ra ở trên cho thấy số lượng tham số có thể huấn luyện là 813,217, có thể giảm bớt bằng cách thêm nhiều lớp chập và gộp. Với việc tăng số lượng lớp, các tính năng được trích xuất sẽ cụ thể hơn.

cnn.fit(x= train_generator , validation_data=validation_generator,epochs=25)
MẠNG THẦN KINH TUYỆT VỜI

Do đó, chúng tôi đạt được độ chính xác lên tới 90%, có thể tăng thêm bằng cách thêm nhiều lớp hơn trước lớp được kết nối đầy đủ.

Chúng tôi đã thực hiện 25 kỷ nguyên; bạn có thể tăng thêm số lượng kỷ nguyên để huấn luyện mô hình của mình.

Đọc thêm các bài viết trên của chúng tôi Blog của chúng tôi..

Phương tiện hiển thị trong bài viết này không thuộc sở hữu của Analytics Vidhya và được sử dụng theo quyết định riêng của Tác giả. 

tại chỗ_img

Tin tức mới nhất

tại chỗ_img

Trò chuyện trực tiếp với chúng tôi (chat)

Chào bạn! Làm thế nào để tôi giúp bạn?