- Nghiên cứu tổng quan về phương pháp nhận dạng đối tượng dùng các
c. Khởi chạy giao diện Raspberry trên điện thoạ
3.5. Xây dựng bộ mẫu rút trích đặc trưng Haar-like
Để có thể xây dựng bộ rút trích đặc trưng, đầu tiên cần có dữ liệu hình ảnh về sâu bệnh cụ thể ở đây em tập trung vào ruồi đục lá và cây thối. Em đã đi thực nghiệm và tiến hành thu thập hình ảnh ở các ruộng rau. Bằng thiết bị điện thoại Iphone 6s với camera có độ phân giải 12MP.
Sau khi có tập dữ liệu hình ảnh để xây dựng bộ rút trích đặc trưng cần xử lí trên máy vi tính. Sử dụng máy tính chạy hệ điều hành windows 10. Đã cài sẵn thư viện Opencv trên phần mềm Visual Studio. Các bước thực hiện chi tiết:
Bước 1: Sử dụng phần mềm Object Locator để chỉ định rõ vị trí hình chữ nhật chứa đối tượng cần tìm.
Hình 3.22. Khoanh vùng đối tượng
Các thông số x y width height của vùng chữ nhật được ghi vào file: file chỉ mục gồm tên file ảnh, số vùng chữ nhật trong ảnh và các toạ độ x y width height như ảnh dưới
Hình 3.23. Xây dựng bộ Haar-like
Bước 2: Tạo file vecto
Tìm chương trình opencv_createsamples.exe trong lib Opencv theo đường dẫn opencv300\build\bin\Release và truyền các tham số sau:
Hình 3.24. Tạo file vecto
-info: tập tin chỉ mục đã tạo
-img: khi bạn chỉ có 1 ảnh dương thì bỏ qua tham số -info: và truyền tên file ảnh vào đây
-vec: tập tin output cho bước tiếp theo
-bg: tập tin ảnh âm khi bạn chỉ có 1 ảnh dương -num: số lượng file ảnh dương
-bgcolor: khi bạn không chỉ định ảnh âm thì có thể chỉ định 1 màu để làm ảnh âm
-inv [-randinv][-bgthresh -maxidev -maxxangle -maxyangle –maxzangle]: các tham số để tạo thêm các ảnh ngẫu nhiên bằng cách xoay trong không gian 3 chiều
-show: hiện ảnh trong quá trình tạo mẫu -w: chiều rộng của mẫu được tạo -h: chiều cao của mẫu được tạo Ta có lệnh:
opencv_createsamples.exe -vec D:\saubenh.vec -info D:\plate_image\positive\location.txt -num 500 -w 40 -h 30
OpenCV sẽ tạo file D:\saubenh.vec có chứa 500 ảnh thumbnail, mỗi ảnh có kích thước 40 x 30 pixels.
Bước 3: Huấn luyện
Hình 3.25. Chạy chương trình trích xuất
Lấy file opencv_traincascade.exe truyền các tham số sau (các tham số quan trọng):
-data: thư mục rỗng dành để chứa các step và các file tạm trong quá trình huấn luyện, file xml thu được cũng nằm trong này
-vec: tập tin vec tạo ở bước 2
-bg: tập tin text chứa danh sách các file ảnh âm -numPos: số lượng ảnh dương
-numNeg: số lượng ảnh âm
-numStage: số lượng bước huấn luyện bạn muốn, càng lớn (14 → 20) thì thời gian huấn luyện càng lâu và kết quả càng chính xác
-w: chiều rộng của mẫu được tạo (ở bước 2 bao nhiêu thì ở đây cũng vậy) -h: chiều cao của mẫu được tạo (ở bước 2 bao nhiêu thì ở đây cũng vậy)
-minHitRate: tỉ lệ chính xác của ảnh dương
-maxFalseAlarmRate: tỉ lệ cho phép sai số tối đa của ảnh âm Ta dùng câu lệnh:
opencv_traincascade.exe -data D:\output -vec D:\saubenh.vec -bg D:\plate_image\negative\list.txt -numPos 500 -numNeg 200 -numStage 20 -minHitRate 0.995 -maxFalseAlarmRate 0.5 -w 40 -h 30
Chương trình sẽ tạo file D:\output\cascade.xml chứa các đặc trưng của sâu bệnh. minHitRate=0.995 nghĩa là phải đúng 995/1000 ảnh.