CHƯƠNG 1 TỔNG QUAN 1. TÍNH CẤP THIẾT CỦA ĐỀ TÀI Hiện hiện Đồng bằng sông Cửu Long có trên 300.000 ha diện tích trồng cây ăn quả, chiếm gần 40% diện tích trồng cây ăn quả của cả nước. Hàng năm, cung cấp khoảng 4 triệu tấn quả cho thị trường cả trong nước và phục vụ xuất khẩu. Các tỉnh có diện tích trồng cây ăn quả lớn trong khu vực như: Tiền Giang, Vĩnh Long, Hậu Giang, Sóc Trăng, Bến Tre, Đồng Tháp… Tuy nhiên những năm gần đây thì sản lượng giảm sút rất nhiều do tác hại của côn trùng gây hại làm giảm số lượng.
Một số tỉnh điển hình bị ảnh hưởng có thể kể đến như: tỉnh Hậu Giang hiện có gần 31.000ha vườn cây ăn trái, trái cây ở Hậu Giang được nông dân trồng đa dạng như cam sành, quýt đường, xoài, vú sữa, măng cụt…, tuy nhiên, thời gian gần đây một số loại cây đã nhiễm bệnh, từ đó đã giảm năng suất, cây chết dần, khó khôi phục lại được như ban đầu. Tại xã Thiện Mỹ, huyện Trà Ôn, tỉnh Vĩnh Long, hiện toàn xã có hơn 500 ha vườn trồng cam, bưởi, quýt, măng cụt… cho thu nhập cao. Tuy nhiên, thời gian gần đây, trên các loại cây có múi đã xuất hiện bệnh vàng lá, gây thiệt hại cho nhiều diện tích vườn cây ăn trái ở địa phương này. Xã Thông Hòa, huyện Cầu Kè, tỉnh Trà Vinh có tới 1000 ha cây ăn trái, trong đó, cam sành chiếm hơn một nửa diện tích, do dịch bệnh xuất hiện nhiều, trong đó có bệnh vàng lá làm chết cây, khiến nhiều nhà vườn thua lỗ phải phá bỏ.
Còn tại huyện Lai Vung, tỉnh Đồng Tháp, địa phương chuyên canh quýt đường và quýt hồng cho hiệu quả kinh tế rất cao, giúp nhiều hộ vươn lên khá giả. Tuy nhiên, dịch bệnh hoành hành làm cho nông dân phải lo lắng. Nhất là từ đầu năm đến nay, hiện tượng vàng lá xuất hiện nhiều, khiến cây bị chết, giảm hiệu quả kinh tế rõ rệt. Với những trường hợp trên thì chúng ta có thể phần nào thấy được tác hại của côn trùng gây lại [1].
Với đề tài “Xây dựng ứng dụng nhận dạng côn cùng cho các thiết bị di động” tôi mong muốn có thể được ứng dụng trong nông nghiệp để phần nào có thể giảm tác hại của côn trùng gây ra. LÝ DO CHỌN ĐỀ TÀI Sâu bọ là một trong những vấn đề lớn trong lĩnh vực nông nghiệp. Tổ chức Nông lương (FAO) báo cáo rằng những loài gây hại này gây ra thiệt hại từ 20 đến 40% sản lượng cây trồng toàn cầu hàng năm [25]. Sự xâm nhập của sâu bệnh gây thiệt hại cho nền kinh tế toàn cầu khoảng 220 tỷ đô la.
Vì vậy, nông dân sử dụng rộng rãi các loại thuốc trừ sâu khác nhau để tăng cả chất lượng và tuổi thọ bảo quản của cây trồng. Nhưng việc sử dụng liên tục các loại thuốc trừ 1 sâu này dẫn đến ô nhiễm môi trường và tiềm ẩn các bệnh nguy cơ cao như ung thư, các bệnh về hô hấp và di truyền cho những người sử dụng sản phẩm có nhiều thuốc trừ sâu [24]. Do đó, các giải pháp kỹ thuật tiên tiến là rất cần thiết trong nông nghiệp để phát hiện sớm dịch hại cây trồng và tiết kiệm lượng thuốc trừ sâu tiêu thụ không mong muốn. Đề tài “Xây dựng ứng dụng nhận dạng côn trùng cho các thiết bị di động”.
đã được triển khai để khắc phục những vấn đề trên. MỤC TIÊU NGHIÊN CỨU - Nghiên cứu cách thức xây dựng ứng dụng mobile. - Nghiên cứu tổng quan về YOLO. Ứng dụng YOLO vào nhận diện đối tượng.
- Nghiên cứu về kiến trúc của ứng dụng. - Xây dựng ứng dụng nhận dạng côn trùng để có thể phát hiện côn trùng gây hại, đồng thời đưa ra những thông tin cần thiết cho người nông dân 1. PHẠM VI ĐỀ TÀI - Về lý thuyết: tìm hiểu về YOLO, hệ điều hành android, kỹ thuật transfer learning. - Về ứng dụng: xây dựng ứng dụng nhận diện côn trùng.
- Đối tượng là các loài côn trùng gây hại với các hình dáng, đặc điểm sinh học, phân bố và biện pháp phòng trừ. PHƯƠNG PHÁP NGHIÊN CỨU - Phương pháp tài liệu: Lý thuyết về nhận diện đối tượng, hiểu về YOLO và các phiên bán của YOLO, cách thức xây dựng một ứng dụng android, tìm hiểu về Transfer learning. - Phương pháp thực nghiệm: Xây dựng ứng dụng nhận dạng côn trùng. 2 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.
PHÁT HIỆN ĐỐI TƯỢNG 2. Khái niệm Nhận dạng đối tượng là một thuật ngữ chung để mô tả một tập hợp các nhiệm vụ thị giác máy tính có liên quan liên quan đến việc xác định các đối tượng [2]. Phân biệt 3 khái niệm object detection, image classification và object localization Để tránh nhầm lẫn về object detection [2] với các nhiệm vụ khác trong lĩnh vực thị giác máy tính như phận loại hình ảnh và định vị vật thể thì ta cần tìm hiểu về 2 nhiệm vụ trên: - Phân loại hình ảnh (image classification): có nhiệm vụ trong việc liên quan đến gán nhãn cho hình ảnh. - Định vị vật thể (object localization): có nhiệm vụ trong việc vẽ một hộp giới hạn (bounding box) xung quanh một hoặc nhiều đối tượng trong hình ảnh nhắm khoanh vùng đối tượng Phát hiện đối tượng là một nhiệm vụ khó khăn hơn và là sự kết hợp của hai nhiệm vụ trên (phân loại hình ảnh và định vị vật thể): vẽ một bounding box xung quanh từng đối tượng quan tâm và gán nhãn cho chúng.
Kết hợp hai nhiệm vụ trên được gọi là object recognition hoặc là object detection. Chúng ta cũng có thể phân biệt nhiệm vụ của phát hiện đối tượng (object detection) với phân loại hình ảnh (image classification) và định vị vật thể (object localization) thông qua input và output của chúng như: - Phân loại hình ảnh: dự đoán nhãn của đối tượng trong ảnh. + Input: một hình ảnh với một đối tượng + Output: nhãn lớp (một hoặc nhiều số nguyên ánh xạ đến nhãn lớp). - Định vị đối tượng: xác định vị trí hiện diện của các đối tượng và cho biết chi tiết của chúng bằng bounding box.
+ Input: một hình ảnh có một hoặc nhiều đối tượng, chẳng hạn như một bức ảnh. 3 + Output: một hoặc nhiều bounding box được xác định được xác định bởi tọa độ tâm, chiều cao và chiều rộng. - Phát hiện đối tượng: xác định vị trí hiện diện của các đối tượng trong bounding box và nhãn của các đối tượng. + Input: mô hình ảnh có một hoặc nhiều đối tượng, chẳng hạn như một bức ảnh + Output: một hoặc nhiều bounding box và nhãn cho mỗi bounding box.
Hình 1: Sơ đồ tổng hợp các tác vụ của computer vision 2. GIỚI THIỆU VỀ YOLO (YOU ONLY LOOK ONCE) 2.1 Mạng YOLO là gì? YOLO [4] [3] là một mô hình mạng CNN cho việc phát hiện, nhận dạng, phân loại đối tượng. YOLO được tạo ra từ việc kết hợp giữa các convolutional layers và connected layers. Trong đóp các convolutional layers sẽ trích xuất ra các feature của ảnh, còn fully connected layers sẽ dự đoán ra xác suất đó và tọa độ của đối tượng.
Về độ chính xác YOLO có thể không phải là thuật toán tốt nhất nhưng nó là thuật toán nhanh nhất. Thậm chí có thể nhanh hơn những thiết bị IOT như raspberry pi. Trước khi đến với kiến trúc của YOLO thì ta cần nắm một số khái niệm lý thuyết như: - Nguyên lý hoạt động của mạng nơ ron tính chập (Convolutional Neural Network: Đây là mạng nơ ron áp dụng các layer Convolutional kết hợp với các Maxpooling để giúp trích xuất đặc trưng của ảnh tốt hơn 4 - Bounding box: là khung hình bao quanh vật thể. - Anchor box là những khung hình có kích thước xác định trước, có tác dụng dự đoán bounding box.
- Feature map: là một khối output mà ta sẽ chia nó thành một lưới ô vuông và áp dụng tìm kiếm và phát hiện vật thể trên từng cell. - Non-max suppression: phương pháp giúp giảm thiểu nhiều bounding box overlap nhau về 1 bounding box có xác suất lớn nhất.2 Kiến trúc của YOLO Kiến trúc của YOLO [4][5] bao gồm: base network là các mạng convolution làm nhiệm vụ trích xuất đặc trưng, phía sau là những extra layer được áp dụng để phát hiện vật thể trên feature map của base network. Base network của YOLO sử dụng chủ yếu là các convolutional layer và các fully connected layer. Các kiến trúc của YOLO cũng khá đa dạng và có thể tùy biến thành các version cho nhiều input shape khác nhau.
Hình 2: Kiến trúc của YOLO Hình 3: Kiến trúc một output của YOLO 5 Thành phần Darknet Architecture được gọi là các based network tác dụng trích xuất đặc trưng. Output của base network là các feature map có kích thước 7x7x1024 sẽ được sử dụng làm input cho các Extra layers có tác dụng dự đoán nhãn và tọa độ bounding box của vật thể. YOLO hoạt động theo cơ chế detect vật thể trên từng vùng ảnh. Ảnh được chia thành SxS ô, hay còn gọi là cell.
Chia ô ở đây chỉ là tưởng tượng chia thôi chứ không phải là mình phải cắt ảnh ra hay phải thực hiện image-processing nào hết. Việc chia ảnh bản chất của nó là việc chia các output thành dạng matrix A kích thước SxS, nếu trong bức ảnh, tâm của vật thể nằm trong cell (i, j) thì output tượng ứng nó sẽ nằm trong A[i, j]. Luồng xử lý của YOLO như sau: - Convolution network tiến hàng trích xuất đặc trưng ảnh. - Extra layers (fully connected layers) phân tích, phát hiện vật thể.
Trả về output là matrix A có kích thước: Shape (A) = S * S * (5 * B + C) - Trong đó, B là bounding box, mõi bounding box gồm 5 số liệu (x, y, w, h, confidence score), confidence score xác suất tại ô đó có object hay không. Cuối cùng là C phần tử - đại diện cho phân bố xác suất về loại object, tức class distribution. Vì C phần tử này là một phần tử này một phân phối xác suất nên cần đảm bảo: =1 Như vậy YOLO tính toán tọa độ bounding box, xác xuất có xuất hiện vật thể, phân bố xác suất để phân loại vật thể, tất cả điều thực hiện trong 1 lần. Đó là lý do khiến cho YoLo nhanh hơn nhiều so với các 2-stage model, tạo nên lợi thế cho YoLo.3 Các phiên bản của YOLO 2.1 YOLOv1 YOLOv1[3] là version 1 của YOLO, nó sử dụng 24 lớp chập bao gồm lớp (1x1) gọi là Reduction layer (dùng để giảm kích thước ảnh), lớp chập (3x3) gọi là Convolution layer xen kẽ giữa 24 lớp là các lớp max pooling và kết thúc bằng 2 lớp full connected.
Kết quả là một ma trận 3 chiều có dạng 7x7x30.