Mục lục Lời cảm ơn....................................................... Error! Bookmark not defined. Chương 1: Giới thiệu ................................................................................... 2 1.1. Đặt vấn đề .................................................................................................... 2 1.2. Thách thức đặt ra.......................................................................................... 2 1.3. Hướng giải quyết.......................................................................................... 3 Chương 2: Khái quát các bước thực hiện................................................... 4 Chương 3: Chuẩn bị dữ liệu........................................................................ 6 3.1. Bộ dataset Fruit 360 ..................................................................................... 6 3.2. Xây dựng bộ data hoàn chỉnh kết hợp bộ Fruit 360 ...................................... 7 Chương 4: Mạng CNN............................................................................... 14 4.1. Mạng VGG .................................................................................................15 4.1.1. Mạng VGG16:.......................................................................................16 4.1.2. Mạng VGG19:.......................................................................................17 4.2. Mạng Resnet ...............................................................................................18 • Mạng Resnet50:........................................................................................19 Chương 5: Kết quả và hướng phát triển .................................................. 22 5.1. Kết quả thu được:........................................................................................22 5.2. Kết luận và hướng phát triển: ......................................................................25 Tài liệu tham khảo ..................................................................................... 26 2 Chương 1: Giới thiệu 1.1. Đặt vấn đề Hình 1.1. Ảnh gian hàng với các loại táo khác nhau Thông thường, khi bước vào một cửa hàng bán hoa quả, ta có thể thấy rõ được các loại quả đã được phân loại sẵn và xếp thành từng vùng riêng biệt. Kể cả khi nhãn của các gian hàng bị mất, nhoè, hay là khi trộn lẫn các loại hoa quả lại với nhau thì chúng ta cũng có thể biết được đâu là loại quả gì thông qua những kiến thức cơ bản mà ta đã được học từ bé. Nhưng với máy thì sao, làm thế nào mà máy có thể biết được đâu là loại quả gì ? 1.2. Thách thức đặt ra Đôi mắt và bộ não quyết định logic nhận biết là do trải qua hàng triệu năm tiến hoá mới có được. Vậy làm sao để có thể thực hiện công việc vốn đơn giản đó với những sinh vật vốn trải qua hàng triệu năm đã tiến hoá thông qua máy tính ? Máy tính cũng như con người, muốn máy thực hiện việc phân loại, chúng ta phải huấn luyện chúng, cho chúng học dần dần thông qua những bức ảnh hoa quả. Thách thức đặt ra ở đây, số lượng ảnh đủ để cho máy tính có thể học và phân loại được các loại hoa quả là bao nhiêu ảnh ? Vì nếu xét trên một bộ dữ liệu quá nhỏ,
Mục lục Lời cảm ơn Error! Bookmark not defined Chương 1: Giới thiệu 1.1 Đặt vấn đề 1.2 Thách thức đặt 1.3 Hướng giải Chương 2: Khái quát bước thực Chương 3: Chuẩn bị liệu 3.1 Bộ dataset Fruit 360 3.2 Xây dựng data hoàn chỉnh kết hợp Fruit 360 Chương 4: Mạng CNN 14 4.1 Mạng VGG 15 4.1.1 Mạng VGG16: .16 4.1.2 Mạng VGG19: .17 4.2 Mạng Resnet .18 • Mạng Resnet50: 19 Chương 5: Kết hướng phát triển 22 5.1 Kết thu được: 22 5.2 Kết luận hướng phát triển: 25 Tài liệu tham khảo 26 Chương 1: Giới thiệu 1.1 Đặt vấn đề Hình 1.1 Ảnh gian hàng với loại táo khác Thông thường, bước vào cửa hàng bán hoa quả, ta thấy rõ loại phân loại sẵn xếp thành vùng riêng biệt Kể nhãn gian hàng bị mất, nhoè, trộn lẫn loại hoa lại với biết đâu loại thơng qua kiến thức mà ta học từ bé Nhưng với máy sao, làm mà máy biết đâu loại ? 1.2 Thách thức đặt Đơi mắt não định logic nhận biết trải qua hàng triệu năm tiến hố có Vậy để thực cơng việc vốn đơn giản với sinh vật vốn trải qua hàng triệu năm tiến hố thơng qua máy tính ? Máy tính người, muốn máy thực việc phân loại, phải huấn luyện chúng, cho chúng học thông qua ảnh hoa Thách thức đặt đây, số lượng ảnh đủ máy tính học phân loại loại hoa ảnh ? Vì xét liệu nhỏ, tầm chục ảnh loại khơng thể mơ tả xác hết loại Nếu phân loại hai loại có khác biệt rõ ràng, cần khoảng vài nghìn ảnh; có nhiều loại khác nhau, lại có loại chung đặc tính màu sắc, liệu đủ máy học có lẽ phải lên tới hàng trăm nghìn ảnh loại Một thách thức phải kể đến mô hình học máy phù hợp tốn liệu xét, từ đưa kết tốt cho toán 1.3 Hướng giải Đối với toán này, ta xét đến năm loại hoa (táo, cam, chuối, nho, dứa) sử dụng CNN để giải toán tập liệu đa dạng (cụ thể chi tiết đề cập chương sau) Chương 2: Khái quát bước thực Hình 2.1 Sơ đồ bước thực Bước 1: Chuẩn bị liệu Đầu tiên cần phải chuẩn bị ảnh đủ lớn cho năm loại hoa táo, cam, chuối, dứa, nho Những ảnh có thơng qua việc chụp ảnh với hoa nhà, ngồi chợ kết hợp việc tìm ảnh mạng Yêu cầu liệu phải đa dạng theo nhiều góc nhìn khác Ví dụ cam, ta phải tìm ảnh chụp cam theo nhiều góc độ, cam có cuống khơng cuống, chụp nhiều cam đứng cạnh xếp chồng lên nhau, chụp cam lơ lửng hay bọc lưới gian hàng chợ Ta lấy ảnh cắt lát bên cam để biết đâu cam trường hợp đặc biệt (bị cắt, bị che phần, …) Cuối ta phải phân chia liệu thành tập train (dùng cho máy học) tập test (để đánh giá mơ hình sau cho máy học) với tỉ lệ thích hợp để đảm bảo số lượng ảnh train đủ lớn để máy học biết đâu loại gì, đồng thời số ảnh test không nhỏ, đủ để đánh giá khách quan mơ hình sử dụng có tốt hay khơng Có thể nói bước quan trọng toán Bước 2: Sử dụng thuật toán để huấn luyện Trong bước này, sử dụng liệu train để bước cải thiện khả mơ hình việc dự đoán ảnh đưa táo, cam, chuối, dứa hay nho Nó giống việc xử lý tác vụ, với nhiều kinh nghiệm kết cho tốt Ở đây, thuật toán sử dụng để huấn luyện mơ hình bao gồm CNN, SVM, Linear Regression, Random Forest Mỗi thuật tốn lại có bước xử lý khác ưu nhược điểm phụ thuộc vào toán đặt Để kiểm tra độ hiệu nhóm liệu test liệu thực tế cuối cùng, trình huấn luyện, việc kiểm tra chéo (cross validation) giúp cách tiếp tục phân chia nhỏ nhóm liệu đào tạo (train) thành tập train test nhỏ Hiện nay, CNN mơ hình tốt nhất, xu hướng nghiên cứu hàng đầu lĩnh vực thị giác máy tính Bước 3: Đánh giá mơ hình đưa dự đốn Sau lựa chọn mơ hình thuật tốn huấn luyện chúng liệu train, ta sử dụng liệu test (đã phân chia bước 1) để đánh giá hiệu độ khái qt mơ hình liệu Nếu kết đạt ổn với độ xác cao, ta đưa mơ hình vào hoạt động Nếu không ta tiến hành tinh chỉnh cách thay đổi thơng số thuật tốn, thay đổi loại thuật tốn hay chí thay đổi liệu Chương 3: Chuẩn bị liệu Như trình bày chương trước, hệ thống học máy nào, việc chuẩn bị liệu khâu quan trọng định trực tiếp đến mức độ thành công hệ thống Tuy nhiên, nghiên cứu toán phân loại hoa gặp vấn đề lớn kiểm tra ảnh bất kỳ, lý liệu mà họ đưa chưa đủ tốt (số lượng ảnh cịn khơng đủ độ đa dạng) Do đó, việc xây dựng liệu chuẩn cần thiết, để đảm bảo tính hiệu mơ phục vụ cho toán mức độ cao Để xây dựng liệu hoa quả, nhóm chúng em sử dụng dataset Fruit 360 cho năm loại kết hợp với việc lấy ảnh trang web chuyên ảnh Shutterstock, Pinterest hay chí sử dụng Google image 3.1 Bộ dataset Fruit 360 Bộ dataset Fruit 360 liệu lớn gồm nhiều loại khác với số lượng ảnh vô lớn, thực dựa việc cắt frame qua video khoảng chừng 20 giấy quay xung quanh loại trắng Các thông số liệu: - Tổng số ảnh: 82213 ảnh - Kích thước tập train: 61488 ảnh (một loại ảnh) - Kích thước tập test: 20622 ảnh (một loại ảnh) - Số class: 120 class - Kích thước ảnh: 100 x 100 pixels Các lớp khác loại (chẳng hạn táo có táo vàng, táo xanh, …) chia làm class khác Link tải data (có mơ tả chi tiết): https://www.kaggle.com/moltean/fruits 3.2 Xây dựng data hoàn chỉnh kết hợp Fruit 360 Ưu điểm dataset Fruit 360 có nhiều loại khác với số lượng lớn ảnh có kích thước phù hợp Tuy nhiên, nhược điểm lớn liệu thiếu đa dạng; hay nói cách khác, liệu bao gồm ảnh trái đẹp segment sẵn, quanh quẩn lại việc nhìn loại theo hướng khác nhau, dẫn đến việc over-fitting khơng đánh giá tính hiệu mơ hình đem ảnh hoa khác để đánh giá (ví dụ ảnh nhiều táo xen lẫn thùng), chắn độ xác thấp Over-fitting xảy mơ hình q hợp lý, khớp với huấn luyện đem dự đoán với liệu Do đó, để tránh tình trạng này, chúng em thực lấy thêm ảnh kết hợp sử dụng Fruit 360 để đưa liệu train test hoàn chỉnh Để liệu hồn thiện, nhóm chúng em chuẩn bị ba liệu: Bộ thứ sinh từ tập dataset Fruit 360 Hai lại lấy từ mạng, cách crawl ảnh từ Shutterstock Google Image Toàn tập sinh từ Fruit 360 lấy mạng dùng để làm tập ảnh train, còn lại dùng làm ảnh test Sử dụng hiệu ứng (flip, rotate, …) kết hợp với việc thêm nhiễu (cách thức thêm nhiễu lồng ảnh với ảnh phong cảnh, ảnh bàn ghế) vào ảnh bên tập train Mục đích việc làm làm đa dạng làm dày tập train Một số thí dụ ảnh test: Táo: Hình 3.2.1 Ảnh táo vàng Hình 3.2.2 Ảnh gian hàng táo loại Hình 3.2.3 Ảnh hai miếng táo xanh Hình 3.2.4 Ảnh giỏ táo bên hồ Cam: Hình 3.2.5 Ảnh cam với nước cam Hình 3.2.6 Ảnh khay cam canh Hình 3.2.7 Ảnh cam màu khác Hình 3.2.8 Ảnh cam cành Chuối: Hình 3.2.9 Ảnh nải chuối Hình 3.2.10 Ảnh buồng chuối Hình 3.2.11 Ảnh lột vỏ chuối Hình 3.2.12 Ảnh trái chuối mặc đồ 10 Dứa: Hình 3.2.17 Ảnh nhiều dứa Hình 3.2.18 Ảnh dứa cắt lát Hình 3.2.19 Ảnh dứa mặc đồ màu đơng Hình 3.2.20 Ảnh vườn dứa 12 Số lượng ảnh test: Loại (class) Số lượng ảnh test Táo 2100 Cam 1394 Chuối 1348 Nho 1617 Dứa 1632 Bảng 3.2.1 Số lượng ảnh liệu test 13 Chương 4: Mạng CNN Hình 4.1 Mơ hình mạng CNN Mơ hình mạng CNN gồm ba thành phần chính: - Đầu vào tập liệu gồm ảnh - Hidden Layers: phần này, mạng tiến hành tính tốn hàng loạt phép tích chập (Convolution) phép hợp (Pooling) để phát đặc trưng Ví dụ, ta có hình ảnh ngựa vằn phần mạng nhận diện sọc vằn, hai tai bốn chân - Classification: phần này, lớp với liên kết đầy đủ (Fully-Connected) đóng vai trị phân lớp đặc trưng trích rút trước Sau cùng, tầng đưa xác suất đối tượng ảnh Do trình bày báo cáo kỳ nên nhóm chúng em xin phép khơng sâu vào lớp mạng CNN mà nói thẳng mơ hình CNN có sẵn mà chúng em sử dụng, Resnet50, VGG16 VGG19 14 4.1 Mạng VGG Hình 4.1.1 Tổng quan loại mạng VGG Mạng VGG đời năm 2014 giới thiệu hội thảo ICLR 2014 Đặc điểm mạng VGG sử dụng chuỗi lớp tích chập Conv liên tiếp (hai hay ba lớp Conv) tiếp nối theo sau lớp Max Pooling 2D Nó khác với số loại mạng đời trước LeNet, AlexNet, vốn sử dụng cặp lớp ConvMaxpooling liên tiếp Ngay sau Conv cuối lớp Flatten để chuyển ma trận bốn chiều Conv layer ma trận hai chiều Tiếp nối sau lớp Fully-Connected lớp kích hoạt Softmax Một số điểm bật VGG: 15 - Việc sử dụng kết hợp hai hay ba Kernel 3x3 có hiệu Kernel 5x5 trường tiếp nhận, giúp mạng sâu mà lại giảm tham số tính tốn cho mơ hình Ba Conv 3x3 có trường tiếp nhận Conv 7x7 (đặc trưng mạng ZFNet) - Kích thước đầu vào giảm dần qua Conv tăng số chiều sâu - Áp dụng tốt cho toán Classification Localizer (hay dùng Object Detection) - Sử dụng hàm kích hoạt Relu sau Conv train Batch Gradient Descent - Có sử dụng kỹ thuật tăng cường để làm dày liệu q trình train Kiến trúc mơ hình gồm nhiều loại biến thể khác Keras hỗ trợ hai pre-trained model VGG VGG16 VGG19 4.1.1 Mạng VGG16: Hình 4.1.1.1 Mơ hình mạng VGG16 16 Cấu trúc VGG16 bao gồm: - 13 lớp tích chập (Conv2 Conv3) có Kernel 3x3 - Sau layer Conv Maxpooling giảm kích thước xuống cịn nửa, ba lớp Fully-Connected 4.1.2 Mạng VGG19: Hình 4.1.2.1 Mơ hình mạng VGG19 Mạng VGG19 tương tự VGG16, khác chỗ có thêm ba lớp tích chập Conv3 ba tầng tích chập cuối (tạo thành bốn lớp conv chồng lên nhau) 17 4.2 Mạng Resnet Hình 4.2.1 Các mơ hình mạng Resnet Mạng Resnet (Residual Network) loại mạng phát triển Microsoft năm 2015 với viết “Deep residual learning for image recognition” Link viết: https://www.cvfoundation.org/openaccess/content_cvpr_2016/papers/He_Deep_Residual_Learnin g_CVPR_2016_paper.pdf Resnet có cấu trúc gần giống với VGG với nhiều lớp chồng lên làm cho mơ hình sâu Nhưng độ sâu Resnet sâu nhiều so với VGG (24, 55, 101 151) Khi train mơ hình Deep CNN (có số lượng layers lớn chồng lên nhau), ta hay gặp phải vấn đề vanishing/explodes Gradients Vấn đề giải cách thêm Batch Normalization giúp hệ số trở nên cân khơng q nhỏ hay q lớn Có vấn đề nữa, độ xác mơ hình học sâu bắt đầu bão hồ, chí giảm so với layer stack nhiều layer Vấn đề khơng phải Overfitting, mà q trình stack thêm layer khơng học thêm nên độ xác khơng tăng Resnet đời nhằm giải vấn đề 18 Resnet có cấu trúc gồm nhiều residual block, ý tưởng bỏ qua layer cách thêm kết nối với layer trước Mấu chốt reseidual block sau hai layer, ta lại cộng input output lại với nhau: H(x) = F(x) + x Model dễ học ta thêm đặc trưng từ layer trước vào Hình 4.2.2 Resnet block Một số đặc điểm mạng Resnet: - Sử dụng Batch Normalization sau Conv layer - Learning rate 0.1, giảm 10 lần error không giảm - Mini batch size 256 - Weight decay 10^-5 - Không sử dụng dropout Do Resnet giải nhiều vấn đề deep learning truyền thống, dễ dàng train model với hàng trăm layer Hiện có nhiều loại mạng Resnet: Resnet 34, Resnet 50, Resnet 101, …; nhóm chúng em có sử dụng pre-train model Resnet50 cho tốn • Mạng Resnet50: Mạng Resnet50 có cấu trúc gồm bốn tầng (như hình 4.2.1 4.2.3) Mạng nhận ảnh đầu vào ba chiều có kích thước bội số 32, giả sử kích cỡ ảnh đầu vào 128x128x3 Mỗi lần, kiến trúc Resnet thực tích chập ban đầu maxpooling sử dụng 7x7 3x3 kernel Sau đó, tầng thứ bắt đầu, có ba residual blocks chứa ba layers block Kích thước kernels sử dụng để thực tích chập ba layers block 19 tầng thứ tương ứng 64, 64 128 Hoạt động tích chập residual block thực với stride 2, kích thước đầu vào giảm nửa độ rộng kênh nhân đôi Cứ từ tầng sang tầng khác, độ rộng kênh nhân đơi kích thước đầu vào giảm nửa Sau cùng, mạng Resnet 50 có lớp Average Pooling, theo sau lớp FullyConnected với số class output Hình 4.2.3 Mơ hình mạng Resnet50 với tầng biểu thị với màu khác Nhóm chúng em sử dụng lớp tích chập (lấy đặc trưng) từ mạng nêu, lớp Neural Network lớp riêng gồm tập lớp Dense Dropout dùng chung cho bốn model pre-trained Các lớp Dense lớp ẩn neural nhân tạo “hứng” phần output từ lớp tích chập sinh logic định để thực trình phân loại Cịn lớp Dropout nhằm mục đích chống Over-fitting q trình học 20 Hình 4.2 Mơ hình thêm lớp dropout 21 Chương 5: Kết hướng phát triển 5.1 Kết thu được: Input: tập liệu đầu vào Hàm mục tiêu (hàm loss): Cross-entropy Với hỗ trợ thư viện keras, scikit-learn imutils, nhóm chúng em thu kết thực tốn với mơ hình pre-trained Resnet50, VGG16 VGG19 cho liệu có (thực chương 2): Mạng Biểu đồ training loss Thông số kết Epoch 50: - loss: 0.0200 - acc: 0.9941 - val_loss: 0.1812 VGG16 - val_acc: 0.9580 - Thời gian chạy: 1100.5 giây Epoch 50: - loss: 0.0168 - acc: 0.9947 - val_loss: 0.2538 VGG19 - val_acc: 0.9491 - Thời gian chạy: 1214.1 giây 22 Epoch 50: - loss: 0.0083 - acc: 0.9980 - val_loss: 0.1591 Resnet50 - val_acc: 0.9714 - Thời gian chạy: 1061.45 giây Epoch 50: - loss: 0.0121 - acc: 0.9967 - val_loss: 0.1599 Resnet50v2 - val_acc: 0.9708 - Thời gian chạy: 1093.4 giây Bảng 5.1.1 Bảng kết thực train với pre-trained model khác Qua bảng 5.1.1, ta thấy việc sử dụng Resnet50 cho kết tốt hẳn so với việc sử dụng loại mạng VGG16 VGG19 (thời gian chạy hơn, độ xác cao khơng bị loss nhiều) 23 Ngồi ra, nhóm chúng em có làm trang Web thực kiểm tra ảnh có phải táo, cam, chuối, dứa hay nho khơng Hình 5.1.1 Ảnh test thử ảnh dứa Web 24 5.2 Kết luận hướng phát triển: Nhìn chung, việc sử dụng pre-trained model giúp nhóm chúng em có kết tốt với liệu mà chúng em có (chạy nhanh, độ xác cao, loss ít) Từ tốn Fruit Classification phát triển lên thành toán Fruit Detection, toán sử dụng mơ hình Faster R-CNN để giải tốn phát nhận diện cách thêm mạng neural region proposal network Nếu muốn nâng cấp tốn cần giải cần phải giữ ngun mơ hình thực tốn phân loại, chuẩn bị thêm liệu gán nhãn vị trí hoa ảnh theo format liệu lớn COCO Dataset, Pascal VOC dành riêng cho hoa để xây dựng mơ hình region proposal network Tuy nhiên hạn chế hạn chế mặt thời gian với việc nhóm chưa có nhiều kinh nghiệm việc xấy dựng mơ hình thị giác máy tính nên chưa thể hồn thành khuôn khổ môn học Link viết tham khảo hướng phát triển: https://arxiv.org/abs/1506.01497?context=cs.CV&fbclid=IwAR2BGZcwZKnJ6Gg PKCafLeVHtepVpQWQGLqLhc20sIiTTOpRdNLzZ3o-yOQ 25 Tài liệu tham khảo Sách báo: Kaiming He, Xiangyu Zhang, Shaoqing Ren and Jian Sun (2015), “Deep Residual Learning for Image Recognition”, Microsoft Research, p 770-778 Horea Muresan and Mihai Oltean (2018), “Fruit recognition from images using deep learning” Website: https://www.kaggle.com/moltean/fruits https://cv-tricks.com/keras/understand-implement-resnets/ https://techblog.vn/gioi-thieu-ve-cac-pre-trained-models-trong-linh-vuccomputer-vision https://dlapplications.github.io/2018-07-06-CNN/ https://www.pyimagesearch.com/2016/09/26/a-simple-neural-networkwith-python-and-keras/ https://topdev.vn/blog/thuat-toan-cnn-convolutional-neural-network/ 8.https://www.researchgate.net/publication/321475443_Fruit_recognition_fro m_images_using_deep_learning?fbclid=IwAR2SMr5aDlktdfOsrdKcipnTruN8Uw GdrErzAjOEiPo7hr0rtYPUQ-mEN_c 9.https://arxiv.org/abs/1506.01497?context=cs.CV&fbclid=IwAR2BGZcwZK nJ6GgPKCafLeVHtepVpQWQGLqLhc20sIiTTOpRdNLzZ3o-yOQ 26 ... thể khác Keras hỗ trợ hai pre-trained model VGG VGG16 VGG19 4 .1. 1 Mạng VGG16: Hình 4 .1. 1 .1 Mơ hình mạng VGG16 16 Cấu trúc VGG16 bao gồm: - 13 lớp tích chập (Conv2 Conv3) có Kernel 3x3 - Sau layer... Hình 3.2 .10 Ảnh buồng chuối Hình 3.2 .11 Ảnh lột vỏ chuối Hình 3.2 .12 Ảnh trái chuối mặc đồ 10 Nho: Hình 3.2 .13 Ảnh nho màu khác Hình 3.2 .14 Ảnh nho mọc Hình 3.2 .15 Ảnh rượu nho Hình 3.2 .16 Ảnh... loss: 0. 016 8 - acc: 0.9947 - val_loss: 0.2538 VGG19 - val_acc: 0.94 91 - Thời gian chạy: 12 14 .1 giây 22 Epoch 50: - loss: 0.0083 - acc: 0.9980 - val_loss: 0 .15 91 Resnet50 - val_acc: 0.9 714 - Thời