Vì vậy, để phân loại và đưa ra giá bán phù hợp cho các sản phẩm trái cây nhập khẩu từ nhiều quốc gia trên thế giới, nhóm của em đã chọn đề tài "Ứng dụng Computer Vision tự động nhận diện
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
BÀI TẬP LỚN
Môn: NHẬP MÔN TRÍ TUỆ NHÂN TẠO
Đề tài: ỨNG DỤNG COMPUTER VISION TỰ ĐỘNGNHẬN DIỆN CÁC LOẠI TRÁI CÂY NHẬP KHẨU
Trang 3Mục lục
Lời mở đầu 3
Phần 1: Phát biểu bài toán và lý do chọn bài toán 4
Phần 2: Giới thiệu cách thức thực hiện bài toán 5
Giới thiệu cách thức thu thập dữ liệu ảnh 5
Các kiểu dữ liệu ảnh và số lượng của từng kiểu dữ liệu ảnh 5
Cách tổ chức lưu trữ dữ liệu trên máy tính 5
Phần 3: Giới thiệu tổng quan thuật toán sử dụng 7
Trang 4Lời mở đầu
Trong thời gian gần đây, nhu cầu mua thực phẩm và trái cây nhập khẩu sạch đang trở thành một xu hướng tiêu dùng phổ biến Không chỉ để sử dụng cho bản thân và gia đình, mà còn để tặng nhau như một cách chia sẻ nguồn thực phẩm sạch, an toàn và có lợi cho sức khỏe Nhu cầu sử dụng trái cây tươi cũng đang tăng mạnh do môi trường ngày càng ô nhiễm, nắng nóng gay gắt và các dịch bệnh không kiểm soát Trái cây tươi được xem là một nguồn bổ sung vitamin tốt để tăng cường sức đề kháng và mang lại nhiều lợi ích cho sức khỏe như tốt cho hệ xương khớp, phòng chống ung thư, bảo vệ tim mạch và kiểm soát cân nặng.
Đồng thời, với sự phát triển mạnh mẽ của các thiết bị máy tính hiện đại và sự bùng nổ của dữ liệu thông qua mạng internet, nhiều tiến bộ đã được đạt được trong lĩnh vực Học máy Mạng neural tích chập (CNN) đặc biệt đã giúp thị giác máy tính tiến bộ đáng kể, với các thành tựu ấn tượng trong việc nhận dạng và phát hiện đối tượng Vì vậy, để phân loại và đưa ra giá bán phù hợp cho các sản phẩm trái cây nhập khẩu từ nhiều quốc gia trên thế giới, nhóm của em đã chọn đề tài "Ứng dụng Computer Vision tự động nhận diện các loại trái cây nhập khẩu" để nghiên cứu trong bài báo cáo lớn này.
Trang 5Phần 1: Phát biểu bài toán và lý do chọn bài toán
Khi nói về các loại trái cây nhập khẩu, không thể bỏ qua yếu tố độc đáo, đẹp mắt, ngon miệng và giàu chất dinh dưỡng của chúng Thực tế, những loại trái cây này chỉ có thể được nhập từ các nước khác trên thế giới Ví dụ, bạn không thể tìm thấy ở Việt Nam một quả dâu tây to tròn như quả dâu tây Hàn Quốc Vì lý do này, các loại trái cây nhập khẩu được rất nhiều người yêu thích và chọn lựa để thưởng thức và tặng quà ý nghĩa.
Tuy nhiên, số lượng các loại trái cây nhập về rất đa dạng và đến từ nhiều quốc gia khác nhau Do đó, mỗi loại sẽ có những đặc trưng riêng biệt Khách hàng tới mua hàng cần biết rõ thông tin cơ bản về loại sản phẩm, cũng như chính cửa hàng cần nắm rõ thông tin đó để xác định giá bán cho từng loại sản phẩm Bởi mỗi loại hoa quả đến từng nước khác nhau, sẽ có thuế nhập khẩu, giá vốn hàng nhập, chi phí bảo quản và nhiều chi phí riêng Từ đó sẽ hình thành lên giá bán khác nhau Từ đó có thể thấy việc ứng dụng AI vào việc tự động nhận diện càng thêm quan trọng.
Do vậy, nhóm em đã chọn bài toán “Ứng dụng Computer Vision tự động nhận diện
các loại trái cây nhập khẩu” để giải quyết vấn đề trên một cách hoàn thiện nhất Cụ thể trong
bài báo cáo, nhóm em đã lựa chọn đại diện 5 loại hoa quả nổi bật, bán chạy nhất tại cửa hàng là: Cherry Chile, Dâu tây Hàn Quốc, Nho xanh không hạt Úc, Việt Quất NewZealand, Táo Mỹ.
Trang 6Phần 2: Giới thiệu cách thức thực hiện bài toán
Thu thập hình ảnh từ việc quảng cáo, hình ảnh sản phẩm có sẵn của các hệ thống cửa hàng trên internet
Thu thập hình ảnh từ các khách hàng đã trải nghiệm sản phẩm trái cây nhập khẩu của hệ thống cửa hàng.
Nhóm em thu thập dữ liệu ảnh gồm: "Apple Red 1" , "Banana", "Cherry Rainier" ,"Eggplant", "Kiwi", "Lemon", "Mango", "Orange", "Peach", "Raspberry" và đã chia tập dữ liệu thành 2 phần : training và testing Cụ thể từng phần là:
- training: được dùng để huấn luyện mô hình.
- testing: được dùng để lựa chọn mô hình phù hợp trong số các ứng viên đượchuấn luyện trong training.
Dữ liệu sau khi thu thập dưới dạng file ảnh jpg, nhóm em đã lưu trữ ở 10 file tương ứng với 10 loại quả cho từng tập training, testing và lưu trữ trong trong Google Drive, lưu tên tệp là “ML_Project”
Hình 1 Trong tệp Data
Trang 7Hình 2 Trong tệp Training
Hình 3 Trong tệp testing
Trang 8Phần 3: Giới thiệu tổng quan thuật toán sử dụng
Mô hình nhóm chúng em thực hiện được xây dựng dựa trên mô hình mạng Convolutional Neural Networks (CNN)
1 Khái niệm:
Convolutional Neural Networks (CNN) là một trong những mô hình deep learning phổ biến nhất và có ảnh hưởng nhiều nhất trong cộng đồng Computer Vision CNN được dùng trong trong nhiều bài toán như nhân dạng ảnh, phân tích video, ảnh MRI hoặc cho bài các bài của lĩnh vực xử lý ngôn ngữ tự nhiên,và hầu hết đều giải quyết tốt các bài toán này.
2 Cấu trúc cơ bản: bao gồm 3 phần chính
- Local receptive field (trường cục bộ): Lớp này có nhiệm vụ tách lọc dữ
liệu, thông tin ảnh và lựa chọn các vùng ảnh có giá trị sử dụng cao nhất
- Shared weights and bias (trọng số chia sẻ): Lớp này giúp làm giảm tối đa
lượng tham số có tác dụng chính của yếu tố này trong mạng CNN Trong mỗi convolution sẽ có các feature map khác nhau và mỗi feature lại có khả năng giúp detect một vài feature trong ảnh
- Pooling layer (lớp tổng hợp): Pooling layer là lớp cuối cùng và có tác dụng
làm đơn giản các thông tin đầu ra Có nghĩa là, sau khi đã hoàn tất tính toán và quét qua các lớp thì đến pooling layer để lược bớt các thông tin không cần thiết Từ đó, cho ra kết quả theo như ý mà người dùng mong muốn.
1 Ưu điểm: CNN có thể tự động học các đặc trưng của dữ liệu từ đó thiết lập các đặc
trưng mới mà không cần bất kỳ sự giám sát của con người Đồng thời giúp phân lớp dữ liệu một cách chính xác.
2 Nhược điểm: Đòi hỏi dữ liệu cần có tính đa dạng và độ chính xác cao.
Trong mô hình của nhóm em, đầu vào là ảnh đơn sắc có kích thước 100x100 và đầu ra là 10 lớp tương ứng với 10 loại trái cây khác nhau Mô hình được huấn luyện trên dữ liệu huấn luyện và được đánh giá trên tập dữ liệu kiểm tra để đưa ra dự đoán cho các ảnh mới Kết quả đánh giá của mô hình được đo bằng độ chính xác và độ mất mát trên tập dữ liệu huấn luyện và kiểm tra.
Trang 9Phần 4: Mã lệnh chương trình
1 Chuẩn bị dữ liệu
Hình 4 đoạn code đọc hình ảnh từ data training
Đoạn code này đọc các hình ảnh màu xám của các loại trái cây từ một thư mục và hiển thị chúng bằng matplotlib Đây là cách thức hoạt động của đoạn code:
● datadir là một chuỗi đại diện cho đường dẫn tới thư mục chứa các hình ảnh.
● categories là một danh sách các chuỗi, trong đó mỗi chuỗi đại diện cho tên của một thư mục con trong datadir chứa các hình ảnh của một loại trái cây cụ thể.
● IMG_SIZE là một số nguyên đại diện cho chiều rộng và chiều cao mong muốn của các hình ảnh đã thay đổi kích thước, tính bằng pixel.
● Đoạn code sau đó lặp lại từng danh mục trong categories, và đối với mỗi danh mục, nó:
● Xây dựng một đường dẫn đến thư mục con của danh mục bằng cách sử dụng os.path.join.
● Lặp lại từng tệp ảnh trong thư mục con bằng cách sử dụng os.listdir.
● Đọc hình ảnh bằng cách sử dụng cv2.imread ở chế độ xám, và thay đổi kích
Trang 10Hình 5 đoạn code đọc tạo dữ liệu training
Đoạn code trên tạo ra dữ liệu huấn luyện từ các hình ảnh trái cây được lưu trữ trong các thư mục con của thư mục datadir Dữ liệu huấn luyện được lưu trữ dưới dạng danh sách các cặp (ảnh, nhãn), trong đó ảnh là một mảng NumPy đại diện cho hình ảnh đã thay đổi kích thước, và nhãn là một số nguyên đại diện cho loại trái cây tương ứng.
Cụ thể, đoạn mã này có các bước sau:
● Tạo một danh sách rỗng training_data để lưu trữ dữ liệu huấn luyện.
● Xây dựng một hàm create_training_data để lặp lại từng danh mục trong categories và thêm dữ liệu huấn luyện tương ứng vào danh sách training_data.
● Trong vòng lặp ngoài cùng, tìm đường dẫn đến thư mục chứa hình ảnh của loại trái cây hiện tại bằng cách sử dụng os.path.join.
● Sử dụng categories.index(category) để lấy số nguyên đại diện cho loại trái cây hiện tại, và lưu nó vào biến class_num.
● Trong vòng lặp trong cùng, lặp lại từng tệp ảnh trong thư mục hiện tại bằng cách sử dụng os.listdir.
● Đọc hình ảnh bằng cách sử dụng cv2.imread ở chế độ xám, và thay đổi kích thước bằng cv2.resize.
● Thêm cặp (ảnh, nhãn) tương ứng vào danh sách training_data.
● Nếu xảy ra lỗi khi đọc hình ảnh, bỏ qua nó và tiếp tục với hình ảnh tiếp theo.
● Gọi hàm create_training_data để tạo dữ liệu huấn luyện từ các hình ảnh trái cây.
● In ra số lượng phần tử trong danh sách training_data.
Hình 6 đo n code t o nh và nhãn ạn code tạo ảnh và nhãn ạn code tạo ảnh và nhãn ảnh và nhãn
Trang 11với mỗi mô hình máy học ta cần 2 biến x và y tách từ dataset dùng để training mô hình máy học với mỗi biến x gắn với 1 nhãn y.
Chỉ sử dụng 1 phần data từ dataset để training 1 phần dùng để test:
Hình 66 tách dataset thành 2 ph nần
Đoạn mã trên tạo hai danh sách x và y từ danh sách training_data Trong vòng lặp for, nó lần lượt truy cập vào từng phần tử trong training_data, lấy features (ảnh) và label (nhãn) của mỗi phần tử và thêm chúng vào danh sách tương ứng x và y.
Sau đó, danh sách x được chuyển đổi thành một mảng NumPy kích thước (số lượng ảnh, IMG_SIZE, IMG_SIZE, 1) bằng cách sử dụng hàm np.array và reshape Kích thước (số lượng ảnh, IMG_SIZE, IMG_SIZE, 1) là để phù hợp với đầu vào của mạng CNN (Convolutional Neural Network).
Cuối cùng, danh sách y được chuyển đổi thành một mảng NumPy kích thước (số lượng ảnh,) Hàm shape được sử dụng để hiển thị kích thước của mảng x và y.
Trang 122 Build model
Hình 7 t o m ng CNN đ phân lo i hình nh ạn code tạo ảnh và nhãn ạn code tạo ảnh và nhãn ể phân loại hình ảnh ạn code tạo ảnh và nhãn ảnh và nhãn
Đây là một mạng neural convolutional (CNN) cơ bản để phân loại hình ảnh với ba lớp tích chập, tiếp theo là một lớp kết nối đầy đủ với hai lớp dày đặc CNN sử dụng hàm kích hoạt 'relu' cho các lớp tích chập và hàm kích hoạt 'softmax' cho lớp đầu ra Bộ tối ưu hóa được sử dụng là 'adam', là một bộ tối ưu hóa tốc độ học thích ứng Hàm mất mát được sử dụng là 'categorical_crossentropy', thường được sử dụng cho các vấn đề phân loại đa lớp Mô hình được huấn luyện trên dữ liệu huấn luyện 'X' và nhãn mã hóa one-hot 'Y' trong ba epoch với kích thước lô là 16 và phân chia kiểm định là 0,2.
Hình 8 đo n code vẽ bi u đ đánh giá k t quạn code tạo ảnh và nhãn ể phân loại hình ảnh ồ đánh giá kết quảết quảảnh và nhãn
Mô hình được đào tạo trên tập dữ liệu ảnh trái cây để phân loại các loại trái cây Kết quả cho thấy mô hình có độ chính xác trên tập dữ liệu đào tạo và kiểm tra khá tốt.
Trang 13Hình 9 bi u đ đánh giá k t quể phân loại hình ảnh ồ đánh giá kết quảết quảảnh và nhãn
3 Test model
Hình 10 đo n code x lý nh trạn code tạo ảnh và nhãn ử lý ảnh trước khi đưa vào mô hìnhảnh và nhãn ước khi đưa vào mô hìnhc khi đ a vào mô hìnhư
Mã này sẽ định nghĩa hàm prepare() để xử lý ảnh trước khi đưa vào mô hình dự đoán.
Trang 14Ở đoạn code dưới đó, ta sử dụng hàm np.squeeze() để loại bỏ chiều thứ 4 trong tensor và hiển thị ảnh đã được xử lý trước khi đưa vào mô hình.
Hình 11 đo n code đ a ra k t qu testạn code tạo ảnh và nhãn ưết quảảnh và nhãn
Đoạn code trên tạo ra một ảnh màu từ ảnh xám đã được chuẩn bị trước đó để dễ dàng quan sát hơn Tiếp theo, đoạn code sử dụng mô hình đã được huấn luyện để phân loại đối tượng trong ảnh đã chuẩn bị Sau đó, kết quả phân loại sẽ được in ra màn hình gồm: giá trị dự đoán của mô hình (từ 0 đến 1), tên của quả trái được dự đoán và độ chính xác của dự đoán.
Trang 15Phần 5: Kết luận
Trải qua nhiều lần thử nghiệm và sàng lọc, mô hình tốt nhất đã được nhóm lựa chọn và rút ra được những uu điểm của áp dụng AI vào việc phân loại và xác định trái cây nhập khẩu như sau:
● Độ phân loại và xác định có độ chính xác cao
● Giảm thiểu được những chi phí phát sinh trong hệ thống cửa hàng
● Tiết kiệm được thời gian của cả khách hàng và nhân viên, nâng cao được hiệu quả mua sắm
● Nâng cao công tác quản lý sản phẩm và chuỗi cửa hàng Dựa vào những kết quả đã thu được, có thể thấy mô hình của nhóm đã giải quyết được một phần nào vấn đề bài toán đặt ra Nhưng vẫn còn một số điểm bất cập như:
- Chất lượng hình ảnh thấp ảnh hưởng lớn đến các thông số của mô hình, từ đó làm giảm độ chính xác của mô hình
- Mô hình dễ nhận diện sai những trái cây có màu sắc và hình dạng khá giống nhau như táo và cherry
- Khi đưa vào sử dụng thực tế có thể bị những yếu tố như ánh sáng, nền làm ảnh hưởng đến