CONVOLUTIONAL NEURAL NETWORK LÀ GÌ

Trong mạng nơ-ron, mạng nơ-ron tích chập (ConvNets tốt CNNs, Convolutional Neural Network) là 1 trong những trong những phương pháp bao gồm nhằm triển khai thừa nhận ngoại hình ảnh, phân mô hình hình ảnh. CNN được áp dụng thoáng rộng trong một số lĩnh vực nlỗi phát hiện đối tượng người tiêu dùng, dấn dạng khuôn khía cạnh, ..... Bài viết này trình diễn một số kiến thức cơ bản vẫn từ tò mò về mạng nơ-ron tích chập và những kiến thức và kỹ năng liên quan tương tự như trình bày một ví dụ nhỏ dại về riêng biệt hình hình ảnh của chó và mèo bằng cách thực hiện phương thức trên.

Bạn đang xem: Convolutional neural network là gì

Tìm phát âm về CNN

Mô hình neural network

Mạng nơ-ron tự tạo (Neural Network - NN) là 1 mô hình xây dựng mô rộp phương pháp buổi giao lưu của mạng nơ-ron thần khiếp. Kết phù hợp với các kinh nghiệm học tập sâu (Deep Learning - DL), mạng nơ-ron tự tạo vẫn đổi thay một qui định khôn xiết khỏe mạnh mang đến kết quả tốt nhất có thể mang đến nhiều bài bác toán khó như dấn dạng ảnh, giọng nói tốt xử trí ngôn ngữ thoải mái và tự nhiên.

Lịch sử cách tân và phát triển của mạng nơ-ron tự tạo bước đầu Lúc Warren McCulloch với Walter Pitts vẫn tạo ra một mô hình tính tân oán đến mạng nơ-ron dựa vào các thuật tân oán Hotline là ngắn gọn xúc tích ngưỡng vào năm 1943. Tuy nhiên, để triển khai thân quen với đọc được một số kiến thức cơ phiên bản về quy mô mạng nơ-ron nhân tạp, bọn họ đã bàn cho hồi quy logictics - sản phẩm có thể xem như là quy mô neural network dễ dàng và đơn giản nhất cùng với chỉ input layer và output layer.

Giả sử chúng ta tất cả bài bác toán thù dựa đân oán năng lực dấn solo Ship hàng dựa trên khoảng cách với thời điểm cần giao trong thời gian ngày dựa vào dữ liệu vẫn mang đến trước. Từ đó ta có thể hiểu đúng bản chất với các cỗ dữ liệu x, y đến sẵn với x tất cả hai đặc trưng x1x_1x1​ và x2x_2x2​ thứu tự là khoảng cách và thời gian nên giao trong ngày, bọn họ đang thực hiện các phương pháp để kiếm được ước lượng y^=f(w,x)widehaty = f(w, x)y​=f(w,x) làm sao để cho gần kề với mức giá trị y nhất.

Đôi khi, bọn họ thường thực hiện hàm f(w,x)=wTxf(w, x) = w^Txf(w,x)=wTx nhằm dễ dàng tính toán thù, tuy nhiên áp ra output y là phần trăm đơn hàng bao gồm được trao hay không phải để Áp sạc ra vừa lòng được ĐK bao gồm dạng tựa như xác suất Có nghĩa là luôn có giá trị trong vòng trường đoản cú 0 mang lại 1 chúng ta thường xuyên sử dụng hàm logictics θ(z)=11+e−z heta(z) = frac11+e^-zθ(z)=1+e−z1​ cùng với z=f(w,x)z = f(w, x)z=f(w,x) hay được điện thoại tư vấn là hàm sighack làm cho hàm activation.

Lúc đó, hàm lỗi của một cho mỗi điểm x(i),y(i)x^(i), y^(i)x(i),y(i) được quan niệm là cross-entropy của y(i)y^(i)y(i) cùng y^(i)widehaty^(i)y​(i) như sau:

L=−(y(i)∗log(y^(i))−(1−y(i))∗log(1−y^(i)))L = -(y^(i) * log(widehaty^(i)) - (1 - y^(i)) * log(1 - widehaty^(i)) )L=−(y(i)∗log(y​(i))−(1−y(i))∗log(1−y​(i)))

Khi đó hàm này bên trên tổng thể dữ liệu được tính bằng phương pháp mang tổng các quý giá trên. Bằng biện pháp về tối ưu hàm mất mát này, hay bằng phương pháp đạo hàm gradient, bạn cũng có thể có thể nhận được quy mô tương xứng độc nhất mang đến bài tân oán cũng tương tự bộ dữ liệu vẫn mang đến. Tuy nhiên, dù nỗ lực nhưng lại phần đông giá trị ước chừng từ bỏ hàm bên trên vẫn có một vài chênh lệch với giá trị thực tế, thế cho nên để bảo đảm đến tính khả quan, người ta thường xuyên thêm 1 giá trị b tuyệt w0w_0w0​ vào để tính bằng phương pháp áp dụng f(w,x)=wTx+w0f(w, x) = w^Tx + w_0f(w,x)=wTx+w0​ giá trị này là cực hiếm bias rất có thể gọi là phần bù cho hầu hết chênh lệch khó/cấp thiết rất tè từ bước bên trên.

thường thì công việc tính toán thù của một quy mô mạng nơ-ron nhân tạo thường xuyên được bộc lộ bởi một biểu vật tính toán thù để có thể quan tiền tiếp giáp trực quan liêu hơn. Dưới đấy là một biểu vật biểu thị cho bài toán thù phân các loại dựa trên hồi quy logictics.

*

Hình ảnh từ trang web https://sebastianraschka.com/faq/docs/logisticregr-neuralnet.html

Convolutional Neural Network

Như trình bày sinh hoạt trên, Convolutional Neural Network là một giữa những phương thức chủ yếu Khi áp dụng tài liệu về ảnh. Kiến trúc mạng này xuất hiện vì các phương thức xử trí dữ liệu hình ảnh thường xuyên sử dụng quý hiếm của từng px. Vậy bắt buộc với cùng một ảnh có giá trị kích thước 100x100 sử dụng kênh RGB ta tất cả tổng số ta gồm 100 * 100 * 3 bởi 30000 nút ít ngơi nghỉ lớp nguồn vào. Điều đó kéo theo vấn đề gồm một vài lượng Khủng weight với bias dẫn cho mạng nơ-ron trsinh hoạt yêu cầu thừa béo bệu, khiến trở ngại đến Việc tính toán. ngoại giả, chúng ta có thể thấy rằng đọc tin của những px hay chỉ chịu tác động vị những pixel ngay gần bên nó, vậy nên việc làm lơ một số trong những nút ở tầng đầu vào trong mỗi lần đào tạo và giảng dạy sẽ không làm cho giảm độ đúng mực của mô hình. Vậy yêu cầu tín đồ ta áp dụng cửa ngõ số tích chập nhằm mục tiêu giải quyết vấn đề con số tmê mẩn số lớn nhưng vẫn trích xuất được đặc thù của hình ảnh.

Về phương diện nghệ thuật, vào mô hình học tập sâu CNN, mô hình hình ảnh nguồn vào vẫn chuyển nó qua 1 loạt những lớp tích chập cùng với các cỗ lọc, tiếp đến tới trường Pooling, rồi tiếp theo sau là những lớp được kết nối tương đối đầy đủ (FC — fully connected layers) cùng sau cuối áp dụng hàm softmax để phân loại một đối tượng người sử dụng dựa vào quý giá xác suất trong khoản từ bỏ 0 đến 1.

Convolution Layer

Convolution (lớp tích chập) là lớp thứ nhất trích xuất những đặc tính trường đoản cú hình hình ảnh. Tham mê số lớp này bao gồm 1 tập thích hợp các cỗ lọc rất có thể học tập được. Các bộ thanh lọc gần như nhỏ dại thông thường có kích cỡ hai phía trước tiên khoảng chừng 3x3 hoặc 5x5, .... và bao gồm độ sâu bằng cùng với độ sâu của đầu vào đầu vào. Bằng biện pháp tđuổi dần cỗ thanh lọc theo chiều ngang với dọc bên trên hình ảnh, chúng nhận được một Feature Map đựng những đặc trưng được trích xuất trường đoản cú trên hình ảnh nguồn vào.

Xem thêm: Tuổi Kỷ Sửu Sinh Năm 1949 Hợp Màu Gì ? Hợp Màu Gì? Mua Xe Tuổi Kỷ Sửu Hợp Đá Màu Gì

Quá trình trượt những bộ lọc thông thường sẽ có những quý hiếm được luật bao gồm:

padding: nguyên lý bộ đệm của cục thanh lọc tốt đó là phần màu sắc xám được cấp dưỡng ảnhstride: hình thức bước khiêu vũ trong quy trình tiến hành.

Hình minch họa sau để giúp bọn họ dễ dàng tưởng tượng hơn về quá trình trên:

*

Hình ảnh chụp từ trang CS231n Convolutional Neural Networks for Visual Recognition, nhằm nắm rõ rộng về Convolution Layer đa số tín đồ rất có thể gọi tiếp về phần giải thích ở trang này.

Với từng kernel không giống nhau ta vẫn học được đông đảo đặc trưng khác biệt của ảnh, buộc phải trong những convolutional layer ta vẫn sử dụng các kernel để học tập được không ít nằm trong tính của hình ảnh. Vì mỗi kernel tạo ra output là 1 trong những matrix yêu cầu k kernel vẫn tạo ra k output matrix. Ta phối kết hợp k output matrix này lại thành 1 tensor 3 chiều gồm chiều sâu k. Output đầu ra của convolutional layer vẫn qua hàm activation function trước khi thay đổi input của convolutional layer tiếp theo.

Pooling layer

Pooling layer hay được dùng giữa các convolutional layer, nhằm sút kích thước tài liệu nhưng vẫn giữ lại được các nằm trong tính đặc biệt. Kích thước dữ liệu bớt giúp bớt bài toán tính toán thù trong mã sản phẩm. Trong quá trình này, nguyên tắc về stride với padding vận dụng nhỏng phxay tính convolution bên trên hình ảnh.

*

Hình ảnh từ bỏ trang https://www.geeksforgeeks.org/cnn-introduction-to-pooling-layer/

Fully connected layer

Sau Lúc ảnh được truyền trải qua không ít convolutional layer và pooling layer thì Model sẽ học tập được kha khá các điểm lưu ý của hình ảnh thì tensor của output của layer sau cùng sẽ tiến hành là phẳng thành vector với gửi vào một trong những lớp được liên kết nhỏng một mạng nơ-ron. Với FC layer được kết hợp với những chức năng lại với nhau nhằm tạo ra một quy mô. Cuối thuộc sử dụng softmax hoặc sigmoid để phân nhiều loại Áp sạc ra.

*

Phân các loại ảnh

Bài toán thù phân các loại hình họa chó và mèo nghe có vẻ đơn giản, tuy thế nó chỉ được giải quyết kết quả vào vài ba năm qua bằng phương pháp áp dụng mạng nơ-ron tích phù hợp học sâu. Bằng những triển khai ví dụ này, bọn họ đang hiểu thêm được về Convolutional Neural Network ở bên cạnh đông đảo triết lý đang trình diễn trên.

Dữ liệu

Dữ liệu được sử dụng là tập dữ liệu Dogs vs. Cats bên trên Kaggle. Tập tài liệu này bao hàm ngay sát 25000 bộ hình ảnh chó với mèo đã có được gán nhãn sẵn trong một tệp csv đi kèm. Phần tài liệu này sẽ tiến hành áp dụng trong ví dụ này.

Các bước tiến hành

Trước hết chúng ta import những thư viện bởi đoạn mã sau:

import os, cv2, itertoolsimport numpy as npimport pandas as pdimport matplotlib.pyplot as plt%matplotlib inline!pip install np_utilsfrom keras.utils.np_utils import to_categoricalfrom keras.models import Sequentialfrom keras.layers import Conv2Dfrom keras.layers import MaxPooling2Dfrom keras.layers import Flattenfrom keras.layers import Densefrom keras.layers import Dropoutfrom sklearn.utils import shuffle!pip install sklearnimport sklearnfrom sklearn.model_selection import train_test_splitTiếp đó là có mang một số hằng số nhằm dễ ợt sử dungj:

TRAIN_DIR = "./train/"TEST_DIR = "./test1/"ROWS = 64COLS = 64CHANNELS = 3Từ đó bọn họ mang băng thông tài liệu bằng đoạn mã sau:

train_images = test_images = Dữ liệu là tập các ảnh cần cần tiền xử lý để nhận được kết quả xuất sắc hơn, vậy buộc phải chúng ta đang tiến hành nhỏng sau:

def read_image(file_path): #print(file_path) img = cv2.imread(file_path, cv2.IMREAD_COLOR) #print(img) return cv2.resize(img, (ROWS, COLS), interpolation=cv2.INTER_CUBIC) def prep_data(images): m = len(images) n_x = ROWS*COLS*CHANNELS X = np.ndarray((m,ROWS,COLS,CHANNELS), dtype=np.uint8) y = np.zeros((m,1)) print("X.shape is ".format(X.shape)) for i,image_file in enumerate(images) : image = read_image(image_file) X = np.squeeze(image.reshape((ROWS, COLS, CHANNELS))) if "dog" in image_file.lower() : y = 1 elif "cat" in image_tệp tin.lower() : y = 0 else : # for chạy thử data y = image_file.split("/")<-1>.split(".")<0> if i%5000 == 0 : print("Proceed of ".format(i, m)) return X,y X_train, y_train = prep_data(train_images)X_kiểm tra, test_idx = prep_data(test_images)Sau khi thừa nhận giá tốt trị vẫn giải pháp xử lý, chúng ta triển khai chia thành nhị tập train cùng validate cùng tạo nên one-hot vector

X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=1)y_train_one_hot = to_categorical(y_train)num_classes = y_train_one_hot.shape<1>y_val_one_hot = to_categorical(y_val)X_train_norm = X_train / 255# X_val_norm = X_val / 255Tiếp mang lại là quan niệm mạng CNN được sử dụng bao hàm 4 Convolutional layers theo sau là một trong Fully Connected Layer với sử dụng đầu ra là Sigmoid.

mã sản phẩm = Sequential()Mã Sản Phẩm.add(Conv2D(32, (3,3), input_shape=(ROWS, COLS, CHANNELS), activation="relu"))mã sản phẩm.add(MaxPooling2D(pool_size = (2,2)))Model.add(Conv2D(64, (3,3), activation="relu"))model.add(MaxPooling2D(pool_kích thước = (2,2)))Mã Sản Phẩm.add(Dropout(0.4))Mã Sản Phẩm.add(Conv2D(128, (3,3), activation="relu"))Mã Sản Phẩm.add(MaxPooling2D(pool_kích thước = (2,2)))Mã Sản Phẩm.add(Dropout(0.4))mã sản phẩm.add(Conv2D(256, (3,3), activation="relu"))Mã Sản Phẩm.add(MaxPooling2D(pool_kích cỡ = (2,2)))model.add(Dropout(0.4))mã sản phẩm.add(Conv2D(512, (1,1), activation="relu"))#model.add(MaxPooling2D(pool_kích cỡ = (2,2)))model.add(Flatten())mã sản phẩm.add(Dropout(0.4))model.add(Dense(units=120, activation="relu"))model.add(Dense(units=2, activation="sigmoid"))mã sản phẩm.compile(optimizer="adam", loss="categorical_crossentropy", metrics=<"accuracy">)Mã Sản Phẩm.summary()Tiếp theo là đào tạo quy mô bằng phương pháp sử dụng hàm fit có sawnx:

model.fit(X_train_norm, y_train_one_hot, validation_data=(X_val_norm, y_val_one_hot), epochs=50, batch_kích cỡ = 64)Sau Lúc huấn luyện và giảng dạy kết thúc, chúng ta có thể test predict bởi quy mô vừa giảng dạy bằng đoạn mã sau:

image = X_train<0>test_pred = Model.predict_classes(image.reshape(1, 64, 64, 3))plt.figure(figsize=(4,2))plt.imshow(image)plt.show()print("Our Model Prediction: ".format(test_pred))Dường như bằng phương pháp thực hiện tập test và hàm evaluate bọn họ cũng hoàn toàn có thể tính toán thù điểm số của mô hình. Sau khi tính thì hiệu quả chiếm được tương đối cao ~ 90.89%.

Kết luận

Bài viết này trình diễn một trong những kiến thức và kỹ năng cơ bạn dạng sẽ từ bỏ tò mò về mạng nơ-ron tích chập cùng các kiến thức và kỹ năng liên quan cũng tương tự trình diễn một ví dụ nhỏ tuổi về riêng biệt hình ảnh của chó và mèo bằng phương pháp áp dụng cách thức trên. Có thể thấy rằng các framework Machine learning đang cung ứng tốt nhất có thể trong câu hỏi thực hiện các quy mô dựa vào các mạng nơ-ron nhân tạo để người tiêu dùng rất có thể ko đề xuất nắm rõ về các mạng nơ-ron cũng rất có thể thực hiện. Tuy nhiên nhằm có chức năng từ bỏ Reviews với cải tiến các phương pháp của bạn dạng thân, người tiêu dùng vẫn cần tò mò kĩ về thực chất với biện pháp buổi giao lưu của các phương thức này. Bài viết đến đó là hoàn thành cảm ơn số đông người sẽ giành thời hạn phát âm.