BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ MÔN HỌC CƠ SỞ VÀ ỨNG DỤNG AI ĐỀ TÀI NHẬN DẠNG TRÁI CÂY TỪ HÌNH ẢNH DÙNG MẠNG NƠ RON TÍCH CHẬP Giảng viên hướng.
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ MÔN HỌC: CƠ SỞ VÀ ỨNG DỤNG AI ĐỀ TÀI NHẬN DẠNG TRÁI CÂY TỪ HÌNH ẢNH DÙNG MẠNG NƠ-RON TÍCH CHẬP Giảng viên hướng dẫn: PGS.TS Trương Ngọc Sơn Mã lớp học phần: AIFA436864_04 Sinh viên thực hiện: Thái Tuấn Vũ 19161327 Trương Nguyễn Thảo Nguyên 19161269 Học kì II năm học: 2021 – 2022 TP Thủ Đức, tháng năm 2022 Bảng phân công thực nội dung đề tài ST T Nội dung Chuẩn bị tập liệu Thiết kế vào kiểm tra mơ hình Người thực Trương Nguyễn Thảo Nguyên Thái Tuấn Vũ Trương Nguyễn Thảo Nguyên Thái Tuấn Vũ Viết báo cáo chương 1, mục 2.1 mục 2.2 chương Viết báo cáo mục 2.2 chương chương Kiểm tra chỉnh sữa báo cáo Chuẩn bị Slide trình bày Họ tên sinh viên Thái Tuấn Vũ Trương Nguyễn Thảo Nguyên Thái Tuấn Vũ Trương Nguyễn Thảo Nguyên Trương Nguyễn Thảo Nguyên Thái Tuấn Vũ Mức độ đóng góp đề tài 50% 50% Link báo cáo nhóm sinh viên thực hiện: Danh mục bảng hình ảnh MỤC LỤC Phần mở đầu Bài toán nhận dạng phân loại trái vấn đề cần nghiên cứu để đáp ứng việc phát triển ngành nông nghiệp, công nghiệp hóa ngành chế biến xuất trái Thời gian gần đây, có nhiều phát triển vượt bậc lĩnh vực thị giác máy tính nên phương pháp tự động việc nhận dạng, phân loại đánh giá chất lượng loại hoa đẩy mạnh nghiên cứu đưa vào ứng dụng thực tế Tuy nhiên, phương pháp xử lý ảnh đơn chưa thật đáp ứng u cầu tốn cịn tồn số hạn chế đặc trưng toán đặt ra: số lượng chủng loại củ trái lớn, nhiều loại hoa có hình dạng, màu sắc tương tự Để giải vấn đề này, mạng nơ-ron tích chập (Convolutional Neural Network) xây dựng dựa nguyên lý phép tích chập ảnh để tách riêng biệt đặc điểm mẫu ảnh đưa vào dựa vào nhờ lọc trình huấn luyện để giảm thiểu việc tính tốn Trong báo cáo này, nhóm sinh viên thực xây dựng mơ hình đơn giản phân lớp loại trái dựa vào cấu trúc mạng nơ-ron tích chập Bài tốn xây dựng ngơn ngữ Python, sử dụng Google Colap để chạy chương trình sử dụng thư viện hỗ trợ TensorFlow Keras Chương 1: Kiến trúc tổng quát mạng nơ-ron tích chập Mạng nơ-ron tích chập hay mạng CNN (Convolutions Neural Network) mơ hình mạng học sâu phổ biến để xử lý liệu không gian hai chiều ứng dụng hiệu lĩnh vực thị giác máy tính Một mạng tích chập định nghĩa mạng nơ-ron sử dụng tích chập thay phép nhân bình thường lớp mạng Do đó, kiến trúc mạng tích chập bao gồm lớp mạng tương tự mạng nhiều lớp, phải có lớp sử dụng tích chập Trong mạng CNN bao gồm lớp sau: Lớp ngõ vào (Input layer), Lớp chập (Convolution layer), Hàm kích hoạt cho lớp tích chập (Activation function), Lớp gộp (Pooling layer), Lớp kết nối đầy đủ (Fully connected layers) Các lớp thay đổi số lượng trình tự xếp để tạo mơ hình cho phù hợp với yêu cầu khác toán Tùy thuộc vào yêu cầu ứng dụng mà số lượng lớp mạng tăng lên Hình cho thấy kiến trúc tổng quát mạng nơ-ron tích chập Hình 1: Kiến trúc tổng qt mạng nơ-ron tích chập Sau đây, nhóm tác giả phân tích chức lớp: - Lớp ngõ vào (Input layer): có chức lưu liệu ảnh đưa vào Giả sử ảnh có 100 điểm ảnh phân bố theo chiều ngang 100 điểm ảnh phân bố theo chiều dọc, độ sâu cho màu đỏ, xanh xanh dương có kích thước lớp ngõ vào 100×100×3 - - - Lớp chập (Convolution layer): có chức thực phép tích chập cho hình ảnh từ lớp trước Trong đó, số lượng lọc tạo định số kênh ảnh ngõ Tùy thuộc vào số lượng lọc (hoặc kernel) mà ta có số lượng ảnh ngõ tương ứng Các ảnh ngõ gọi đồ đặc điểm ảnh (output feature map) Kernel phụ thuộc vào lớp ngõ vào, trường hợp ảnh xám, kernel lọc 2D ảnh màu kernel phải 3D cho kênh R, G, B tương ứng Hàm kích hoạt (Activation function): Hàm ReLU thường dùng làm hàm kích hoạt cho lớp tích chập Ngõ vào ngõ lớp hàm kích hoạt có kích thước Lớp Pooling: lớp có chức giảm bớt số lượng phần tử feature map từ làm giảm kích thước ảnh Lớp kết nối đầy đủ (Fully connected layers): lớp cuối mạng nơron tích chập Các lớp kết nối đầy đủ có kiến trúc giống mạng nơron truyền thống Các ma trận ngõ lớp Pooling dạng ma trận chiều chuyển đổi thành vector đƣa đến lớp kết nối đầy đủ Tùy thuộc vào ứng dụng mà thay đổi số lượng lớp số lượng nơ-ron lớp kết nối đầy đủ 1.1 Lớp tích chập Có thể nói, lớp tích chập mạng CNN có vai trị quan trọng, cấu trúc lớp thể ý tưởng xây dựng liên kết cục điểm ảnh Các liên kết tính tốn phép tích chập lọc (filters) với giá trị điểm ảnh vùng ảnh xét Trong ví dụ Hình [12], sử dụng lọc có kích thước 3x3 Bộ lọc di chuyển đến vùng ảnh thực quét toàn ảnh tạo ảnh có kích thước nhỏ với kích thước ảnh đầu vào Kích thước phụ thuộc vào kích thước Padding (vùng trắng) thêm vào viền ảnh gốc tính theo cơng thức (1) [13]: Với: o kích thước ảnh đầu i kích thước ảnh đầu vào p kích thước Padding thêm vào ảnh k kích thước lọc s bước trượt lọc Hình 2: Ví dụ lọc tích chập Hình 3: Trường hợp có Padding khơng Padding vào ảnh dùng Hình [2] cho thấy khác hai trường hợp có thêm viền trắng không thêm Padding vào ảnh thực phép tích chập Sau đưa ảnh từ lớp ngõ vào đến lớp tích chập có đầu loạt ảnh có đặc tính phụ thuộc vào lọc dùng để thực phép tích chập.Ban đầu, lọc có trọng số khởi tạo ngẫu nhiên cập nhật dần suốt trình huấn luyện để đạt hiệu tốt 1.2 Lớp hàm kích hoạt Sau thực phép tích chập lớp tích chập, có ma trận bao gồm giá trị dương không dương Các giá trị đưa qua hàm kích hoạt để hiệu chỉnh Lớp hàm kích hoạt xây dựng với ý nghĩa đảm bảo tính phi tuyến mơ hình thực huấn luyện sau tiến hành phép tính tốn tuyến tính thơng qua lớp Tích chập Trong hàm kích hoạt (ReLU, Sigmoid, Tanh….), hàm ReLU sử dụng với lý cài đặt đơn giản, tốc độ xử lý nhanh mà đảm bảo tính tốn hiệu Đặc điểm đơn giản hàm ReLU lọc bỏ giá trị âm, tức giá trị bé gán giá trị lớn giữ nguyên Đồ thị hàm ReLU mơ tả Hình [1] Thơng thường, hàm ReLU dùng sau lớp tích chập, với ảnh đầu có kích thước với ảnh đầu vào, giá trị điểm ảnh bé ) chuẩn hóa 1.3 Lớp pooling Lớp Pooling xem lớp tính tốn quan trọng mạng CNN, vị trí lớp sau lớp Tích chập Hình 5: Phương pháp Average Pooling Max Pooling Hình 4: Biểu thức đồ thị hàm kích hoạt ReLU lớp ReLU Lớp Pooling giúp giảm kích thước ảnh đảm bảo đặc tính quan trọng, bật ảnh đưa vào Khi giảm kích thước hình ảnh giúp làm giảm số lượng tham số việc tính tốn trở nên đơn giản Lớp pooling sử dụng cửa sổ trượt để quét toàn ảnh để lựa chọn lưu lại giá trị đại diện cho toàn thơng tin vùng ảnh Hình trình bày hai phương pháp: lấy giá trị điểm ảnh lớn (Max Pooling ) lấy giá trị trung bình điểm ảnh vùng ảnh (Average Pooling )là phương pháp lấy mẫu thường dùng lớp Pooling [3] 1.4 Lớp kết nối đầy đủ Lớp kết nối đầy đủ có cấu trúc tương tự mạng nơ-ron thông thường, tất điểm ảnh kết nối đầy đủ với nơ ron lớp Điểm khác biệt lớn với mạng nơ-ron thông thường kích thước ảnh đầu vào lớp giảm bớt nhiều thông tin quan trọng hình ảnh dùng để nhận dạng giữ ngun Chính điều việc tính tốn nhận dạng sử dụng mơ hình truyền thẳng khơng cịn phức tạp tốn nhiều thời gian mạng nơ-ron thông thường Lớp kết nối đủ sử dụng mạng nhiều lớp với hàm kích hoạt softmax cho lớp nơ-ron ngõ Ngõ vào lớp kết nối đủ vector chiều Do đó, ma trận lớp pooling cuối phải chuyển thành vector trước đưa đến lớp kết nối đủ minh họa Hình [1] Hình 6: Chuyển đổi từ ma trận sang vector cho lớp kết nối đầy đủ 10 Chương 2: Thiết kế thực thi ứng dụng nhận dạng trái 2.1 Mô tả tập liệu Tập liệu gồm có 984 ảnh, phần sưu tầm từ google, phần sưu tầm từ kaggle [4], thế, hình ảnh có kích thước không đồng Tập liệu chia thành thư mục “Train” với 672 hình ảnh thư mục “Test” với 276 hình ảnh để upload lên Google Drive Mục đích chia tập mẫu thành tệp ảnh thư mục “Train” dùng làm liệu gốc để máy học ảnh nằm thư mục “Test” khác ảnh thư mục “Train” để đưa vào mơ hình sau học xong ảnh thư mục “Train”, để giúp mơ hình tiếp tục học đánh giá độ xác Trong thư mục “Train” “Test” ảnh phân vào vào thư mục tương ứng với loại trái nhóm mong muốn mơ hình nhận dạng được: Cam, Chuối, Dưa hấu, Khế, Táo, Thanh long Thơm Bảng trình bày chi tiết số lượng loại tập liệu Hình minh họa cho loại trái mà nhóm thực đề tài sử dụng mơ hình Hình 7: Các loại trái sử dụng mơ hình Bảng 1: Số lượng loại trái tập Train tập Test 11 2.2 Sơ đồ khối thiết kế Với ứng dụng phân lớp loại trái gồm: Cam, Chuối, Dưa hấu, Khế, Táo, Thanh long Thơm, nhóm tác giả đưa sơ đồ khối ứng dụng Hình Mơ hình sử dụng hai lớp tích chập (theo sau lớp tích chập lớp MaxPoling) lớp ẩn, lớp ngõ lớp mạng kết nối đầy đủ Các khối có chức cụ thể sau: - - Khối Resize có chức định dạng lại hình ảnh với kích thước 100x100 Khối lớp tích chập thực phép chập ảnh đưa vào với lọc có kích thước 3x3, sử dụng 32 lọc cho ảnh ngõ vào để tạo 32 ma trận feature map khác sử dụng hàm kích hoạt ReLU Khối MaxPooling có chức lấy giá trị lớn vùng ảnh với cửa sổ pooling 2x2, bước trượt Khối Flatten để chuyển ngõ biểu diễn hình ảnh dạng ma trận sang dạng Fully connected Flatten 32, ReLU MaxPooling 2x2 connected output ully connectedFully connected Fully connected Fully connected Fully 7, ReLU 64, ReLU 128, ReLU 256, ReLU 256, ReLU - vector để phù hợp việc dùng làm ngõ vào cho lớp Fully Connected có 32 nơ-ron Các khối Fully Connected 1, 2, 3, 4, output lớp kết nối đầy đủ với số lượng nơ-ron là: 32, 64, 128, 256, 256 ; kèm theo hàm kích hoạt ReLU Hình 8: Sơ đồ khối thiết kế 12 2.3 Thực thi thiết kế 2.3.1 Tải tập liệu lên Google Drive Trước hết, cần tải tập liệu gồm thư mục “Train”và “Test” mô tả mục 2.1 lên Google Drive Hình Trong tập “Train” “Test” có thư mục bên trong, thư mục chứa hình ảnh loại trái với tên tương ứng Hình 10 Hình 9: Các thư mục chứa hình ảnh 2.3.2 Định dạng lại kích thước ảnh Đầu tiên tiến hành liên kết với Google Drive lưu trữ tập mẫu khai báo thư viện cần sử dụng q trình xây dựng mơ hình với dịng lệnh thực Google CoLab Hình 11 Hình 10: Tải hai thư mục train test lên Google Drive 13 Hình 11: Code liên kết với Google Drive khai báo thư viện Các ảnh lưu trữ Google Drive đưa vào khối “Resize” mơ hình, ảnh chuẩn hóa dạng nhị phân ảnh khơng kích thước nên điều chỉnh đồng với kích thước 100x100px với câu lệnh thực thi Google Colab Hình 12 Hình 12: Code thực chuẩn hóa ảnh ngõ vào 14 2.3.3 Xử lý hình ảnh Các ảnh sau chuẩn hóa kích thước đưa sang khối “Tích chập” khối “Max Pooling” lần liên tục Đối với khối “ Tích chập” thơng số filters = 32 nghĩa sử dụng 32 lọc cho ảnh ngõ vào để tạo 32 ma trận feature map khác nhau, kernel_size = để xác định kích thước cửa sổ chập 3x3 hàm kích hoạt dùng hàm ReLU Đối với khối “Max Pooling” thơng số pool_size = để xác định kích thước cửa sổ trượt 2x2 cửa sổ trượt giá trị lớn giữ lại điều làm giảm kích thước ảnh lấy điểm bật hình ảnh strides = giá trị bước trượt cửa sổ trượt Hình 13 thể rõ câu lệnh tương ứng với q Hình 13: Code thực Tích chập Pooling hình ảnh trình vừa nêu Sau thực tích chập MaxPooling hình ảnh, lúc ảnh có dạng ma trận nên cần phải chuyển thành dạng vec-tơ trước đưa vào mạng nơ-ron lớp kết nối đầy đủ thông qua khối “Flatten” với câu lệnh trình bày Hình 14 Hình 14: Code thực chuyển hình ảnh sang dạng vec-tơ 15 2.3.4 Training mơ hình Cuối liệu đưa qua lớp “Kết nối đầy đủ” để thực trình học, mạng nơ rơn xây dựng có lớp ẩn với lớp ẩn dùng hàm kích hoạt hàm ReLU, với lớp ẩn thứ có 32 nơ-ron, lớp ẩn thứ hai có 64 nơ-ron, lớp ẩn thứ ba có 128 nơ-ron, lớp ẩn thứ tư lớp ẩn thứ có 256 nơ-rơn lớp Sau liệu qua lớp ngõ với hàm kích hoạt hàm Softmax với số nơ-ron số ngõ tương ứng với nhóm trái phân loại, hàm kích hoạt SoftMax để ngõ có phân bố xác suất làm tăng độ liên kết giữ ngõ tổng xác suất ngõ kết mong muốn ngõ tương ứng với nhóm trái cao ngõ thứ tự ngõ cao trùng với thứ tự loại trái dự đốn Chi tiết code q trình biểu diễn Hình 15 Hình 15: Code thực training lớp kết nối đầy đủ Sau thực xây dựng mơ hình tiến hành trainning từ mơ hình vừa xây dựng với tập mẫu lấy từ thư mục “Train” để cập nhật giá trị trọng số cho sai số nhỏ kiểm tra lại mơ hình hình tệp “Test” để tiếp tục cập nhật trọng số đánh giá tính xác với số lần thực giá trị gán cho thông số epochs =15 Sau kết thúc trình học, mơ hình nhận dạng trái sử dụng mạng tích chập lưu lại vào Google Drive Các câu lệnh tương ứng trình biểu diễn Hình 16 Để kiểm tra lại độ xác mơ hình tiến hành tải lại mơ hình Hình 16: Code thực việc huấn luyện mơ hình lưu lại mơ hình huấn luyện model1.5 vừa lưu Google Drive Sau đó, tải hình ảnh dùng để kiểm tra vào Google Colab sau đồng kích thước ảnh 100x100 chuyển thành nhị phân lưu trữ giá trị sau xử lí ảnh dạng vec-tơ cho hiển thị ảnh hình Tiếp theo đưa ảnh sau chuẩn hóa vào mơ hình cnn vừa tải từ Google Drive để tìm vị trí ngõ có giá trị gần in tên loại trái tương ứng vị trí thơng qua mảng tạo trước dùng để lưu tên loại trái 16 theo thứ tự ngõ mạng nơ-ron tích chập Các lệnh thực q trình Hình 17 Chương 3: Kết thảo luận 3.1 Kết Từ Hình 18, thấy q trình huấn luyện mạng nơ-ron tích chập 15 lần (epoch=15) sau lần học xong in loss, accurate lỗi độ xác dùng ảnh thư mục “Train” đưa vào mạng nơ-ron tích chập, val_loss, val_accurate lỗi độ xác dùng ảnh thư mục “Test” đưa vào mạng cnn Sau hoàn tất 15 lần huấn luyện, nhìn chung loss val_loss Hình 17: Code kiểm tra hoạt động mơ hình nhận dạng trái Hình 18: Kết huấn luyện mơ hình giảm , accurate val_accurate tăng từ nhận xét q trình học mơ hình đạt u cầu hiệu cao biểu rõ độ xác ban đầu đạt khoảng 38% mẫu thư mục “Train”, 60% mẫu thư mục “Test” khoảng 94% mẫu thư mục “Train”, 95% mẫu thư mục “Test” 17 Nhóm sinh viên thực kiểm tra hoạt động mơ hình vừa xây dựng cách đưa ảnh loại trái khác vào mô hình kết nhận Hình 19, loại trái nằm thuộc nhóm trái nhóm lựa chọn cho mạng cnn học mơ hình nhận dạng trái ổi trái măng cụt khơng thuộc nhóm trái nhóm lựa chọn nên mạng đưa kết loại trái có thuộc tính tương tự: trái măng cụt có màu sắc giống trái long trái ổi có màu sắc giống trái chuối nên mơ hình phân trái măng cụt vào nhóm “Thanh long” phân trái ổi vào nhóm “Chuối” Hình 19: Kết nhận dạng loại trái 3.2 Hạn chế đề tài hướng phát triển Trong q trình kiểm tra nhiều lần, nhóm sinh viên thực đề tài nhận thấy mơ hình nhóm xây dựng số hạn chế cịn tồn tại, mơ hình đơi cịn nhầm lẫn nhóm trái có chung số đặc điểm màu sắc, hình dạng… phần tập liệu nhóm thu thập chưa đủ lớn Ngồi nhận 18 dạng lúc có nhiều loại hình ảnh đưa vào kết nhận loại Để hồn thiện mơ hình vừa xây dựng, nhóm tác giả đề xuất cải thiện chất lượng số lượng tập mẫu, nghiên cứu phát triển để mơ hình có thêm chức nhận dạng đưa tên loại trái ảnh, tính tốn cân nặng loại đưa vào tình trạng ( sống hay chín, cịn sử dụng khơng…) 19 Tài liệu tham khảo [1] Trương Ngọc Sơn, Giáo trình Trí tuệ nhân tạo sở ứng dụng, Nhà xuất Đại học Quốc gia Tp Hồ Chí Minh – 2020, 93 – 113 [2] Sik-Ho Tsang.(2/16/2019), Review: DRN-Dilated Residual Networks,vvvvvvvv https://towardsdatascience.com/review-drn-dilated-residual-networks-imageclassification-semantic-segmentation-d527e1a8fb5 [3] Samer Hijazi, Rishi Kumar, and Chris Rowen (2015) Image Recognition Using Convolutional Neural Networks Cadence Whitepaper, 1–12, truy cập ngày 19/5/2022, https://ip.cadence.com/uploads/901/cnn_wp-pdf [4] Kaggle, https://www.kaggle.com/, truy cập ngày 22/5/2022 20 ... Google Drive Hình Trong tập “Train” “Test” có thư mục bên trong, thư mục chứa hình ảnh loại trái với tên tương ứng Hình 10 Hình 9: Các thư mục chứa hình ảnh 2.3.2 Định dạng lại kích thước ảnh Đầu... hàm ReLU mơ tả Hình [1] Thơng thường, hàm ReLU dùng sau lớp tích chập, với ảnh đầu có kích thước với ảnh đầu vào, giá trị điểm ảnh bé ) chuẩn hóa 1.3 Lớp pooling Lớp Pooling xem lớp tính tốn quan... lớp loại trái gồm: Cam, Chuối, Dưa hấu, Khế, Táo, Thanh long Thơm, nhóm tác giả đưa sơ đồ khối ứng dụng Hình Mơ hình sử dụng hai lớp tích chập (theo sau lớp tích chập lớp MaxPoling) lớp ẩn, lớp