GIỚI THIỆU
GIỚI THIỆU
Xoài là một loại trái cây được ưa chuộng và mang lại giá trị kinh tế cao Hiện nay, diện tích trồng xoài đang ngày càng mở rộng, tuy nhiên, việc phân loại xoài sau thu hoạch chậm có thể dẫn đến giảm chất lượng sản phẩm.
Ngành công nghiệp chế biến trái cây Việt Nam chủ yếu gồm các doanh nghiệp vừa và nhỏ, thiếu sự tập trung trong từng giai đoạn sản xuất như ở nước ngoài Điều này dẫn đến việc sử dụng máy móc tự động hóa còn hạn chế, khiến các công đoạn chủ yếu phải thực hiện thủ công Hậu quả là doanh nghiệp có thể chịu thiệt hại lớn do tiêu tốn nhiều nhân lực và gặp sai sót trong quá trình phân loại chất lượng trái cây Tại các nông trại, việc thu hoạch và phân loại trái cây không chỉ phức tạp mà còn tốn kém nhiều chi phí về nhân công và thời gian Tình trạng này đã trở thành một thách thức lớn đối với nông dân, đặc biệt khi lực lượng lao động nông nghiệp không ổn định và chi phí sau thu hoạch ngày càng tăng.
Do đó tôi đã đề xuất một mô hình ứng dụng kỹ thuật học sâu đánh giá chất lượng xoài thu hoạch.
MỤC TIÊU CỦA ĐỀ TÀI
Trong nghiên cứu này, tôi giới thiệu một phương pháp học sâu nhằm phát hiện và phân loại nhiều loại trái xoài bị bệnh cũng như trái xoài đạt chất lượng Các đầu vào của phương pháp này là hình ảnh của trái xoài.
Trong nghiên cứu về trái xoài, tác giả đã phân loại trái xoài thành 5 loại, bao gồm 1 loại đạt chất lượng và 4 loại bệnh: xoài bị thúi, đốm, nứt hoặc thẹo và nám Dữ liệu được thu thập sau thu hoạch và được xử lý qua mô hình, sử dụng MobileNet pre-training trên nền tảng TensorFlow để phân loại hiệu quả.
PHƯƠNG PHÁP NGHIÊN CỨU
Nghiên cứu tài liệu liên quan đến ngôn ngữ lập trình Python, thư viện TensorFlow và mạng nơ-ron nhằm phân tích và tổng hợp kiến thức về deep learning Đề tài tập trung vào việc phát triển các mô hình pre-training để nhận dạng và phân loại bệnh ở trái xoài sau thu hoạch Mục tiêu chính là xây dựng một mô hình deep learning có độ chính xác tương đối để đánh giá chất lượng quả xoài sau thu hoạch, đồng thời nâng cao độ chính xác cho mô hình.
- Thực nghiệm mô hình: xây dựng code nhúng thông qua kit raspi hiển thị với người dùng qua các thiết bị ngoại vi
- Kiểm tra kết quả: chạy thử ứng dụng và kiểm tra kết quả đánh giá của hệ thống
BỐ CỤC
Nội dung luận văn được chia thành 5 chương:
Chương này nhấn mạnh tính cấp thiết của luận văn và lý do lựa chọn đề tài nghiên cứu Từ đó, tác giả xác định phương pháp nghiên cứu phù hợp với yêu cầu và mục tiêu của luận văn.
CƠ SỞ LÝ THUYẾT
GIỚI THIỆU
Xuất khẩu xoài của Việt Nam đã có sự tăng trưởng mạnh mẽ trong những năm qua, với giá trị đạt 46 triệu USD vào năm 2015, 68 triệu USD vào năm 2016 và 156 triệu USD vào năm 2017 Đặc biệt, năm 2018, tổng kim ngạch xuất khẩu xoài và các sản phẩm chế biến từ xoài đã đạt 193,2 triệu USD, tăng 24% so với năm trước.
Năm 2017, xuất khẩu xoài Việt Nam chiếm 5% tổng kim ngạch xuất khẩu rau quả, với 84,6% sản lượng được xuất khẩu sang Trung Quốc Sản lượng xoài xuất khẩu ngày càng tăng, cho thấy nhu cầu toàn cầu đối với xoài Việt Nam ngày càng cao Tuy nhiên, sau thu hoạch, nông dân và nhà sản xuất vẫn phải phân loại xoài bằng phương pháp thủ công, tốn nhiều thời gian và chi phí Điều này đã trở thành thách thức cho ngành nông nghiệp Để khắc phục, nhiều quốc gia đã áp dụng công nghệ tự động hóa và băng chuyền trong quá trình phân loại, giúp giảm chi phí nhân công và nâng cao chất lượng trái cây sau khi phân loại.
TỔNG QUAN TÌNH HÌNH NGHIÊN CỨU
Nghiên cứu của Trường Đại học Cần Thơ về "Phát hiện và nhận dạng khuyết điểm trên vỏ trái xoài" đã đề xuất một giải thuật xử lý ảnh kết hợp với máy học nhằm phát hiện và nhận diện các khuyết điểm trên bề mặt vỏ trái xoài.
Nghiên cứu áp dụng kỹ thuật phân đoạn ảnh và phân tích vùng lân cận để tách ảnh trái xoài khỏi nền, nhằm phát hiện các khu vực có khuyết điểm Sau đó, các đặc trưng của ảnh được rút trích và phân loại bằng mạng nơron để nhận diện khuyết điểm Kết quả thực nghiệm trên 219 ảnh tự tạo cho thấy độ chính xác đạt 92.79% và thời gian nhận diện dưới 7 giây cho mỗi ảnh xoài.
2.2.2 Tình hình nghiên cứu ở nước ngoài
Nghiên cứu “Deep Learning for Mango (Mangifera indica) Panicle Stage Classification” áp dụng các phương pháp YOLO và R-CNN để đánh giá thời gian ra hoa của xoài, đồng thời cung cấp thông tin cho các chủ trang trại Nghiên cứu được thực hiện trên 994 cây xoài, sử dụng nhận diện hoa xoài dựa trên màu sắc (RGB) và tín hiệu cận hồng ngoại (NIR) Kết quả cho thấy mô hình Faster R-CNN đạt độ chính xác và hiệu suất từ 0,807 đến 0,838.
C ÁC CÁCH PHÂN LOẠI
2.3.1 Sử dụng cảm biến màu
Cảm biến màu nhận diện sắc thái dựa trên ba màu chủ đạo: xanh lá, xanh dương và đỏ Sản phẩm này có giá thành phải chăng và được ứng dụng rộng rãi trong việc phân loại sản phẩm theo màu sắc, điều khiển ô tô di chuyển theo đường kẻ màu, và trong các hệ thống đèn thay đổi màu sắc.
Cảm biến màu phổ biến sử dụng bộ chuyển đổi ánh sáng sang tần số, cho phép phân biệt các màu sắc dựa trên tần số riêng của từng màu Nhờ vào tính năng này, cảm biến có thể phân loại màu sắc của trái cây như xoài và táo, giúp xác định trái cây xanh hoặc chín Thiết kế của cảm biến màu đơn giản và chi phí sản xuất thấp, làm cho chúng trở thành lựa chọn lý tưởng cho nhiều ứng dụng.
Hình 2.1: Cảm biến màu TCS3200
Cảm biến màu chỉ có khả năng nhận diện một màu sắc duy nhất, do đó để phân loại trái cây như xanh hay chín, cũng như xác định tình trạng hư hỏng hay mức độ khuyết tật của quả, cần phải sử dụng nhiều cảm biến hoặc thực hiện nhiều vòng lặp Điều này dẫn đến việc tăng chi phí và độ phức tạp của hệ thống.
Hiện nay, trên thị trường có nhiều loại cảm biến đa kênh màu, trong đó nổi bật là ASTECH CR5-FO với 4 kênh màu và tốc độ phản hồi khoảng 5-10ms, có giá 578 Euro.
Hiện nay, một thiết bị thu hoạch trái xoài tự động đã được phát triển tại trường Linköping, Thụy Điển, trong nghiên cứu mang tên "Thiết bị dũ tỡm, định vị và ước tính năng suất trái xoài" Thiết bị này hứa hẹn sẽ cải thiện quy trình thu hoạch và tối ưu hóa năng suất trái xoài.
Sử dụng thiết bị thu thập dữ liệu không người lái (UGV) với máy ảnh màu LiDAR 3D và hệ thống điều hướng, hệ thống định vị có khả năng hiệu chỉnh động học theo thời gian thực (RTK), tuy nhiên, tính năng này không được áp dụng do hạn chế về truyền thông.
Thiết bị sử dụng cảm biến Lidar để quét ảnh 3D của cây xoài từ xa, kết hợp với bộ định vị GPS, nhằm đánh giá độ chín của quả Sau đó, thông tin này được xử lý và sử dụng cánh tay Robot để hái quả trực tiếp trên cây.
Hình 2.2: Robot với cánh tay hái quả sử dụng cảm biến Lidar
• Ưu điểm: tính tự động hóa cao, tốc độ đo cực nhanh khi so sánh với phương pháp thủ công
• Nhược điểm: cảm biến Lidar cũng giống như cảm biến màu nhiều kênh có giá thành rất cao
2.3.3 Phương pháp phân loại và đánh giá thủ công
Việc kiểm tra màu sắc và các dị biệt của trái cây bằng kinh nghiệm thị giác của con người không được áp dụng trong ngành xuất khẩu trái cây do độ chính xác không cao Phương pháp này có thể dẫn đến hỏng hóc của quả do vi khuẩn từ tay hoặc các vật thể tiếp xúc, đặc biệt trong quá trình vận chuyển và lưu trữ sau khi đóng gói.
- Ưu điểm: đơn giản, không cần máy móc, dễ thực hiện nên được áp dụng một cách rộng rãi
Việc phân loại quả xoài hiện nay gặp phải nhiều vấn đề, bao gồm sai số lớn trong quá trình đánh giá, không thể xác định chính xác các khuyết tật trên bề mặt trái cây, và phân loại mức độ chín của quả chủ yếu dựa vào cảm tính Hơn nữa, tốc độ phân loại và đánh giá cũng diễn ra chậm, ảnh hưởng đến hiệu quả của quy trình này.
Tại Việt Nam, hầu hết các nông trại hoa quả chỉ sử dụng quy trình đánh giá thủ công sau khi thu hoạch và vận chuyển sản phẩm đến các địa điểm tiêu thụ Các cơ sở thu mua cũng áp dụng quy trình này, dẫn đến việc tiêu tốn nhiều nhân công, thời gian và độ chính xác không cao.
TỔNG QUAN VỀ MACHINE VÀ DEEP LEARNING
Machine learning là một ngành rất rộng và nặng về toán, gồm rất nhiều thuật toán và mỗi thuật toán có ứng dụng riêng tùy vào bài toán:
- Decision Tree and Random Forest
Deep learning được bắt nguồn từ thuật toán Neural network, chỉ là một ngành nhỏ của machine learning
Hình 2.3 Mối liên hệ giữa AI, ML và DL
Trí tuệ nhân tạo (AI) được cấu thành từ các lớp xếp chồng lên nhau, với AI ở tầng đáy, tiếp theo là machine learning và deep learning nằm ở tầng trên cùng.
Trong những năm gần đây, sự phát triển công nghệ đã nâng cao khả năng tính toán của máy tính, đặc biệt là với lượng dữ liệu lớn Deep learning, hay học sâu, đã ra đời để giúp máy tính phân loại nhiều vật thể trong ảnh, nhận dạng tiếng nói, chữ viết, tự tạo chú thích cho ảnh và giao tiếp với con người Deep learning sử dụng mạng nơ-ron nhân tạo (ANN) để huấn luyện máy tính học từ lượng dữ liệu lớn, nhằm giải quyết các vấn đề cụ thể.
Để dạy máy cách băng qua đường, thay vì sử dụng nhiều thuật toán phức tạp như trước đây, người dùng có thể áp dụng machine learning Cụ thể, họ sẽ huấn luyện máy tính bằng cách cho nó xem 10.000 video về cảnh băng qua đường an toàn và 10.000 video về tai nạn, từ đó giúp thiết bị tự học và cải thiện khả năng nhận biết tình huống.
Hình 2.4 Hình ảnh nhận dạng xe qua đường đúng và sai của máy tính
Deep learning (DL) là một phương pháp machine learning sử dụng nhiều lớp mạng nơ-ron nhân tạo để phân tích và hiểu dữ liệu với độ chi tiết cao.
Khi huấn luyện máy tính nhận diện hình ảnh một con mèo, người dùng lập trình nhiều lớp trong Mạng Nơ-ron Nhân tạo (ANN), mỗi lớp xác định đặc điểm như râu, vuốt, chân Qua việc học từ nhiều bức ảnh mèo và không phải mèo, ANN sẽ nhận ra các đặc điểm quan trọng và loại bỏ những yếu tố không cần thiết AI hiện diện trong nhiều ứng dụng như ô tô tự lái, robot phẫu thuật, hệ thống dịch tự động và chatbot, nhờ vào deep learning Sự kết hợp giữa khả năng tính toán vượt trội và lượng dữ liệu khổng lồ đã dẫn đến những đột phá trong lĩnh vực này.
ANN (ARTIFICIAL NEURAL NETWORKS)
Hình 2.5 Sơ đồ của một nơ-ron
Học sâu (DL) sử dụng mạng nơ-ron để mô phỏng trí thông minh của con người, với việc xây dựng mạng lưới nơ-ron lớn và nạp nhiều dữ liệu giúp hệ thống hoạt động nhanh hơn và cho ra kết quả chính xác hơn Tuy nhiên, điều này đòi hỏi nhiều tài nguyên tính toán trong quá trình huấn luyện DL liên quan đến các thuật toán lấy cảm hứng từ cấu trúc và hoạt động của bộ não động vật, được gọi là mạng nơ-ron nhân tạo (ANN), là hệ thống chương trình và cấu trúc dữ liệu mô phỏng cách hoạt động của não người.
Mạng nơ-ron nhân tạo (ANN) mô phỏng cấu trúc và chức năng của não người, trong đó các nơ-ron thần kinh tương ứng với các node được kết nối trong một mạng lưới lớn Người dùng có thể dạy và huấn luyện ANN thông qua các thuật toán phù hợp Trong lĩnh vực công nghệ thông tin, ANN là hệ thống các chương trình và cấu trúc dữ liệu phản ánh cách hoạt động của não bộ Một mạng nơ-ron thường bao gồm nhiều vi xử lý hoạt động song song, mỗi vi xử lý chứa đựng kiến thức riêng và có khả năng truy cập dữ liệu trong bộ nhớ độc lập.
Vào năm 2019, Facebook đã thành lập Đơn vị Nghiên cứu AI nhằm ứng dụng deep learning để phát triển các giải pháp hiệu quả hơn trong việc nhận diện khuôn mặt và đối tượng, xử lý hơn 350 triệu bức ảnh và video được đăng tải trên nền tảng này.
Deep learning đã trở thành một phần quan trọng trong cuộc sống hàng ngày, với một ví dụ điển hình là khả năng nhận diện giọng nói của các trợ lý ảo như Google Now và Siri.
Deep learning đang mở ra một tương lai hứa hẹn với ứng dụng trong xe tự lái và robot quản gia, nhờ khả năng phân tích dữ liệu lớn và tự thích nghi mà không cần lập trình Những đột phá này có thể dẫn đến việc phát triển trợ lý ảo, hệ thống xe tự lái, thiết kế đồ họa, sáng tác nhạc, và các nguyên liệu mới giúp robot hiểu thế giới xung quanh Với tính thương mại cao, các công ty lớn như Google luôn ưu tiên thâu tóm các startup trong lĩnh vực robot và deep learning.
Các ứng dụng của ANN:
Công nghệ nhận diện ảnh nhằm mục tiêu nhận biết và xác định các đối tượng trong hình ảnh, đồng thời hiểu nội dung và ngữ cảnh liên quan Một ví dụ tiêu biểu là dịch vụ nhận diện và xác định khuôn mặt, có khả năng phân biệt giữa hai khuôn mặt tương tự Ngoài ra, công nghệ này còn được áp dụng trên Facebook để gợi ý người dùng tag bạn bè và trong lĩnh vực khoa học tội phạm cũng như điều tra.
2.5.2 Phát hiện các loại bệnh hiếm gặp
Trí tuệ nhân tạo Watson của IBM gần đây đã phát hiện ra một loại bệnh hiếm mà các bác sĩ không thể chẩn đoán cho một nữ bệnh nhân Bằng cách so sánh bộ gen của bệnh nhân với hơn 20 triệu kết quả nghiên cứu, Watson đã nhanh chóng xác định được chứng leukemia cực kỳ hiếm chỉ trong 10 phút.
2.5.3 Cấu trúc CNN (Convolutional Neural Networks)
Mạng nơ-ron tích chập (CNN) là một trong những mô hình học sâu phổ biến nhất, được ứng dụng rộng rãi trong các bài toán như nhận diện hình ảnh, phân tích video, xử lý ảnh MRI, và trong lĩnh vực xử lý ngôn ngữ tự nhiên.
CNN bao gồm các lớp cơ bản như convolution layer, nonlinear layer, pooling layer và fully connected layer, liên kết theo một thứ tự nhất định Hình ảnh sẽ được xử lý qua convolution layer và nonlinear layer đầu tiên, sau đó các giá trị sẽ được truyền qua pooling layer Bộ ba lớp convolution layer, nonlinear layer và pooling layer có thể được lặp lại nhiều lần trong mạng Cuối cùng, hình ảnh sẽ được đưa qua fully connected layer và softmax để tính xác suất chứa vật thể.
Hình 2.6 cấu trúc của một CNN
Lớp tích chập (convolution layer) là thành phần quan trọng nhất trong mô hình CNN, chịu trách nhiệm tìm kiếm các đặc trưng không gian hiệu quả Lớp này bao gồm bốn yếu tố chính: ma trận đầu vào, bộ filters, receptive field, và feature map Conv layer nhận đầu vào là ma trận ba chiều cùng với bộ filters cần học, sau đó trượt qua từng vị trí trên bức ảnh để thực hiện phép tích chập giữa bộ filter và phần tương ứng trên bức ảnh.
Receptive field là vùng mà một nơ-ron có khả năng quan sát để đưa ra quyết định, trong khi ma trận được tạo ra từ quá trình này được gọi là feature map.
Tầng convolution đóng vai trò quan trọng trong việc phát hiện các đặc trưng của bức ảnh, bao gồm các yếu tố cơ bản như góc, cạnh và màu sắc, cũng như các đặc trưng phức tạp hơn như texture Nhờ vào bộ filter quét toàn bộ bức ảnh, những đặc trưng này có thể được nhận diện ở bất kỳ vị trí nào, ngay cả khi bức ảnh bị xoay trái hoặc phải.
Hàm ReLU (Rectified Linear Unit) là một hàm kích hoạt quan trọng trong mạng nơ-ron, giúp chuyển đổi kết quả từ phép biến đổi tuyến tính thành hàm tuyến tính cho mỗi nơ-ron Khi dữ liệu đi qua lớp Conv, quá trình nhận chập thực hiện phép biến đổi tuyến tính, và việc áp dụng hàm ReLU mang lại hiệu suất tối ưu cho mạng nơ-ron trong nhiều ứng dụng khác nhau.
ReLU (Rectified Linear Units, f = max(0, x)) là hàm kích hoạt phổ biến nhất cho CNN, được giới thiệu bởi Geoffrey E Hinton vào năm 2010 Hàm ReLU được ưa chuộng nhờ vào khả năng tính toán đơn giản và khả năng hạn chế tình trạng vanishing gradient, giúp cải thiện thời gian đào tạo và độ chính xác của mô hình ReLU thường được sử dụng ngay sau tầng convolution, nơi nó gán các giá trị âm thành 0 và giữ nguyên các giá trị dương.
Các loại pooling layer phổ biến như max-pooling và average pooling có chức năng chính là giảm chiều của tầng trước đó Đối với pooling kích thước 2x2, cần trượt filter 2x2 trên các vùng ảnh tương tự và tính toán giá trị max hoặc average cho các vùng này Mục đích của tầng pooling là loại bỏ những đặc trưng không cần thiết trong không gian ảnh, đồng thời giữ lại các vị trí quan trọng.
15 tương đối giữa các đặc trưng đủ để phân loại đối tượng Hơn nữa, việc giảm tầng pooling có khả năng giảm chiều và giảm thời gian huấn luyện
Tầng này có chức năng chuyển ma trận đặc trưng ở tầng trước thành vector chứa xác suất của các đối tượng cần được dự đoán.
CÁC MÔ HÌNH PRE - TRAINING
Mạng VGG từ Oxford sử dụng nhiều lớp tích chập 3x3 để thực hiện các tính năng phức tạp, với kiến trúc mô hình có nhiều biến thể khác nhau, bao gồm 11 lớp.
VGG-16 là một kiến trúc mạng nơ-ron sâu với 16 lớp, thiết kế đơn giản bao gồm 2 hoặc 3 lớp Convolution (Conv) theo sau bởi 1 lớp Max Pooling 2D Sau lớp Conv cuối cùng, có một lớp Flatten để chuyển đổi ma trận 4 chiều thành ma trận 2 chiều Tiếp theo là các lớp Fully-connected và một lớp Softmax VGG-16 được huấn luyện trên tập dữ liệu ImageNet với 1000 lớp, do đó lớp Fully-connected cuối cùng có 1000 đơn vị.
Hình 2.7 Cấu trúc của 1 mô hình pre-trainning inceptionnet
Trong thiết kế mạng CNN thông thường, việc xác định trước các tham số của một lớp Conv như kernel_size, padding, và strides là bắt buộc Tuy nhiên, có những phương pháp mới cho phép linh hoạt hơn trong việc tối ưu hóa các tham số này.
Mạng Inception sử dụng nhiều lớp Conv với các tham số kernel_size khác nhau (1, 3, 5, 7,…) để kết hợp đầu ra mà không gặp lỗi về chiều ma trận, nhờ vào việc thiết lập chung strides=(1, 1) và padding='same' Hiện tại, có ba phiên bản của mạng Inception, mỗi phiên bản mới thường cải tiến một số điểm so với phiên bản trước nhằm nâng cao độ chính xác Keras hiện hỗ trợ mô hình đã được huấn luyện trước Inception phiên bản 3.
Khi train các mô hình Deep CNN (số lượng layers lớn, số lượng param lớn,
Khi sử dụng Gradient Descent, mô hình thường gặp vấn đề về hội tụ Thực tế cho thấy, độ chính xác của mô hình CNN tăng lên khi số lượng lớp (layer) gia tăng Tuy nhiên, nếu số lượng lớp vượt quá 50, độ chính xác sẽ giảm sút.
ResNet là một mạng CNN bao gồm nhiều Residual blocks, cho phép huấn luyện các mô hình CNN phức tạp mà không gặp phải vấn đề exploding/vanishing gradient Cốt lõi của Residual block là việc cộng input với output sau mỗi 2 layers, tức là F(x) + x Hiện nay, Keras cung cấp mô hình pre-trained ResNet50 với trọng số được huấn luyện trên tập dữ liệu ImageNet với 1000 lớp phân loại.
Hình2.8 cấu trúc một Residual block
Mô hình mobilenets là một mô hình open source hiệu quả cho deep learning
Mô hình áp dụng phương pháp Depthwise Separable Convolution nhằm giảm kích thước và độ phức tạp tính toán, giúp tối ưu hiệu suất cho các ứng dụng trên thiết bị nhúng.
MobileNet đạt độ chính xác cao và thời gian tính toán thấp nhờ vào cải tiến trong các lớp Convolution Hai loại lớp Convolution chính được sử dụng trong MobileNet là Separable Convolution và Depthwise Convolution Separable Convolution thực hiện phép tích chập depthwise spatial trước, sau đó là phép tích chập pointwise, trong khi Depthwise Convolution chỉ thực hiện phép tích chập depthwise spatial Việc tách biệt các phép tích chập này giúp giảm đáng kể khối lượng tính toán và số lượng tham số của mạng, từ đó nâng cao hiệu suất của MobileNet.
Hình 2.9 Các lớp layer của mobileNet
Kiến trúc của một mô hình mạng MobileNet gồm một tích chập 3x3 như thông thường ở lớp đầu kết hợp với 13 khối được xây dựng như hình 2.9 Nó không có
Lớp pooling giữa các khối của depthwise separable được thay thế bằng lớp Depthwise layer với stride bằng 2 để giảm kích thước dữ liệu Stride là khoảng cách giữa hai kernel khi quét, với stride = 1, kernel sẽ quét hai ô cạnh nhau.
= 2, kernel sẽ quét ô số 1 và ô số 3, bỏ qua ô số 2 Điều này sẽ tránh được việc lặp lại giá trị ở các ô bị quét [7]
MobileNets là mô hình nhỏ gọn, có độ trễ thấp, được tối ưu hóa để đáp ứng các yêu cầu tài nguyên trong nhiều ứng dụng khác nhau Chúng có khả năng thực hiện các nhiệm vụ như phân loại, phát hiện, nhúng và phân đoạn, tương tự như các mô hình quy mô lớn như Inception Đặc biệt, MobileNets có thể hoạt động hiệu quả trên các thiết bị nhúng thông qua TensorFlow Mobile.
Hình 2.10 Một vài ví dụ sử dụng mạng mobilenets
TensorFlow has released 16 versions of MobileNet models for pre-training classification on ImageNet, tailored to suit various device types These models can be efficiently run on mobile devices using TensorFlow Mobile.
Các mô hình MobileNet có độ trễ và kích thước khác nhau, với kích thước mạng tỷ lệ thuận với số lượng tham số Bảng kết quả dưới đây trình bày các mô hình MobileNet đã được đào tạo trên bộ dữ liệu phân loại hình ảnh ILSVRC-2012-CLS, trong đó độ chính xác được tính toán thông qua việc đánh giá một hình ảnh.
Hình 2.11 Bảng danh sách các version của mobilenet
Tùy thuộc vào trường hợp sử dụng, kích thước lớp đầu vào và các yếu tố chiều rộng có thể thay đổi, giúp các mô hình chiều rộng khác nhau giảm số lần cộng và chi phí suy luận trên thiết bị di động Hiệu suất của MobileNets được xác định qua các giá trị alpha như 1.0 (100% MobileNet), 0.25, 0.5 và 0.75, với trọng số cho 4 kích thước hình ảnh đầu vào khác nhau là 224, 192, 160 và 128 Tác giả đã chọn mô hình mobilenet_v1_1_224 để thực hiện pre-training cho Raspberry Pi.
Các mô hình pre-training mặc dù đạt độ chính xác cao nhưng không phù hợp cho các hệ thống nhúng với khả năng tính toán thấp Để phát triển các mô hình này cho ứng dụng real-time, cần cấu hình mạnh mẽ như GPU hoặc TPU, trong khi các hệ thống nhúng như Raspberry Pi hay Nano PC yêu cầu mô hình nhỏ gọn hơn Trong số các mô hình sử dụng tập dữ liệu ImageNet, MobileNet cho thấy độ chính xác tương đương với các mô hình như VGG16 và VGG19, trong khi chỉ có 4.2 triệu tham số.
Dưới đây là hình so sánh giữa các mô hình pre-tranning
Hình 2.12 Bảng so sánh một vài mô hình pre-training
Hình 2.13 Sơ đồ so sánh độ chính xác của các mô hình pre-trainning
BÀI TOÁN CÔNG NGHỆ ĐẶT RA VÀ LỰA CHỌN GIẢI PHÁP
Hiện nay, các phương pháp phân loại trái cây thường có chi phí cao và độ chính xác không đảm bảo Công nghệ tiên tiến yêu cầu đầu tư lớn, trong khi quy trình thủ công lại cho kết quả không chính xác.
Các mô hình pre-trainning có độ chính xác cao nhưng không thể sử dụng trên các hệ thống nhúng có khả năng tính toán thấp
2.7.2 Xây dựng mô hình thiết bị đánh giá và phân loại xoài
Mô hình đánh giá và phân loại chất lượng xoài có thể sử dụng trên băng chuyền hoặc cầm tay, nhỏ gọn và dễ sử dụng Chất lượng xoài được đánh giá qua ảnh tĩnh hoặc camera, sau đó hình ảnh được gửi đến bộ xử lý trung tâm Bộ xử lý này sẽ phân tích dữ liệu hình ảnh, trích xuất thông tin về màu sắc và khuyết tật trên bề mặt quả, từ đó đưa ra kết luận về tiêu chí chất lượng Thiết bị được thiết kế với kích thước hợp lý, cho phép người dùng di chuyển và vận hành linh hoạt.
2.7.3 Lựa chọn thiết bị phần cứng
Bộ xử lý trung tâm đóng vai trò quan trọng trong việc duy trì hoạt động xử lý hiệu quả, ổn định và tiết kiệm năng lượng Người dùng có thể lựa chọn giữa các loại như máy tính PC, FPGA và máy tính nhúng, mỗi loại đều có những ưu và nhược điểm riêng, được trình bày chi tiết trong Bảng 2.1.
Bảng 2.1: Bảng so sánh các bộ xử lý trung tâm
Bộ xử lý trung tâm Máy tính PC FPGA Máy tính nhúng
Kích thước To, cồng kềnh Nhỏ gọn Nhỏ gọn
Tốc độ xử lý Cao Cao Trung bình
Tiêu thụ điện năng Cao Thấp Thấp
Giá thành Cao Cao Thấp
Bảng 2.1 nêu rõ ưu nhược điểm của các bộ xử lý phổ biến Máy tính PC có kích thước lớn, tiêu tốn nhiều điện năng và có giá thành cao, trong khi FPGA có khả năng xử lý tín hiệu nhanh nhưng cũng có chi phí tương đối cao, khoảng 10-30$ Ngược lại, máy tính nhúng Raspberry Pi nhỏ gọn, tiết kiệm điện năng và có giá thành thấp.
Luận văn sử dụng máy tính nhúng Raspberry Pi với kích thước nhỏ gọn và giá thành hợp lý (30-40$) Raspberry Pi chạy hệ điều hành Raspbian, có tốc độ xử lý đủ để thực hiện thu thập hình ảnh từ camera và xử lý dữ liệu trực tiếp mà không cần truyền về trung tâm điều khiển giám sát.
Raspberry Pi là một máy tính nhỏ gọn, phát triển bởi Raspberry Pi Foundation tại Anh, ra mắt lần đầu vào năm 2012 với mục tiêu thúc đẩy giảng dạy khoa học máy tính trong trường học Thiết bị này hoạt động trên hệ điều hành Linux và phiên bản đầu tiên được trang bị bộ xử lý ARM1176 700MHz cùng 256MB RAM.
Hình 2.15: Bộ vi xử lý Raspberry Pi 3B +
Tháng 5 năm 2018, phiên bản mới nhất và mạnh nhất hiện nay của Raspberry được phát hành Raspberry Pi 3B + Model B+ là vi xử lý và kết nối mạng Model B+ dùng vi xử lý Broadcom BCM2837B0 4 nhân 1.4GHz, xung nhịp cao hơn so với BCM2837 1.2GHz trên Pi 3 Model B Do đó, hệ thống lựa chọn dùng bộ xử lý trung tâm là Raspberry Pi 3B+ trên bo mạch Raspberry Pi 3B+ với Chip 4 nhân 64-bit có tốc độ 1.4GHz – nhanh nhất từ trước đến nay Phiên bản mới còn hỗ trợ Wifi Dual-band 2.4GHz và 5GHz, Bluetooth 4.2/Bluetooth Low Energy, cổng Ethernet tốc độ cao (300Mbps) và Power over Ethernet (PoE) thông qua PoE HAT
Raspberry Pi sử dụng lõi ARM thay vì x86 như Intel, nhờ đó áp dụng tập lệnh rút gọn RISC và tiêu thụ điện năng thấp Toàn bộ mạch hoạt động với nguồn 5V, 700mA, chỉ tiêu hao 3.5W mỗi giờ.
- Vi xử lý: Broadcom BCM2837B0, quad-core A53 (ARMv8) 64-bit SoC
- Kết nối: 2.4GHz and 5GHz IEEE 802.11 b/g/n/ac wireless LAN, Bluetooth 4.2, BLE, Gigabit Ethernet over USB 2.0 (Tối đa 300Mbps)
- Video và âm thanh: 1 cổng full-sized HDMI, Cổng MIPI DSI Display, cổng MIPI CSI Camera, cổng stereo output và composite video 4 chân
- Multimedia: H.264, MPEG-4 decode (1080p30), H.264 encode (1080p30); OpenGL ES 1.1, 2.0 graphics
- Nguồn điện sử dụng: 5V/2.5A DC cổng microUSB, 5V DC trên chân GPIO, Power over Ethernet (PoE) (yêu cầu thêm PoE HAT) Ưu điểm và nhược điểm của raspi:
• Raspberry Pi có giá thành khá rẻ cùng kích thước vô cùng nhỏ gọn
• Tiêu thụ năng lượng rất thấp
• Được thiết kế có GPU mạnh
• Raspberry Pi có khả năng hoạt động liên tục không ngừng nghỉ
2.7.4 Tổng quan hệ thống phần mềm
Raspberry Pi hỗ trợ nhiều hệ điều hành như Raspbian, Arch Linux ARM, OSMC, OpenELEC, Snappy Ubuntu Core, Ubuntu MATE, Debian Jessie, Windows và Android Trong số đó, Raspbian nổi bật với tính dễ cài đặt và sử dụng, cùng với sự hỗ trợ mạnh mẽ từ cộng đồng mã nguồn mở toàn cầu Raspbian, đặc biệt là phiên bản Jessie, được xây dựng dựa trên nền tảng Ubuntu, mang lại trải nghiệm thân thiện và dễ tiếp cận cho người dùng.
Mặc dù giao diện của hệ điều hành này khá đơn giản và cổ điển, nhưng hiệu suất của nó lại rất cao và được tối ưu hóa tốt hơn so với các hệ điều hành phổ biến khác trên Raspberry Pi như Ubuntu Mate hay Win10 IoT Core.
2.7.4.2 Thư viện xử lý ảnh a Tensorflow
TensorFlow™ là một framework mã nguồn mở do Google phát triển, cho phép các nhà phát triển dễ dàng bắt đầu với deep learning trên đám mây Nó được ưa chuộng trong nghiên cứu và phát triển ứng dụng deep learning, đặc biệt trong các lĩnh vực như thị giác máy tính và hiểu ngôn ngữ tự nhiên TensorFlow hỗ trợ mạnh mẽ các phép toán học cần thiết cho tính toán trong deep learning.
Chương trình TensorFlow bao gồm hai phần chính: xây dựng mô hình tính toán và chạy mô hình đã xây dựng Một trong những tính năng nổi bật của TensorFlow là hệ thống node nhiều lớp, giúp huấn luyện các mạng nơ-ron trên tập dữ liệu lớn một cách nhanh chóng, đồng thời hỗ trợ nhận diện giọng nói và định vị vật thể trong hình ảnh, đặc biệt là trong các ứng dụng của Google.
TensorFlow Lite sử dụng một định dạng tệp mô hình nhẹ, với ít phụ thuộc và hầu hết các phép toán đồ thị được thực hiện bằng số thực (float).
Open Source Computer Vision (OpenCV) là thư viện mã nguồn mở chuyên về thị giác máy tính, cung cấp hơn 500 hàm và 2500 thuật toán tối ưu cho xử lý ảnh Được thiết kế để tận dụng sức mạnh của chip đa lõi, OpenCV cho phép thực hiện các phép toán trong thời gian thực, đảm bảo tốc độ đáp ứng nhanh cho các tác vụ thông thường Thư viện này hỗ trợ nhiều nền tảng khác nhau như Windows, Mac, iOS, và Ubuntu, giúp người dùng dễ dàng triển khai trên nhiều hệ điều hành.
Thư viện OpenCV tuân thủ các quy định của mã nguồn mở BSD, cho phép sử dụng cho cả mục đích thương mại và phi thương mại Kể từ năm 2005, OpenCV đã được ứng dụng trong chiếc xe Stanley, giành giải Grand DARPA 2005 Thư viện này hỗ trợ nhiều thuật toán trong lĩnh vực thị giác máy tính và học máy, và đang không ngừng mở rộng.
26 vẫn là một thư viện mở, được phát triển bởi nguồn quỹ không lợi nhuận và được sự hưởng ứng từ cộng đồng c Keras
Keras là một thư viện được phát triển vào năm 2015 bởi một kỹ sư nghiên cứu
XÂY DỰNG HỆ THỐNG
THIẾT KẾ, TÍNH TOÁN PHẦN CỨNG THIẾT BỊ
Sơ đồ khối phần cứng:
Các thiết bị phần cứng được kết nối với nhau thông qua các cổng vào ra của máy tính nhúng Raspberry Pi 3B+, tạo thành một hệ thống hoàn chỉnh Sơ đồ khối chi tiết của máy tính nhúng này được minh họa rõ ràng trong hình 3.1, giúp người dùng dễ dàng hiểu và nắm bắt cấu trúc tổng thể của hệ thống.
Hình 3.1: Sơ đồ khối các chân trên máy tính nhúng Raspberry Pi 3B +
Từ sơ đồ khối này, tôi xây dựng được sơ đồ liên kết giữa các thiết bị phần cứng với máy tính nhúng này như sau:
• Nguồn cấp: 5V thông qua cổng micro USB của Raspberry Pi 3B +
• Camera: thông qua các chân kết nối CSI Camera của Pi
Trong quá trình xây dựng, chỉnh sửa hoặc truy xuất dữ liệu nhanh, người dùng có thể dễ dàng sử dụng chuột, bàn phím hoặc USB thông qua cổng USB.
SƠ ĐỒ TỔNG QUAN THUẬT TOÁN HỆ THỐNG
Lưu đồ thuật toán thiết bị đánh giá và phân loại quả xoài
Hình 3.2: Tổng quan về hệ thống
Bài viết đề cập đến việc sử dụng 230 bức ảnh trái xoài bị nhiễm các loại bệnh khác nhau, được chia thành 5 lớp phân loại, làm dataset cho mô hình Các bức ảnh này sẽ trải qua quá trình tiền xử lý trước khi được sử dụng để xây dựng và kiểm tra mô hình.
Quá trình trích xuất đặc trưng từ hình ảnh sẽ dựa vào dữ liệu qua các lớp của mô hình CNN, và việc đánh giá mô hình sẽ được ghi lại sau mỗi epoch Điều này là một phần quan trọng trong quá trình phân loại bệnh của trái xoài.
Bước đầu tiên trong quá trình xây dựng mô hình là chuẩn bị tập dữ liệu huấn luyện và thực hiện rút trích đặc trưng Đây là giai đoạn quan trọng, vì nó giúp xác định những đặc trưng nổi bật để cải thiện hiệu suất của mô hình.
Để cải thiện độ chính xác của dữ liệu, cần loại bỏ những dữ liệu gây nhiễu và ước lượng số chiều của dữ liệu Nếu số chiều quá lớn, việc giảm số chiều (reduce dimension) là cần thiết để đơn giản hóa tính toán mà vẫn đảm bảo độ chính xác Bên cạnh đó, việc chuẩn hóa bộ dữ liệu là rất quan trọng để kiểm tra mô hình Tác giả đã áp dụng phương pháp kiểm tra chéo (cross-validation) với k-fold, chia tập dataset thành hai phần: một phần cho quá trình huấn luyện và một phần cho kiểm tra sau khi huấn luyện.
Bước 2: Xây dựng mô hình phân lớp (classifier model)
Mục đích của mô hình huấn luyện là xác định hàm f(x) để gán nhãn cho dữ liệu, quá trình này được gọi là học hay training Hàm f(x) sẽ giúp tìm ra giá trị y tương ứng với dữ liệu đầu vào.
• x là các feature hay input đầu vào của dữ liệu
• y là nhãn lớp hay output đầu ra
Trong luận văn tác giả đã sử dụng thuật toán học giám sát KNN và neural network để xây dựng mô hình phân lớp cho bài toán này
Bước 3: Kiểm tra dữ liệu với mô hình (make prediction)
Sau khi đã tìm được mô hình phân lớp ở bước 2, thực hiện kiểm tra mô hình với các dữ liệu mới để kiểm tra trên mô hình phân lớp
Bước 4: Đánh giá mô hình phân lớp và chọn mô hình tốt nhất Để đánh giá mô hình, cần xem xét mức độ lỗi trên dữ liệu kiểm tra và dữ liệu huấn luyện thông qua mô hình đã tìm được Nếu kết quả không đạt yêu cầu, cần điều chỉnh các tham số của thuật toán học để tìm ra mô hình tối ưu hơn và tiến hành kiểm tra, đánh giá lại Cuối cùng, lựa chọn mô hình phân lớp tốt nhất cho bài toán.
PHÂN LOẠI BỆNH CỦA XOÀI
Trái xoài thường gặp bốn loại bệnh chính: thúi, đốm, nứt hoặc thẹo và thúi Mỗi loại khuyết điểm này đều có đặc trưng riêng về hình dáng, màu sắc và kết cấu, ảnh hưởng đến chất lượng và vẻ ngoài của trái xoài.
Hình 3.3: Các khuyết điểm trên bề mặt của trái xoài
Xoài bị nứt là hiện tượng xảy ra khi trái va chạm với cành hoặc thân cây, tạo ra những vết sẹo có hình dáng thon dài Qua thời gian, những vết sẹo này sẽ trở nên dài và thâm đen, ảnh hưởng đến vẻ ngoài của trái xoài.
- Xoài bị nám: Những vết nám sau đó chuyển sang da cám sần sùi bên ngoài vỏ có màu hơi nâu vàng do côn trùng gây nên
- Xoài bị thúi: Những vết thâm nhỏ màu đen sau đó vết thâm lớn dần có hình dáng hơi tròn
Xoài bị đốm nâu hoặc nâu đen thường xuất hiện với những vết đốm hình tròn hoặc lõm sâu, kèm theo da sần sùi hoặc những khối u nhô lên Các đốm này có thể liên kết lại với nhau, gây ảnh hưởng đến chất lượng của trái xoài.
DATASET
Xây dựng neural network đòi hỏi phải cấu hình các lớp của mô hình, sau đó biên dịch mô hình
Hình 3.4: Tổng quan về mô hình
Cracked mango refers to mangoes that have split, while melasa is a dataset containing images of mangoes with blemishes Rotten mango includes pictures of spoiled mangoes, and spotted mango features mangoes with spots In contrast, normal refers to mangoes that meet quality standards.
Hình 3.5 : Dataset in trên pi
Hình 3.6 Hình ảnh trái xoài bị nứt sử dụng để huấn luyện
Hình 3.7 Hình ảnh trái xoài bị nám được sử dụng để huấn luyện
Hình 3.8 Hình ảnh trái xoài đạt chất lượng sử dụng để huấn luyện
Hình 3.9 Hình ảnh trái xoài bị thúi sử dụng để huấn luyện
Hình 3.10 Hình ảnh trái xoài đốm sử dụng để huấn luyện
Hình ảnh sẽ được tiền xử lý để định dạng lại kích thước, giúp giảm thiểu ảnh hưởng đến quá trình xử lý và tăng tốc độ xử lý Các hình ảnh thông thường có giá trị pixel từ 0-255; nếu giá trị này quá cao, mạng neural sẽ hoạt động không hiệu quả và không đáp ứng được yêu cầu thời gian thực.
Để cải thiện hiệu suất của mạng neural, cần chuẩn hóa các hình ảnh đầu vào bằng cách chia tất cả các giá trị pixel cho 255, giúp mỗi pixel có giá trị từ 0 đến 1.
The training process employs supervised learning algorithms, which predict the outcome of new data inputs based on previously known input-outcome pairs These pairs are commonly referred to as data-label combinations.
Supervised learning là phương pháp học máy trong đó có một tập hợp các biến đầu vào x={x1, x2, …, xn} và các nhãn tương ứng y={y1, y2, …, yn} Các cặp dữ liệu đã biết trước (xi, yi) ∈ x×y được gọi là dữ liệu huấn luyện (training data).
Từ tập training data, chúng ta cần xây dựng một hàm số ánh xạ các phần tử từ tập x sang các phần tử tương ứng của tập y, sao cho Yi ≈ f(xi) với i = 1, 2, …, n Mục tiêu là tối ưu hóa giá trị xấp xỉ của hàm số f, để khi nhận được dữ liệu x mới, chúng ta có thể xác định nhãn tương ứng y = f(x).
Quá trình huấn luyện dữ liệu sử dụng mạng nơ-ron để học hỏi và rút ra các đặc điểm quan trọng Sau đó, mô hình được xây dựng thông qua việc điều chỉnh trọng số trong mạng nơ-ron.
Phương pháp bottleneck được sử dụng để huấn luyện hình ảnh, trong đó hình ảnh đầu vào sau khi tiền xử lý sẽ trở thành một véc tơ với 1001 giá trị cho mỗi hình Số lớp softmax được xác định dựa trên số lượng nhãn, tương ứng với 1001*5 tham số được sử dụng trong quá trình huấn luyện.
Dung lượng tối đa của mỗi lớp là khoảng 134M, tương ứng với công thức 2*27-1 Dựa vào dữ liệu huấn luyện, mô hình sẽ phân chia thành các tập huấn luyện, kiểm tra và xác thực, đồng thời trả về cấu trúc dữ liệu cho từng nhãn cùng với các đường dẫn Hình ảnh đầu vào có định dạng jpeg, png hoặc jpg sẽ được tiền xử lý bằng cách thay đổi kích thước và điều chỉnh giá trị pixel thông qua bộ lọc và nén file Quá trình nhận dạng sẽ sử dụng phương pháp bottleneck trong huấn luyện Mỗi hình ảnh sẽ được tính toán bottleneck để tạo ra một cache, lưu trữ lại trong bộ nhớ để tái sử dụng Việc này giúp tăng tốc độ huấn luyện, đặc biệt khi hình ảnh không bị biến dạng trong quá trình đào tạo, vì mỗi giá trị lớp bottleneck chỉ cần được tạo một lần sau khi tiền xử lý.
Trong quá trình huấn luyện, 36 hình ảnh được sử dụng lại Nếu không áp dụng biến dạng trong quá trình training, chức năng này có khả năng lấy lại giá trị bottleneck từ thư mục chứa hình ảnh Nó sẽ chọn ngẫu nhiên một tập hợp hình ảnh từ danh mục đã được chỉ định.
C HỌN MODEL VÀ IMPORT THƯ VIỆN
Mô hình MobileNet sử dụng các phép tích chập phân tách theo chiều sâu (depthwise separable convolutions), cho phép tạo ra các lớp mạng thần kinh tích chập có kích thước nhỏ hơn và hiệu suất nhanh hơn so với nhiều mô hình phổ biến khác Mỗi lớp của MobileNet áp dụng một bộ lọc duy nhất cho từng đầu vào để xử lý dữ liệu, sau đó kết hợp các bộ lọc này thông qua các cấu trúc 1×1 nhằm tạo ra một bộ đặc trưng đầu ra Các lớp phân tách này tương tự như các lớp tích chập truyền thống nhưng hoạt động nhanh hơn và có sự khác biệt, khi chúng chia thành hai lớp riêng biệt: một lớp để lọc và một lớp để kết hợp Điều này không chỉ giúp giảm kích thước mô hình mà còn tiết kiệm năng lượng tính toán Tất cả các lớp tích chập đều sử dụng hàm kích hoạt ReLU, ngoại trừ lớp cuối cùng là softmax, được sử dụng để phân loại.
Mô hình MobileNet có 30 lớp mà không cần đếm theo chiều sâu và điểm kết hợp
- Lớp 1: Convolution layer với stride bằng 2
- Lớp 3: Pointwise layer nhân đôi số kênh
- Lớp 4: Depthwise layer với stride bằng 2 (khác với bước 2, dw lớp 2 có stride size bằng 1)
- Lớp 8: Depthwise layer với stride bằng 2
- Lớp 12: Depthwise layer với stride bằng 2
- Lớp 14-23: Depthwise layer + Pointwise layer
- Lớp 24: Depthwise layer với stride bằng 2
- Lớp 29: lớp FC kết hợp các đặc điểm của ảnh để được output của model
- Lớp 30: Softmax, dùng để phân lớp Hàm sofmax dẽ tạo ra số lớp nơ- ron tương ứng với số bệnh đầu vào mà bài toán yêu cầu
Sau lớp tích chập đầu tiên, các lớp Depthwise và Pointwise được lặp lại, trong đó các lớp Depthwise có stride bằng 2 giúp giảm kích thước chiều dài và chiều rộng của dữ liệu khi đi qua mạng Lớp Pointwise sẽ nhân đôi số kênh dữ liệu, tiếp theo là lớp RELU.
Mô hình xử lý hình ảnh bắt đầu với kích thước 224*224, sau đó giảm xuống còn 7*7 pixel với 1024 kênh Cuối cùng, lớp kết nối đầy đủ được sử dụng để chuyển đổi hình ảnh thành một vector 1000 phần tử với kích thước 1*1*1000.
Hình 3.11 Cấu trúc đầy đủ của một mô hình mobieNets
Hình 3.12 Đoạn code thực hiện mô hình
Hình 3.13 Cấu trúc của một Depthwise Separable Convolution
Depthwise convolution là một kỹ thuật trong mạng nơ-ron, nơi mỗi kênh đầu vào thực hiện một phép toán convolution không gian DK×DK riêng biệt Như minh họa trong hình 3.13, với 5 kênh đầu vào, chúng sẽ được phân tách thành ma trận mxn, sau đó thực hiện convolution với kích thước kxk Kết quả của các phép toán convolution này sẽ được tổng hợp lại, tạo ra 5 phép toán convolution không gian DK×DK tương ứng với 5 kênh đầu vào.
Pointwise convolution is essentially a convolution operation with a kernel size of 1x1 In this context, M represents the number of input channels, N denotes the number of output channels, Dk indicates the kernel size, and Df refers to the feature map size For the ImageNet dataset, the input dimensions are specified accordingly.
224, do đó feature map ban đầu có Df = 224) thì :
Chi phí tính toán của Depthwise convolution là : Dk×Dk×M×Df×Df (3.1) Chi phí tính toán của Pointwise convolution là: M×N×Df×Df (3.2)
Tổng chi phí tính toán của Depthwise Separable Convolution là:
Dk×Dk×M×Df×Df + M×N×Df×Df (3.3)
Nếu chúng ta không sử dụng Depthwise Separable Convolution mà sử dụng phép convolution như bình thường, chi phí tính toán là Dk×Dk× M×N×Df×Df
Do đó, chi phí tính toán sẽ giảm:
Dk×Dk×M×Df×Df+M×N×Df×Df Dk×Dk× M×N×Df×Df = 1
Khi sử dụng kích thước kernel Dk = 3, chúng ta có thể giảm số phép tính nhân từ 8 đến 9 lần, dẫn đến việc giảm chi phí tính toán đáng kể Để so sánh giữa tích chập thông thường và Depthwise Convolution, hãy xem xét một ví dụ với hình ảnh đầu vào có kích thước 12x12x3 Khi thực hiện một phép tích chập với cửa sổ 5x5 trên hình ảnh đầu vào mà không có padding và với stride=1, quá trình tích chập sẽ diễn ra như sau: 12x12 → (5x5).
→8x8 Kernel 5x5 lướt qua toàn bộ ảnh, mỗi lần thực hiện 25 phép nhân và trả về
1 output, vì là không padding nên sẽ nhận được (12-5+1)=8x8 pixels ảnh đầu ra
Khi xử lý ảnh đầu vào có 3 kênh, việc thực hiện phép nhân convolution cần phải tính toán trên cả 3 kênh, dẫn đến tổng cộng 75 phép nhân cho mỗi lần kernel di chuyển thay vì chỉ 25 Trong không gian 3 chiều, phép nhân ma trận vô hướng sẽ được thực hiện trên tất cả 25 pixel, và kết quả trả về là 1 số Khi kernel 5x5x3 quét qua toàn bộ ảnh, kích thước ảnh 12x12x3 sẽ giảm xuống còn 8x8x1, giúp giảm thiểu chi phí tính toán.
Hình 3.14 Sau khi thực hiện convolution
Khi tăng số lượng kênh đầu ra lên 8x8x256, chúng ta cần tạo ra 256 kernel có kích thước 5x5x3 Sau khi tất cả các kernel thực hiện, chúng ta sẽ gộp các đầu ra lại để thu được hình ảnh đầu ra 8x8x256 Đây là nguyên lý hoạt động của một phép tích chập thông thường, chuyển đổi từ kích thước 12x12x3 thành (5x5x3x256) và cuối cùng là 8x8x256 Tiếp theo, chúng ta sẽ khám phá về phép tích chập depthwise và pointwise.
Hình 3.15 : Sau khi thực hiện tăng số chanel ouput
Depthwise Convolution thực hiện phép convolution trên hình ảnh đầu vào mà không thay đổi số lượng kênh, sử dụng 3 kernel kích thước 5x5x1 Mỗi kernel sẽ tiến hành convolution với từng kênh của ảnh, tạo ra đầu ra 8x8x1 Khi kết hợp các kết quả lại, ta sẽ thu được hình ảnh đầu ra 8x8x3.
Hình 3.16 Thực hiện convolution và không làm tăng số chanel của ảnh
Sau khi áp dụng Pointwise Convolution với các kernel 1x1, phép convolution được thực hiện trên từng điểm dữ liệu Kernel sẽ có số lượng kênh tương ứng với số kênh của ảnh đầu vào, nhằm tạo ra một kênh ảnh đầu ra Cụ thể, với kernel 1x1x3, quá trình convolution từ ảnh kích thước 8x8x3 sẽ chuyển đổi thành kích thước 8x8x1.
Hình 3.17 Sau khi sử dụng Pointwise Convolution
Vậy ta phải tạo ra 256 kernel 1x1x3 để có được ảnh đầu ra là 8x8x256 Đó là cách mà depthwise separable convolutions thực hiện: 12x12x3→(5x5x1x1)→ (1x1x3x256) →8x8x256
Hình 3.18 Sau khi tăng lên 256 chanel
Khởi tạo mô hình trong Keras bằng cách sử dụng Sequential từ keras.models cho phép bạn xây dựng một cấu trúc mô hình tuần tự Mỗi lớp trong mô hình sẽ có trọng số tương ứng với lớp tiếp theo, giúp tối ưu hóa quá trình học.
Hàm Flatten() trong Keras, được khai báo bằng câu lệnh “from keras.layers import Flatten”, giúp chuyển đổi dữ liệu từ dạng mảng nhiều chiều thành mảng một chiều Sau đó, chúng ta sử dụng hàm train_test_split() trong Keras để chia tách dữ liệu với tham số test_size.
Tập dữ liệu được chia ra 20% là test_set và 80% còn lại là training_set
Lựa chọn giá trị các thông số:
Epochs là số lần mạng Nơ-ron xử lý toàn bộ tập dữ liệu; càng nhiều epochs thì thời gian huấn luyện càng lâu và dễ dẫn đến overfitting, khi mô hình hoạt động tốt với dữ liệu training nhưng kém với validation Để khắc phục hiện tượng này, thường áp dụng kỹ thuật early stopping nhằm tối ưu hóa mô hình trong quá trình huấn luyện và tránh overfitting.
Batch_size là số lượng dữ liệu được xử lý trong một batch, giúp tối ưu hóa tính toán trong mạng nơ-ron tích chập (CNN) bằng cách chia nhỏ các hình ảnh đầu vào Việc sử dụng batch_size không chỉ cải thiện hiệu suất tính toán mà còn tăng tốc độ huấn luyện mô hình.
Số lượng batch_size trong quá trình huấn luyện mô hình được chọn dựa trên dung lượng RAM hoặc GPU của máy Batch_size lớn hơn yêu cầu nhiều bộ nhớ hơn nhưng giúp rút ngắn thời gian huấn luyện.
Num_classes: số lượng lớp ngõ ra, có 5 nhãn cho 5 loại nên giá trị tham số num_classes = 5
Validation_split: phần trăm dữ liệu chọn cho tập validation
Patience: số lượng epochs không cải thiện sau khi giảm learning - rate.
BIÊN DỊCH MÔ HÌNH
Trong quá trình biên tập lại mô hình đã xây dựng, Compile sẽ lựa chọn thuật toán huấn luyện thông qua tham số 'optimizer' Hàm mất mát (loss function) của mô hình có thể sử dụng mặc định hoặc được tự xây dựng thông qua tham số 'loss' Để theo dõi hiệu suất của mô hình trong quá trình huấn luyện, chúng ta có thể chọn các chỉ số (metrics) hiển thị Ví dụ, có thể sử dụng optimizer Adam với các tham số lr=5 và decay=6, và biên soạn mô hình với câu lệnh: model.compile(optimizer=optimizer, loss='categorical_crossentropy', metrics=['accuracy']).
Thuật toán Adam Optimizer được sử dụng trong mô hình huấn luyện vì yêu cầu ít bộ nhớ, tính toán hiệu quả và mang lại kết quả nhanh chóng Để so sánh khoảng cách giữa các giá trị đầu ra của softmax và các lớp đầu ra, hàm cross-entropy được áp dụng Đây là một hàm loss có thể được cực tiểu hoá, giúp neural network đánh giá xác suất dự đoán của một mẫu dữ liệu tương ứng với lớp đầu ra.
Metrics là thước đo để đánh giá accuracy của model
Tác giả đã thực hiện build mô hình trên raspi với thời gian là 45h
THIẾT KẾ GIAO DIỆN
Hệ thống được phát triển bằng ngôn ngữ Python, sử dụng Tkinter để thiết kế giao diện người dùng (GUI) và Keras cho mô hình học sâu Giao diện bao gồm các thành phần như Label để hiển thị ảnh và cập nhật kết quả, cùng với nút Button để điều khiển, tích hợp mô hình đã được huấn luyện trước đó.
Lưu đồ hoạt động của hệ thống:
Ứng dụng cho phép người dùng tải lên bất kỳ ảnh nào từ máy tính Sau khi tải ảnh, hệ thống sẽ sử dụng mô hình đã được huấn luyện để chẩn đoán loại bệnh và hiển thị kết quả trên giao diện.
K ẾT QUẢ THỰC NGHIỆM TRÊN ẢNH VỚI GIAO DIỆN
Trong hình 4.1, giao diện thực hiện phân loại bệnh của đối tượng thông qua ảnh offline, dưới đây là chức năng của các thành phần trong giao diện:
• Nút Open_Image: cho phép chọn ảnh từ thư mục máy tính, hiển thị và nhận diện cảm xúc đối tượng trong ảnh
Nút Close cho phép người dùng thoát khỏi chương trình Ảnh đã tải lên sẽ xuất hiện trong khung label, với ảnh nền ở giữa Phần trăm độ chính xác của từng nhãn trái xoài được nhận dạng sẽ được hiển thị bên trái khung label theo thứ tự giảm dần.
Trong phần này tác giả sẽ trình bày các kết quả khi thực nghiệm
- Trường hợp 1: Thực hiện với ảnh trái xoài đạt chất lượng.
Hình 4.1 Kết quả của trái xoài đạt chất lượng qua giao diện
Hình 4.2 Kết quả của trái xoài đạt chất lượng qua giao diện
Độ chính xác của nhận diện hình ảnh cho quả xoài là 74% và 88% Mặc dù tỷ lệ phần trăm này không cao, nhưng nó cho thấy sự chênh lệch rõ ràng so với các nhãn khác.
- Trường hợp 2: Thực hiện kiểm tra với ảnh của xoài bị đốm
Mô hình nhận dạng đã xác định rằng trái xoài mắc bệnh đốm với tỷ lệ chính xác lên đến 85%, cho thấy sự khác biệt rõ rệt so với các loại bệnh khác.
- Trường hơp 3: Thực nghiệm với ảnh trái xoài bị nám
Hình 4.4 cho thấy xoài bị nám với độ chính xác nhận dạng đạt 56,9% Mặc dù tỷ lệ nhận dạng xoài bị nám chỉ là 55,8%, nhưng nó vẫn thể hiện hiệu quả tốt hơn so với các loại xoài khác bị thúi và đốm, với tỷ lệ chênh lệch lần lượt là 22% và 18% Nguyên nhân có thể do hình ảnh bị ảnh hưởng bởi độ lóa, dẫn đến sự sai lệch trong quá trình nhận dạng.
- Trường hợp 4: Thực hiện kiểm tra với ảnh trái xoài bị nứt.
Hình 4.5 Trái xoài bị nứt và bị sâu
Tỷ lệ nhận dạng ra trái xoài bị nứt là 78,7 % và tỉ lệ chuẩn đoán xoài bị thúi là 18%
- Trường hợp 5: Thực hiện nhận dạng trái xoài bị thúi
Hình 4.6 Trái xoài bị thúi
Qua mô hình thì tỉ lệ nhận ra trái xoài bị thúi là 88% và xoài bị đốm là 8,8%
- Trường hợp 6: Thực hiện với trái xoài bị nhiều loại bệnh
Hình 4.7 trái xoài bị đốm và thúi
Sau khi qua model thì tỉ lệ trái xoài bị thúi là 68% tuy nhiên tỉ lệ xoài bị dốm chỉ là 26%
Hình 4.8 Xoài bị nhiều loại bệnh
Trái xoài trong hình 4.6 gặp phải nhiều loại bệnh như thẹo, nám và thúi Mô hình đã nhận diện không chính xác, cho thấy phần trăm xoài bị đốm lên đến 85%, trong khi tỷ lệ bị thúi là 12% và bị nám chỉ là 1,5%.