3.2.2.2. Cấu trúc của service
Service được chia thành 9 components tương ứng với 9 đối tượng quản lý trong hệ thống quản lý nghiệp vụ chăn nuôi lợn trong trang trại bao gồm: Event, EventType, Farm, HealthStatus, Pen, Pig, Role, User, WeightType.
Danh sách các API trong service Event
Component Event: Bao gồm API lấy các sự kiện từ chuồng nuôi, tạo sự kiện cho chuồng nuôi, cập nhật thông tin sự kiện chuồng nuôi, xóa sự kiện chuồng nuôi.
Hình 3.72. Danh sách các API của component Event
Users
Component Users: ao gồm các API đăng nhập, đăng kí tài khoản hệ thống, active tài khoản, thay đổi mật khẩu và lấy thông tin User.
Hình 3.73. Danh sách các API của component Users
EventType
Component EventType: bao gồm API lấy các loại sự kiện chuồng nuôi, tạo loại sự kiện chuồng nuôi, cập nhật thông tin loại sự kiện chuồng nuôi.
Hình 3.74. Danh sách các API của component EventType
Pig
Component Pig: bao gồm API lấy danh sách lợn theo chuồng nuôi, theo trang trại, thêm lợn vào chuồng nuôi, tìm lợn theo mã AI đã gán, cập nhật và xóa thông tin lợn.
Hình 3.75. Danh sách các API của component Pig
Farm
Component Farm: bao gồm API lấy danh sách trang trại theo người dùng, tạo trang trại, lấy thông tin của mỗi trang trại, lấy tất cả thông tin lợn trong trang trại, cập nhật và xóa thông tin trang trại.
Hình 3.76. Danh sách các API của component Farm
HealthStatus
Component HealthStatus: bao gồm API tìm kiếm, tạo và cập nhật thông tin trạng thái sức khỏe.
Hình 3.77. Danh sách các API của component HealthStatus
Pen
Component Pen: bao gồm API lấy thông tin chuồng nuôi theo id, lấy thông tin các chuồng trong trang trại, tạo mới chuồng nuôi, cập nhật và xóa thông tin chuồng nuôi.
WeightType
Component WeightType: bao gồm API lấy thông tin loại cân nặng cho lợn, tạo loại cân nặng mới và update thông tin của loại cân nặng.
Hình 3.79. Danh sách các API của component WeightType
3.2.2.3. Triển khai
Service chạy môi trường develop trên hệ điều hành Window với chuỗi lệnh sau ở terminal:
1. yarn generate 2. yarn dev
Service chạy môi trường Production trên hệ điều hành Ubuntu với chuỗi lệnh sau:
1. yarn build
2. yarn start-production
3.2.3. ReactJS WebApp
WebApp của em được xây dựng bằng Framework ReactJS. Là nơi người dùng thao tác với hệ thống. Lý do em lựa chọn ReactJS vì những lợi ích mang lại cho người lập trình và hệ thống:
ReactJS giúp cho việc viết các đoạn code Javascript sẽ trở nên dễ dàng hơn vì nó sử dụng cú pháp đặc biệt là JSX. Thông qua JSX cho phép nhúng code HTML và Javascript.
ReactJS cho phép Developer phá vỡ nhwuxng cấu tạo UI phức tạp thành những component độc lập. Dev sẽ không phải lo lắng về tổng thể ứng dụng
web, giờ đây Developer dễ dành chi nhỏ các cấu trúc UI/UX phức tạp thành từng component đơn giản hơn.
Rất nhiều thư viện cung cấp sẵn cho ReactJS mẫu (Template) như: Table, Button, Grid, Tabs, Tags, Slide,.. như AntDesign. Giúp người lập trình tập trung vào sáng tạo logic và thiết kế mà không còn phải tốn công sức chỉnh sửa html và css thủ công.
3.2.3.1. Thư viện sử dụng
Thư viện Ý nghĩa
Material-UI
Thư viện cung cấp các component để có thể tạo ra trang web một cách nhanh chóng hơn, mà không phải đi css từng chút một.
antd Tương tự như Material-UI, Ant Design cung cấp nhiều component có sẵn với style hiện đại và dễ dàng tùy chỉnh. axios
Là một HTTP client được viết dựa trên Promises được dùng để hỗ trợ cho việc xây dựn các ứng dụng API từ đơn giản đến phức tạp cho js và Nodejs.
chart.js
Là một Framework của Javascript dựa trên HTML5 để tạo các biểu đồ và đồ thị động, có tính tương tác cao và hỗ trợ
responsive, tùy chỉnh hiển thị dữ liệu theo ý muốn.
date-fns Thư viện cung cấp bộ công cụ toàn diện nhưng đơn giản và nhất quán để xử lý ngày tháng trong js.
Formik
Giúp chúng ta giải quyết vấn đề phiền toái nhất trong form là: nhận giá trị ở trong và ngoài form state, validate giá trị và trả lại error messages, xử lý việc submit form.
node-sass Cung cấp khả năng sử dụng sass thay vì css. Sass là code viết css có cấu trúc, dễ đọc và dễ maintain hơn.
uuid Một thư viện giúp ReactJS sinh ra uuid (Universally Unique IDentifiers) sử dụng để định nghĩa ClientUuid khi gọi tới API Streaming Service.
Yup Formik dùng để quản lý form rất tốt. Cùng với Yup – package dùng để validate dữ liệu giúp người dùng giải quyết hầu hết vấn đề trong form.
3.2.3.2. Cấu trúc của web app
ReactJS WebApp chia thành các thư mục lớn: gồm thư mục src và các file config ở mức ngoài. Bên trong thư mục gồm 2 thư mục app, public và 1 file index.tsx (file bootstrap ứng dụng)
Thư mục/Files Ý nghĩa
src/app/api Chứa file thao tác với API của PigAI Service và Streaming Service.
src/app/components Chứa các file jsx, tsx xây dựng website theo từng component. src/app/constants Chứa các file lưu trữ biến cấu hình.
src/app/elements Chứa mã nguồn của các component dùng chung như Modal, Popup
src/app/routers Chứa các file router giữa các trang của website.
src/app/services Chứa các logic của các component bao gồm các hành động xử lý, lưu và lấy dữ liệu.
src/app/types Định nghĩa các kiểu dữ liệu.
src/app/utils Bao gồm các hàm dùng chung cho cả dự án. src/public/assets Chứa các file ảnh của website
src/public/css Chứa các file css và sass của website
Hình 3.80. Cấu trúc thư mục của ReactJS WebApp
3.2.3.3. Triển khai
ReactJS WebApp chạy môi trường develop trên hệ điều hành Window với chuỗi lệnh sau ở terminal:
3. npm start
Service chạy môi trường Production trên hệ điều hành Ubuntu với chuỗi lệnh sau:
3. npm build 4. npm serverStart
3.3. HOÀN THIỆN HỆ THỐNG
3.3.1. Kết quả ứng dụng mạng học sâu vào nhận dạng và theo dõi lợn
(a)
(c)
Hình 3.81. Streaming video từ các chuồng nuôi
Hình 3.23a cho thấy lợn ở góc trái chuồng không được nhận diện khi không thấy rõ thân người của lợn. Lợn ở hình 3.23.b cũng không được nhận diện khi vướng một vách ngăn. Còn lại đều phát hiện chính xác và không bị phát hiện nhầm. Điều này cho thấy trong một khung hình tỉ lệ phát hiện nhầm rất thấp, tỉ lệ không nhận ra lợn có tỉ lện cao hơn khoảng 7-10% khi lợn bị khuất tầm nhìn. Xuất phát từ yêu cầu gán nhãn đặt ra thì hình ảnh lợn bị che khuất 60% thì sẽ được bỏ qua. Nhìn chung kết quả nhận diện và theo dõi lợn có thể chấp nhận được cho ứng dụng thực tế.
3.3.2. Một vài hình ảnh khác của hệ thống
Hình 3.82. Thông tin chi tiết của lợn khi chọn xem trên video
CHƯƠNG 4. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
4.1. KẾT LUẬN
Với mục tiêu đã đề ra, hệ thống đã thực hiện được những vấn đề sau: Giám sát lợn qua ảnh, video sử dụng học máy.
Xây dựng hệ thống tự động nhận dạng lợn và theo dõi lợn ứng dụng mạng YOLOv4 và deepsort.
Ứng dụng WebApp thân thiện với người dùng.
Hệ thống ổn định, có khả năng chạy trong một thời gian dài, có thể hoạt động trên nhiều hệ điều hành khác nhau (Windows, Linux)
4.2. VẤN ĐỀ CÒN TỒN TẠI
Trong quá trình thực hiện đề tài những vấn đề còn tồn tại mà em chưa giải quyết được là:
Khả năng nhận diện lợn khá chính xác nhưng việc theo dõi và reId lợn khi lợn mất dạng một thời gian có sai số lớn.
Không thể phát hiện lợn bị che lấp quá 60%.
Đã kết nối được tới camera nhưng chưa có hình ảnh thực tế từ trang trại thật. Tốc độ truyền tải ảnh từ Streaming Service hiển thị cho người dùng còn chậm.
4.3. HƯỚNG PHÁT TRIỂN
Những hướng phát triển tiếp theo của đề tài:
Phát triển mô hình nhận diện hành vi của lợn, áp dụng trong tính toán thời gian hoạt động: ăn, nằm, đi, đứng,.. Lưu trữ thông tin theo thời gian, tính toán và cảnh bảo lợn có hiện tượng bất thường dựa vào thông tin hành vi của lợn.
Đề tài mang tính thực tế cao, có thể đưa vào thị trường nơi những người quản lý trang trại rất cần những công cụ thông minh phục vụ việc chăn nuôi và quản lý trang trại của mình.
DANH MỤC TÀI LIỆU THAM KHẢO
[1] Ren, Shaoqing, et al. "Faster r-cnn: Towards real-time object detection with region proposal networks." Advances in neural information processing systems. 2015
[2] Joseph Redmon; Santosh Divvala; Ross Girshick; Ali Farhadi, “You Only Look Once: Unified, Real-Time Object Detection,” arXiv:1506.02640, 2016
[3] Dai, Jifeng, et al. "R-fcn: Object detection via region-based fully convolutional networks." Advances in neural information processing systems. 2016
[4] Liu, Wei, et al. "Ssd: Single shot multibox detector." European conference on computer vision. Springer, Cham, 2016.
[5] Redmon, Joseph, and Ali Farhadi. "Yolov3: An incremental improvement." arXiv preprint arXiv:1804.02767 (2018).
[6] AlexeyAB – Yolov4/Darknet, github.com.
[7] A. Bochkovskiy, C.-Y. Wang, and H.-Y. M. Liao, “Yolov4: Optimal speed and accuracy of object detection,” 2020