Thư viện sử dụng trong PigAI Service

Một phần của tài liệu ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU PHÁT TRIỂN HỆ THỐNG TỰ ĐỘNG NHẬN DIỆN VÀ GIÁM SÁT LỢN QUA CAMERA SỬ DỤNG YOLOv4 DeepSORT (Trang 107 - 119)

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

Một phần của tài liệu ĐỒ ÁN TỐT NGHIỆP NGHIÊN CỨU PHÁT TRIỂN HỆ THỐNG TỰ ĐỘNG NHẬN DIỆN VÀ GIÁM SÁT LỢN QUA CAMERA SỬ DỤNG YOLOv4 DeepSORT (Trang 107 - 119)

Tải bản đầy đủ (DOCX)

(119 trang)
w