Khi tiến hành học máy, chương trình sẽ thực hiện các công việc theo quy trình sau:
Hình 2.12: Quy trình đào tạo dữ liệu học máy.
Giải thích mô hình:
Dữ liệu đầu vào là những tấm ảnh trái cam có kích thước 640x480 pixel. Sau khi được xử lý thu nhỏ kích thước 64x48 pixel và chuyển về mảng hai chiều. Các mảng hai chiều gồm các giá trị từ 0 đến 255 đại diện cho màu sắc của ảnh. Các mảng hai chiều tiếp tục qua các lớp của mô hình đã được tác giả xây dựng ở mục [b]. Quá trình đào tạo được cung cấp liên tục các cặp dữ liệu và nhãn vào trong mô hình. Trong quá trình đào tạo, độ chính xác của mô hình sẽ được kiểm tra bằng dữ liệu thử nghiệm. Độ chính xác sẽ tăng dần cho đến khi đạt một ngưỡn xác định. Lúc này quá trình đào tạo sẽ dừng lại
Quá trình đào tạo sẽ được diễn ra như hình:
Dưới đây là đồ thị thu được sau quá trình đào tạo.
Hình 2.14: Đồ thị của quá trình đào tạo dữ liệu.
Train_loss là tỉ lệ sai của tập dữ liệu đào tạo. Val_loss là tỉ lệ sai của tập dữ liệu thử nghiệm. Train_acc là tỉ lệ chính xác của tập dữ liệu đào tạo. Val_acc là tỉ lệ chính xác của tập dữ liệu thử nghiệm.
Theo như đồ thị càng về sau tỉ lệ chính xác càng tăng lên và mức cuối cùng thu được là 82%.
2.3.Tiểu kết
Qua chương 2, tác giả đã thu thập dữ liệu hình ảnh trái cam đạt chất lượng và không đạt chất lượng và tiến hành cho học máy với kết quả thu được là một mô hình có độ chính xác là 82%. Sang chương 3, tác giả sẽ tiến hành thực nghiệm trên hệ thống.
Chương 3 : Xây dựng hệ thống thực nghiệm
Từ kết quả thu được sau quá trình đào, tác giả đi đến việc thử nghiệm độ chính xác của mô hình. Ý tưởng của tác giả là sẽ thử nghiệm mô hình trên thiết bị Raspberry Pi và trên máy tính. So sánh kết quả thu được nếu kết quả như nhau thì có thể sử dụng Raspberry Pi để nhận diện quả cam có đạt chất lượng hay không.
Sau khi cài đặt các thư viện OpenCV, Tensorflow, Keras trên Raspberry Pi ở mục [2.2.1] Tác giả sao chép mô hình thu được từ quá trình đào tạo trên máy tính. Tiếp theo tác giả xây dựng chương trình sử dụng mô hình để đưa ra kết quả. Để hiểu rõ về quy trình hoạt động của hệ thống tác sẽ trình bày chi tiết qua các phần sau:
3.1. Xây dựng hệ thống thực nghiệm trên Raspberry Pi.
3.1.1.Xây dựng chương trình phân loại cam trên Raspberry Pi
Xây dựng chương trình nhận diện quả cam có đạt chất lượng hay không Bước 1: Truyền vào các input gồm model thu được từ việc đào tạo, đường dẫn đến thư mục chứa ảnh cần nhận diện.
Hình 3.1: Các đối số của chương trình nhận diện cam trên Raspberry.
Bước 2: Xử lý tấm ảnh được truyền vào trước khi cho nhận diện. Sử dụng các hàm xử lý ảnh trong thư viện OpenCV
Hình 3.2: Các hàm xử lý ảnh khi nhận diện cam.
Bước 3: Nhận diện quả cam có đạt chất lượng hay không
Ảnh đã qua xử lý được truyền vào mô hình để kiểm tra nếu tỉ lệ phần trăm là cam đạt chất lượng tốt lớn hơn thì kết quả trả về là cam đạt chất lượng, nếu tỉ lệ cam không tốt lớn hơn thì kết quả là cam không đạt chất lượng.
ap = argparse.ArgumentParser()
ap.add_argument("-m", "--model", required=True, help="path to trained model model")
ap.add_argument("-i", "--image", required=True, help="path to input image")
args = vars(ap.parse_args())
image = cv2.imread(args["image"]) orig = image.copy()
# pre-process the image for classification image = cv2.resize(image, (64, 48)) image = image.astype("float") / 255.0 image = img_to_array(image)
Hình 3.3: Xử lý nhận diện cam.
3.1.2.So sánh kết quả khi nhận diện trên Raspberry Pi và trên máy tính
Để đảm bảo độ chính xác của hệ thống tác giả đã thử nghiệm nhận diện 3 tấm ảnh quả cam trên cả Raspberry Pi và máy tính. Dưới đây là kết quả thu được
Bảng 3-1: Kết quả so sánh khi thử nghiệm trên Raspberry Pi và trên máy tính.
Raspberry Pi Máy tính
Ảnh 1 60.45% trong 2.5s 60.45% trong 3.4s
Ảnh 2 93.70% trong 2.5s 60.45% trong 3.5s
Ảnh 3 85.15% trong 2.5s 85.15% trong 3.5s
Từ bảng 3-1 kết quả khi thử nghiệm trên Raspberry Pi hoàn toàn giống kết quả khi thử nghiệm trên máy tính. Nhưng vẫn còn mặt hạn chế vì phần cứng của Raspberry Pi không đảm bảo nên quá trình xử lý sẽ diễn ra lâu hơn so với trên máy tính.
3.1.3.Quy trình hoạt động của hệ thống
Quy trình hoạt động của hệ thống gồm 3 bước.
Bước 1: Khởi động hệ thống tự động chụp ảnh khi nhấn nút điều khiển Khi nhấn nút điều khiển Raspberry Pi nhận tín hiệu và điều khiển các camera tự động chụp ảnh. Các tấm ảnh sau khi chụp được lưu vào thư mục hình ảnh.
Hình 3.4: Quy trình thu thập ảnh.
Bước 2 : Kiểm tra có phải là quả cam không nếu không phải là quả cam sẽ không tiến hành nhận diện.
model = load_model("orange.h5")
(Good, NotGood) = model.predict(image)[0]
label = "Good" if Good > NotGood else "Not Good" proba = Good if Good > NotGood else NotGood label = "{}: {:.2f}%".format(label, proba * 100) return label
Sau khi hệ thống thu thập 3 tấm ảnh từ 3 chiều của vật mẫu. Hệ thống sẽ nhận diện đó có phải là quả cam không. Nếu đó không phải là quả cam hệ thống sẽ thông báo thông qua đèn LED. Nếu nhận diện là quả cam hệ thống sẽ chuyển sang bước 3.
Hình 3.5: Quy trình nhận diện quả cam.
Bước 3: Nhận diện quả cam có đạt chất lượng tốt hay không.
Với 3 tấm ảnh thu thập ban đầu sẽ tiếp tục được nhận diện có đạt chất lượng hay không. Kết quả sẽ được thông báo bằng đèn LED.
Hình 3.6: Quy trình phân loại quả cam.
3.1.4.Tiểu kết
Qua mục này, tác giả đã trình bày về kết quả thử nghiệm trên Raspberry Pi, so sánh sự khác nhau khi nhận diện trên Raspberry Pi và trên máy tính. Mô tả quy trình hoạt động của hệ thống. Tiếp theo tác giả sẽ đưa ra các số liệu khi thực nghiệm thực tế và rút ra nhận xét về các số liệu thu thập được.
3.2.Kết quả thu được sau các lần thực nghiệm thực tế 3.2.1.Kết quả thực nghiệm lần 1
Để kiểm tra độ chính xác của hệ thống tác giả đã kiểm tra trên 10 quả cam. Sau khi cam được phân loại bằng mắt thường theo các tiêu chí quy định.
Hình 3.7: Phân loại cam thực nghiệm.
Trái cam sau khi đi qua hệ thống dưới đây là bảng kết quả thu được sau khi thử nghiệm hệ thống. Tỉ lệ cam đạt sẽ được hiển thị bằng giá trị dương, tỉ lệ cam chưa đạt sẽ được biểu thị bằng giá trị âm
3.2.2.Kết quả thực nghiệm lần 2
Bảng 3-3: Bảng kết quả thử nghiệm lần 2.
3.2.3.Đánh giá hệ thống phân lớp
Khi xây dựng một mô hình học máy cần phải sử dụng các phương pháp để đánh giá mô hình có đạt hiệ quả không. Tác giả đã dựa trên bài báo số [12] một bài của trang Machine Learning cơ bản nói về các phương pháp đánh giá một mô hình phân lớp.
Tác giả đã sử dụng phương pháp accuracy (độ chính xác). Cách đánh giá này tính tỉ lệ giữa ảnh được dự đoán đúng và tổng số ảnh trong dữ liệu kiểm thử của thư mục cam đạt .
Bảng 3-4 Kiểm tra độ chính xác tập test cam đạt
Số lượng ảnh Kết quả chính xác Kết quả sai Tỉ lệ
300 ảnh cam đạt 235 ảnh 65 ảnh 78.33%
Ngoài ra tác giả cũng dự đoán độ chính xác của tập dữ liệu kiểm thử của thư mục cam chưa đạt.
Bảng 3-5 Kiểm tra độ chính xác tập test cam chưa đạt
Số lượng ảnh Kết quả chính xác Kết quả sai Tỉ lệ
300 ảnh cam chưa đạt 210 ảnh 90 ảnh 70%
Qua hai lần thử nghiệm mô hình tác giả thu được có độ chính xác của cam đạt chất lượng là 78.33% và cam không đạt chất lượng là 70%. Có sự chênh lệch xảy ra giữa độ chính xác của tập thử nghiệm cam đạt và cam chưa đạt nguyên nhân là do sự khác nhau giữa hai tập dữ liệu cam đạt và cam chưa đạt dẫn đến sự thay đổi kết quả trong quá trình kiểm thử.
3.2.4.Rút ra nhận xét qua 2 lần thực nghiệm
Qua hai lần thực nghiệm hệ thống hoạt động ổn định không xảy ra lỗi trong quá trình thực nghiệm. Tỉ lệ chính xác thực tế của hệ thống đạt khoảng 70%. Hệ thống vẫn còn nhiều hạn chế do các nguyên nhân sau:
Nguyên nhân chủ quan
Phần cứng hệ thống còn yếu không thể tăng thời gian xử lý. Chưa đạt được môi trường lý tưởng trong lúc chụp ảnh. Nguyên nhân khách quan
Mô hình đào tạo chưa chính xác hoàn toàn vẫn có các trường hợp nhận diện sai.
Chưa đưa ra được mô hình tối ưu nhất trong quá trình đào tạo
Dữ liệu đầu vào vẫn còn các điểm nhiễu gây sai sót trong quá trình đào tạo.
3.3.Tiểu kết
Qua chương này, tác giả đã trình bày về quá trình xây dựng hệ thống thực nghiệm, trình bày quy trình hoạt động của hệ thống. Đưa ra kết quả qua các lần thực nghiệm cũng như danh sách đánh giá hệ thống từ đó rut ra nhận xét, giải thích nguyên nhân. Phần cuối cùng tác giả sẽ tổng kết những gì đã làm được và hướng phát triển trong tương lai.
KẾT LUẬN
Kết quả đạt được:
Qua quá trình nghiên cứu đề tài “Ứng dụng Keras xây dựng hệ thống nhận diện và phân loại cam, tác giả đã đạt được một số kết quả sau:
Nắm được các phương pháp học máy cơ bản.
Tìm hiểu về cách cài đặt các thư viện học máy trên Raspberry Pi Xử lý hình ảnh bằng thư viện OpenCV,
Xây dựng một chương trình học máy bằng thư viện Keras.
Tìm hiểu cấu tạo và chức năng của các thiết bị trong hệ thống như Raspberry Pi, Camera Logitech, Camera Pi V2.
Thực hiện được phương pháp thu thập dữ liệu nhanh chóng và cách phân loại dữ liệu đạt chuẩn.
Sau quá trình tìm hiểu thư viện học máy Keras, tác giả có thể xây dựng các chương trình học máy khác nhau phù hợp với đặc điểm của các đối tượng khác nhau. Ngoài ra tác giả cũng tìm hiểu về hiện tượng overfiting trong học máy. Các cách tăng độ chính xác trong quá trình học máy.
Cuối cùng, tác giả đã ứng dụng những gì đã nghiên cứu lại và tạo ra một sản phẩm ứng dụng thư viện học máy Keras. Đó chính là hệ thống thu thập dữ liêu, nhận diện và phân loại cam đạt và không đạt chất lượng.
Định hướng phát triển trong tương lai:
Tăng số lượng dữ liêu đào tạo để tăng độ chính xác. Thử nghiệm trên các loại trái cây khác nhau.
Tăng tốc độ xử lý của phần cứng hệ thống.
TÀI LIỆU THAM KHẢO
Tài liệu tiếng Anh
[1]Deep Learning by Ian Goodfellow and Yoshua Bengio and Aaron Courville [2]Neural Networks and Deep Learning by Michael Nielsen.
[3]Deep learning with Python by Francois Chollet in October 2017.
Tài liệu internet
[4]Tất tần tật về Machine Learning và ứng dụng trong những ngành công nghiệp lớn 04/03/2018, https://techtalk.vn/tat-tan-tat-moi-kien-thuc-co-ban-ve-machine- learning.html
[5]Vũ Hữu Tiệp, Giới thiệu về Machine Learning 26/12/2016,
https://machinelearningcoban.com/2016/12/26/introduce/
[6]Công ty Nhật dùng trí thông minh nhân tạo của google đễ hỗ trợ phân loại dưa leo
https://tinhte.vn/threads/cong-ty-nhat-dung-tri-thong-minh-nhan-tao-cua- google-de-ho-tro-phan-loai-dua-leo.2638624/.
[7]Build a deep learning model using keras ngày truy cập 17/8/2018
https://towardsdatascience.com/building-a-deep-learning-model-using-keras- 1548ca149d37.
[8]Tramg chủ Keras hướng dẫn xây dựng mô hình tuần tự https://keras.io/getting- started/sequential-model-guide/.
[9]https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6111295/ Bài báo nói về các ứng dụng của machine learning trong nông nghiệp.
[10] http://www.vjsonline.org/news/phân-loại-xoài-bằng-thị-giác-máy-tính- computer-vision phân loại xoài bằng thị giác máy tính.
[11] https://baomoi.com/he-thong-so-che-va-phan-loai-chanh-xuat-khau-cua- nong-dan-long-an/c/23498579.epi Hệ thống sơ chế và phân loại chanh xuất khẩu của nông dân Long An.
[12] https://machinelearningcoban.com/2017/08/31/evaluation/?fbclid=IwAR 3ZnvHoAkkrw4InGdE0ItrcEVmpwJ1IGQWrWhAuCqQzVRCADrsZYcO5faE #-gioi-thieu Các phương pháp đánh giá hiệu quả của mô hình.