Hướng dẫn cnn image classification python keras - cnn phân loại hình ảnh python keras
Hướng dẫn này thể hiện đào tạo một mạng lưới thần kinh tích chập đơn giản (CNN) để phân loại hình ảnh CIFAR. Bởi vì hướng dẫn này sử dụng API tuần tự Keras, việc tạo và đào tạo mô hình của bạn sẽ chỉ lấy một vài dòng mã. Show
Nhập khẩu tenorflow
Tải xuống và chuẩn bị bộ dữ liệu CIFAR10Bộ dữ liệu CIFAR10 chứa 60.000 hình ảnh màu trong 10 lớp, với 6.000 hình ảnh trong mỗi lớp. Bộ dữ liệu được chia thành 50.000 hình ảnh đào tạo và 10.000 hình ảnh thử nghiệm. Các lớp là loại trừ lẫn nhau và không có sự chồng chéo giữa chúng. Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz 170500096/170498071 [==============================] - 11s 0us/step 170508288/170498071 [==============================] - 11s 0us/step Xác minh dữ liệuĐể xác minh rằng bộ dữ liệu có vẻ chính xác, hãy vẽ vẽ 25 hình ảnh đầu tiên từ bộ đào tạo và hiển thị tên lớp bên dưới mỗi hình ảnh:
Tạo cơ sở tích chập6 dòng mã bên dưới xác định cơ sở tích chập bằng cách sử dụng một mẫu chung: một ngăn xếp các lớp Conv2D và MaxPooling2D. Là đầu vào, CNN lấy các tenxơ hình dạng (Image_Height, Image_Width, Color_Channels), bỏ qua kích thước lô. Nếu bạn chưa quen với các kích thước này, Color_Channels đề cập đến (R, G, B). Trong ví dụ này, bạn sẽ định cấu hình CNN của mình để xử lý các đầu vào có hình dạng (32, 32, 3), là định dạng của hình ảnh CIFAR. Bạn có thể làm điều này bằng cách chuyển đối số 6 cho lớp đầu tiên của bạn.
Hãy hiển thị kiến trúc của mô hình của bạn cho đến nay:
Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d (Conv2D) (None, 30, 30, 32) 896 max_pooling2d (MaxPooling2D (None, 15, 15, 32) 0 ) conv2d_1 (Conv2D) (None, 13, 13, 64) 18496 max_pooling2d_1 (MaxPooling (None, 6, 6, 64) 0 2D) conv2d_2 (Conv2D) (None, 4, 4, 64) 36928 ================================================================= Total params: 56,320 Trainable params: 56,320 Non-trainable params: 0 _________________________________________________________________ Ở trên, bạn có thể thấy rằng đầu ra của mỗi lớp Conv2D và MaxPooling2D là một tenxor 3D có hình dạng (chiều cao, chiều rộng, kênh). Kích thước chiều rộng và chiều cao có xu hướng thu nhỏ khi bạn đi sâu hơn trong mạng. Số lượng kênh đầu ra cho mỗi lớp Conv2D được kiểm soát bởi đối số đầu tiên (ví dụ: 32 hoặc 64). Thông thường, khi chiều rộng và chiều cao co lại, bạn có thể đủ khả năng (tính toán) để thêm nhiều kênh đầu ra trong mỗi lớp Conv2D. Thêm các lớp dày đặc trên đầuĐể hoàn thành mô hình, bạn sẽ cung cấp tenxơ đầu ra cuối cùng từ cơ sở tích chập (có hình dạng (4, 4, 64))) thành một hoặc nhiều lớp dày đặc để thực hiện phân loại. Các lớp dày đặc lấy các vectơ làm đầu vào (là 1D), trong khi đầu ra hiện tại là tenxơ 3D. Đầu tiên, bạn sẽ làm phẳng (hoặc không cuộn) đầu ra 3D thành 1D, sau đó thêm một hoặc nhiều lớp dày đặc trên đầu. CIFAR có 10 lớp đầu ra, vì vậy bạn sử dụng lớp dày đặc cuối cùng với 10 đầu ra.
Đây là kiến trúc hoàn chỉnh của mô hình của bạn:
Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d (Conv2D) (None, 30, 30, 32) 896 max_pooling2d (MaxPooling2D (None, 15, 15, 32) 0 ) conv2d_1 (Conv2D) (None, 13, 13, 64) 18496 max_pooling2d_1 (MaxPooling (None, 6, 6, 64) 0 2D) conv2d_2 (Conv2D) (None, 4, 4, 64) 36928 flatten (Flatten) (None, 1024) 0 dense (Dense) (None, 64) 65600 dense_1 (Dense) (None, 10) 650 ================================================================= Total params: 122,570 Trainable params: 122,570 Non-trainable params: 0 _________________________________________________________________ Tóm tắt mạng cho thấy các đầu ra (4, 4, 64) được làm phẳng thành các vectơ hình dạng (1024) trước khi trải qua hai lớp dày đặc. Biên dịch và đào tạo mô hình 0 1Đánh giá mô hình 2 3 4 5CNN đơn giản của bạn đã đạt được độ chính xác của thử nghiệm trên 70%. Không tệ cho một vài dòng mã! Đối với một kiểu CNN khác, hãy xem TensorFlow 2 QuickStart cho các chuyên gia ví dụ sử dụng API phân lớp Keras và 7.
Làm cách nào để sử dụng phân loại hình ảnh CNN trong Python?Trình phân loại hình ảnh bằng CNN .. Python | Phân loại hình ảnh bằng cách sử dụng Keras .. keras.fit () và keras.fit_generator (). Lớp keras.conv2d .. Cnn | Giới thiệu về lớp gộp .. Cnn | Giới thiệu về đệm .. Áp dụng mạng thần kinh tích chập trên bộ dữ liệu MNIST .. Chức năng kích hoạt trong mạng lưới thần kinh .. Chúng ta có thể sử dụng CNN để phân loại hình ảnh không?CNN là viết tắt của Mạng thần kinh tích chập, một mạng thần kinh chuyên dụng để xử lý dữ liệu có hình dạng đầu vào như ma trận 2D như hình ảnh.CNN thường được sử dụng để phát hiện và phân loại hình ảnh.CNN's are typically used for image detection and classification.
CNN nào là tốt nhất để phân loại hình ảnh?Các mạng thần kinh kết hợp phổ biến nhất để phát hiện đối tượng và phân loại danh mục đối tượng từ hình ảnh là Alex Nets, Googlenet và Resnet50.Một loạt các bộ dữ liệu hình ảnh có sẵn để kiểm tra hiệu suất của các loại CNN khác nhau.Alex Nets, GoogLeNet, and ResNet50. A variety of image data sets are available to test the performance of different types of CNN's.
Làm thế nào để bạn sử dụng phân loại hình ảnh keras?Phân loại hình ảnh.. Trên trang này.. Setup.. Tải xuống và khám phá bộ dữ liệu .. Tải dữ liệu bằng tiện ích Keras.Tạo một bộ dữ liệu .. Hình dung dữ liệu .. Định cấu hình bộ dữ liệu cho hiệu suất .. Chuẩn hóa dữ liệu .. Một mô hình keras cơ bản.Tạo mô hình.Biên dịch mô hình.Tóm tắt mô hình.Đào tạo mô hình .. |