Bối cảnh và vấn đề nghiên cứu

Trong bối cảnh của cuộc cách mạng công nghiệp lần thứ tư, Trí tuệ nhân tạo (AI) đã trở thành một trong những lĩnh vực khoa học máy tính trọng điểm, cho phép hệ thống máy tính mô phỏng các hoạt động nhận thức của con người như học hỏi, suy luận và giải quyết bài toán phức tạp. Tại Việt Nam, AI đang được định hướng phát triển mạnh mẽ và ứng dụng sâu rộng trong nhiều ngành kinh tế - xã hội như y tế, giáo dục, nông nghiệp, giao thông vận tải và thương mại điện tử. Một trong những phân ngành đang ghi nhận sự đóng góp rõ rệt của AI là động vật học (Animalia), cụ thể là công tác phân loại các loài và phân loài sinh học.

Động vật học nghiên cứu toàn diện về cấu trúc, phôi học, hành vi, sự phân bố cũng như tương tác sinh thái của các loài. Tuy nhiên, thách thức lớn phát sinh khi phân loại các nhóm động vật thuộc cùng một loài nhưng sở hữu nhiều phân nhánh chủng loại khác nhau do quá trình lai tạo chọn lọc lâu dài và biến dị di truyền. Loài chó (Canis lupus familiaris) là một ví dụ điển hình với hàng trăm giống loài mang đặc trưng ngoại hình đa dạng. Nhận diện thủ công các giống chó đòi hỏi kiến thức chuyên gia sâu rộng và tốn nhiều thời gian. Do đó, việc ứng dụng học máy (Machine Learning) và xử lý ảnh để tự động hóa bài toán nhận dạng giống chó từ hình ảnh kỹ thuật số là một nhu cầu thực tiễn cần thiết.

Đồ án chuyên ngành ngành Khoa học máy tính tại Trường Đại học Công nghiệp Hà Nội (thực hiện năm 2024 bởi nhóm sinh viên dưới sự hướng dẫn của TS. Nguyễn Mạnh Cường) đặt ra các mục tiêu và nhiệm vụ nghiên cứu cụ thể như sau:

  1. Khảo sát hiện trạng đặc điểm sinh học và phân loại các giống chó trên thế giới và tại Việt Nam, phát biểu bài toán nhận dạng giống chó dưới góc độ thị giác máy tính.
  2. Thu thập, xây dựng và tiền xử lý các tập dữ liệu ảnh mẫu phục vụ huấn luyện và kiểm thử.
  3. Nghiên cứu lý thuyết các kỹ thuật phân loại ảnh phổ biến (CNN, Random Forest, Naive Bayes, Transfer Learning, KNN, SVM) và đề xuất mô hình máy học phù hợp dựa trên thuật toán Support Vector Machine (SVM).
  4. Thực nghiệm huấn luyện mô hình phân lớp SVM trên môi trường điện toán đám mây, tối ưu hóa siêu tham số và đánh giá các chỉ số định lượng.
  5. Xây dựng một ứng dụng demo hoàn chỉnh (Client - Server) đóng vai trò như một trợ lý ảo hỗ trợ người dùng nhận diện giống chó qua giao diện web.

Đối tượng nghiên cứu của đề tài là 14 giống chó phổ biến được trích xuất từ các bộ dữ liệu ảnh màu RGB. Phạm vi nghiên cứu tập trung vào việc tiền xử lý ảnh (chuyển đổi thang độ xám, chuẩn hóa kích thước), trích xuất vector đặc trưng phẳng, áp dụng thuật toán SVM phân tầng kết hợp kỹ thuật học kết hợp (Ensemble Voting) và xây dựng hệ thống phần mềm thử nghiệm cục bộ kết nối backend API.


Cơ sở lý thuyết và phương pháp

Khung lý thuyết và mô hình tiếp cận

Đồ án xây dựng nền tảng lý thuyết dựa trên phân loại học động vật và các thuật toán học có giám sát (Supervised Learning) trong thị giác máy tính:

  • Đặc tính phân loại sinh học: Quá trình phân loại dựa trên các tiêu chuẩn hình thái (kích thước, cấu trúc cơ thể, màu lông, hành vi) được quy định bởi các tổ chức uy tín như Hiệp hội Chó nghiệp vụ Quốc tế (FCI - Fédération Cynologique Internationale) và Hiệp hội Chó Mỹ (AKC - American Kennel Club).

  • Mạng nơ-ron tích chập (CNN): Mô hình học sâu chuyên dụng cho dữ liệu dạng lưới (hình ảnh). CNN sử dụng các lớp tích chập (Convolutional Layer) với các bộ lọc (Kernels), tham số Stride, Padding để tạo Feature Map; kết hợp lớp gộp (Pooling Layer) giảm kích thước và lớp kết nối đầy đủ (Fully Connected Layer) cùng hàm kích hoạt phi tuyến ReLU ($f(x) = \max(0, x)$) và hàm phân phối xác suất Softmax.

  • Rừng ngẫu nhiên (Random Forest): Kỹ thuật học kết hợp (Ensemble Learning) dựa trên thuật toán lấy mẫu tái lặp (Bootstrapping / Bagging) để xây dựng nhiều cây quyết định (Decision Trees) độc lập, sử dụng cơ chế bỏ phiếu theo đa số (Majority Voting) nhằm giảm phương sai và hạn chế quá khớp (Overfitting), đánh giá qua mẫu ngoài túi (Out-of-bag - OOB).

  • Bộ phân loại Naive Bayes (NBC): Thuật toán xác suất dựa trên định lý Bayes với giả định ngây thơ rằng tất cả các thuộc tính đầu vào hoàn toàn độc lập có điều kiện:

    $$P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}$$

  • Học chuyển giao (Transfer Learning): Kỹ thuật tái sử dụng các mô hình đã được huấn luyện trước (Pre-trained Models) trên các tập dữ liệu quy mô lớn (như ImageNet) để trích xuất đặc trưng hoặc tinh chỉnh (Fine-tuning) cho tập dữ liệu mục tiêu có dung lượng nhỏ hơn.

  • Thuật toán K láng giềng gần nhất (KNN): Phương pháp phi tham số (Non-parametric) và học lười (Lazy Learning), phân loại mẫu mới dựa trên độ tương đồng khoảng cách với $k$ điểm láng giềng gần nhất trong không gian đặc trưng.

  • Mô hình vectơ hỗ trợ (SVM - Support Vector Machine): Mô hình học máy phân loại cốt lõi của đề tài. Mục tiêu của SVM là tìm kiếm một siêu phẳng (Hyperplane) phân chia tối ưu giữa các lớp dữ liệu sao cho khoảng cách lề (Margin) giữa siêu phẳng tới các điểm dữ liệu gần nhất (Support Vectors) của hai phía đạt giá trị cực đại. Đối với dữ liệu không phân tách tuyến tính, SVM sử dụng kỹ thuật hạt nhân (Kernel Trick) để ánh xạ không gian đầu vào sang không gian đặc trưng nhiều chiều hơn (ví dụ: biến đổi $z = x^2 + y^2$), sử dụng các hàm nhân như RBF (Radial Basis Function) hoặc Polynomial Kernel.

Phương pháp nghiên cứu thực nghiệm

  • Phương pháp thu thập và tiền xử lý dữ liệu: Thu thập hình ảnh từ nguồn mở trực tuyến và Kaggle; chuẩn hóa kích thước ảnh về $50 \times 50$ pixels, chuyển đổi từ ảnh màu RGB 3 kênh sang ảnh thang độ xám (Grayscale) 1 kênh bằng thư viện Scikit-image, sau đó làm phẳng ma trận (Flatten) thành vector đặc trưng 1 chiều.
  • Phương pháp tối ưu hóa và huấn luyện: Phân chia tập dữ liệu huấn luyện thành các nhóm nhỏ (tầng con), áp dụng kỹ thuật tìm kiếm lưới (GridSearchCV) để xác định siêu tham số tối ưu (hệ số phạt $C \in [0.1, 1]$, Kernel $\in {\text{'rbf'}, \text{'poly'}}$), kết hợp các mô hình thành phần thông qua bộ phân loại bỏ phiếu mềm (VotingClassifier với cơ chế voting='soft').
  • Phương pháp đánh giá định lượng: Sử dụng các chỉ số đo lường chuẩn mực trong phân loại đa lớp bao gồm Độ chính xác (Accuracy), Điểm F1 (F1-Score), Độ nhạy/Độ thu hồi (Recall) và Độ chuẩn xác (Precision) với trọng số trung bình (Weighted Average).

Nội dung chính theo từng chương

Chương 1: Khảo sát và phát biểu bài toán

Chương 1 hệ thống hóa cơ sở sinh học và thực tiễn của loài chó (Canis lupus familiaris), loài vật được thuần hóa từ sói cổ đại khoảng 15.000 năm trước. Tác giả trình bày các đặc tính biến dị hình thái rõ nét: trọng lượng cơ thể dao động từ 1 kg (Chihuahua) đến 90 kg (Saint Bernard), cấu trúc khung xương từ thon dài (Greyhound) đến cơ bắp (Bulldog), vòng đời trung bình 10–13 năm, chu kỳ mang thai 9 tuần. Chương này nêu bật 10 vai trò thiết thực của việc định danh giống chó:

  1. Phân bổ nhiệm vụ chuyên biệt (chó cảnh sát, cứu hộ, săn bắt, thú nuôi gia đình).
  2. Dự báo nguy cơ bệnh lý di truyền trong thú y.
  3. Duy trì và bảo tồn các nguồn gen quý hiếm.
  4. Hỗ trợ chương trình chọn giống và lai tạo nhân tạo.
  5. Chuẩn hóa tiêu chuẩn hình thái theo quy định FCI và AKC.
  6. Nghiên cứu khoa học về tập tính, tâm lý và di truyền học so sánh.
  7. Huấn luyện làm chó nghiệp vụ an ninh sân bay, tuần tra quân đội.
  8. Trợ giúp người khuyết tật (dẫn đường cho người khiếm thị, trợ thính).
  9. Tự động hóa công tác quản trị dữ liệu động vật học.
  10. Định lượng bài toán AI: Biến đổi hình ảnh đầu vào (dạng ma trận điểm ảnh) thành nhãn văn bản xác định tên giống chó tương ứng.

Chương 2: Các kỹ thuật giải quyết bài toán

Chương 2 phân tích chuyên sâu các mô hình phân loại hình ảnh. Tác giả tiến hành so sánh đối chiếu giữa hai phương pháp học kết hợp quan trọng là Bagging và Boosting:

Tiêu chí so sánh Bagging (Bootstrap Aggregating) Boosting
Cơ chế lấy mẫu Rút mẫu ngẫu nhiên có hoàn lại (tái lập) từ tập dữ liệu gốc Tạo tập con mới tập trung vào các mẫu bị phân loại sai bởi mô hình trước
Điều kiện áp dụng Phù hợp khi bộ phân loại không ổn định (phương sai cao) Phù hợp khi bộ phân loại ổn định, mô hình đơn giản (độ chệch cao)
Trọng số mô hình Mọi mô hình thành phần có trọng số đóng góp như nhau Trọng số mô hình được điều chỉnh theo hiệu suất thực tế
Mục tiêu tối ưu Giảm phương sai (Variance), không làm tăng độ chệch Giảm độ chệch (Bias) của mô hình
Tính độc lập Các mô hình được huấn luyện hoàn toàn song song, độc lập Các mô hình mới được xây dựng tuần tự, phụ thuộc vào mô hình trước

Sau khi phân tích ưu điểm tiết kiệm bộ nhớ, khả năng làm việc hiệu quả trong không gian nhiều chiều và tính linh hoạt thông qua Kernel Trick của SVM, tác giả đề xuất quy trình kết hợp: trích xuất đặc trưng hình ảnh qua tiền xử lý, huấn luyện các bộ phân loại SVM con trên từng phân nhóm dữ liệu và hợp nhất kết quả bằng kỹ thuật phân loại kết hợp (Ensemble Voting Classifier).

Chương 3: Thực nghiệm

Chương 3 trình bày toàn bộ quy trình thực nghiệm trên nền tảng Google Colaboratory (máy ảo Linux đám mây tích hợp GPU/TPU, Jupyter Notebook, kết nối Google Drive). Thực nghiệm sử dụng 2 bộ dữ liệu ảnh màu:

Tên bộ dữ liệu Số loại giống chó Tổng số mẫu ảnh Kích thước ảnh gốc (pixel) Mục đích sử dụng
Dog_Breed_Classification (Kaggle) 14 700 (50 ảnh/loại) $100 \times 100 \times 3$ Huấn luyện mô hình (Training set)
archive (Tự xây dựng) 14 115 $50 \times 50 \times 3$ Kiểm thử độc lập (Test set)

Quy trình triển khai mã nguồn bao gồm:

  • Nạp và xử lý ảnh: Sử dụng skimage.io.imread đọc ảnh, skimage.color.rgb2gray chuyển thành ảnh xám 1 chiều, skimage.transform.resize đưa về kích thước chuẩn $(50, 50)$, dùng flatten() biến đổi thành mảng số thực và đưa vào Pandas DataFrame.
  • Huấn luyện phân tầng và tối ưu: Chia tập dữ liệu thành các tầng con (subcategories), áp dụng GridSearchCV trên đối tượng svm.SVC(probability=True) để dò tìm tham số tối ưu $C$ và Kernel.
  • Hợp nhất mô hình: Sử dụng VotingClassifier từ sklearn.ensemble với tham số voting='soft' để tổng hợp xác suất dự đoán của toàn bộ các mô hình con.
  • Lưu trữ: Xuất mô hình hoàn chỉnh ra tệp trained_model_archive14444.pkl thông qua thư viện joblib.

Chương 4: Xây dựng sản phẩm demo

Chương 4 mô tả quá trình hiện thực hóa mô hình nghiên cứu thành sản phẩm phần mềm ứng dụng hoàn chỉnh:

  • Công nghệ giao diện (Frontend): Ứng dụng framework Vue.js (JavaScript), cấu trúc component gồm 3 phần tách biệt (<template>, <script>, <style>), sử dụng cơ chế Virtual DOM giúp tăng tốc độ hiển thị và tối ưu hóa trải nghiệm tương tác người dùng.
  • Công nghệ máy chủ (Backend): Sử dụng framework Flask (Python) với tính năng cấu hình gọn nhẹ, cung cấp kiến trúc RESTful API, tích hợp thư viện flask_cors nhằm xử lý cơ chế chia sẻ tài nguyên giữa các nguồn gốc khác nhau (Cross-Origin Resource Sharing - CORS).
  • Đặc tả Use Case: Hệ thống định nghĩa 2 ca sử dụng chính:
    • UC1 - Xem thông tin dữ liệu dự đoán: Cho phép người dùng tải dữ liệu ảnh kiểm thử lên giao diện và hiển thị thông tin hình ảnh cần nhận dạng.
    • UC2 - Xem kết quả dự đoán: Hệ thống kích hoạt API gửi dữ liệu ảnh về backend, mô hình SVM thực thi tính toán và trả về kết quả định danh giống chó trực quan trên giao diện web.

Thiết kế và triển khai

Hệ thống được tổ chức theo mô hình kiến trúc Client - Server tách biệt, đảm bảo tính mô-đun hóa cao:

[ Giao diện người dùng (Vue.js) ]
         HTTP POST / GET (JSON)
  [ Máy chủ API Backend (Flask) ]
[ Tiền xử lý ảnh ]  [ Mô hình SVM (Joblib .pkl) ]
(Grayscale & Resize)      (VotingClassifier)

Kiến trúc công nghệ và quy trình xử lý

  1. Tầng Client (Frontend - Vue.js):

    • Tiếp nhận tệp hình ảnh do người dùng tải lên từ trình duyệt.
    • Hiển thị ảnh xem trước (preview) và điều hướng các thao tác gửi yêu cầu phân tích.
    • Nhận phản hồi JSON từ máy chủ và kết xuất kết quả định danh giống chó lên khung giao diện kết quả.
  2. Tầng Server (Backend - Flask & Python):

    • Khởi tạo ứng dụng Flask, kích hoạt CORS(app).
    • Định nghĩa các API endpoints:
      • Endpoint /api/getall: Truy xuất và trả về danh sách các lớp giống chó cùng thông tin dữ liệu kiểm thử.
      • Endpoint /results: Tiếp nhận dữ liệu ảnh đầu vào, chuyển tiếp qua pipeline xử lý.
    • Pipeline tiền xử lý và suy luận:
      • Đọc chuỗi byte của ảnh thông qua PIL.Image và io.BytesIO.
      • Chuyển đổi định dạng sang ảnh xám (rgb2gray), chuẩn hóa kích thước về ma trận $50 \times 50$ và làm phẳng (flatten).
      • Tải mô hình đã nạp sẵn trong bộ nhớ thông qua joblib.load('model/Dog14_Kaggle.pkl').
      • Thực thi hàm model.predict() hoặc tính toán xác suất phân lớp để trả về nhãn giống chó có độ khớp cao nhất.

Kết quả và đóng góp

Kết quả định lượng

Mô hình phân loại giống chó sử dụng SVM kết hợp Ensemble Learning được đánh giá độc lập trên bộ dữ liệu kiểm thử archive (gồm 115 mẫu thuộc 14 giống chó), ghi nhận các chỉ số hiệu năng cụ thể trong bảng dưới đây:

Chỉ số đánh giá Giá trị thực nghiệm Tỷ lệ phần trăm tương ứng
Độ chính xác (Accuracy) 0.95147 95.15%
Điểm F1 (F1-Score) 0.95089 95.09%
Độ thu hồi (Recall) 0.95147 95.15%
Độ chuẩn xác (Precision) 0.95289 95.29%

Các kết quả định lượng cho thấy:

  • Tỷ lệ phân loại chính xác tổng thể đạt xấp xỉ 95.15%, chứng minh khả năng tổng quát hóa tốt của mô hình trên tập kiểm thử độc lập.
  • Chỉ số Precision đạt 95.29% và Recall đạt 95.15%, phản ánh sự cân bằng cao giữa khả năng phát hiện đúng các cá thể thuộc lớp dương và khả năng hạn chế tối đa các trường hợp nhận diện sai (False Positives).

Đóng góp của đề tài

  • Về mặt khoa học: Đồ án chứng minh tính khả thi và hiệu quả của việc ứng dụng các giải thuật học máy truyền thống (SVM kết hợp kỹ thuật phân tầng và Ensemble Voting) đối với bài toán nhận dạng hình ảnh động vật học. Phương pháp này mang lại hiệu suất cao mà không đòi hỏi tài nguyên phần cứng tính toán quá lớn như các mạng nơ-ron học sâu nhiều tầng.
  • Về mặt thực tiễn: Tác giả đã hoàn thiện một phần mềm hoàn chỉnh có khả năng hoạt động như một công cụ trợ lý ảo hỗ trợ người dùng nhận diện nhanh và chính xác 14 giống chó qua ảnh, tạo cơ sở cho việc triển khai các ứng dụng quản lý và chăm sóc thú cưng.

Hạn chế và hướng nghiên cứu tiếp

Dựa trên nội dung khảo sát và phạm vi thực nghiệm được trình bày trong báo cáo, đề tài tồn tại một số điểm giới hạn cùng các định hướng phát triển:

  • Hạn chế về quy mô dữ liệu: Tập dữ liệu huấn luyện mới chỉ bao gồm 700 hình ảnh và tập kiểm thử gồm 115 hình ảnh, giới hạn trong phạm vi 14 giống chó. Con số này còn khiêm tốn so với tổng số lượng giống chó thuần chủng và lai tạp phong phú trong thực tế.
  • Hạn chế về bước tiền xử lý: Việc chuyển đổi toàn bộ ảnh sang ảnh thang độ xám (Grayscale) và hạ kích thước ảnh xuống $50 \times 50$ pixels đã làm triệt tiêu thông tin màu sắc lông – một trong những đặc trưng nhận dạng quan trọng giữa các loài có cấu trúc cơ thể tương đồng.
  • Hướng phát triển tiếp theo:
    • Mở rộng quy mô tập dữ liệu cả về số lượng mẫu ảnh và số lượng lớp giống chó (bao gồm các giống chó bản địa và chó lai phức tạp).
    • Nghiên cứu ứng dụng các phương pháp trích xuất đặc trưng bậc cao (như HOG, SIFT) hoặc kết hợp kỹ thuật trích xuất đặc trưng từ mạng CNN tiền huấn luyện (Transfer Learning) trước khi phân lớp bằng SVM.
    • Tối ưu hóa backend và nâng cấp giao diện người dùng trên nền tảng ứng dụng di động để phục vụ nhận dạng trực tiếp qua camera thời gian thực.

Giá trị tham khảo

Báo cáo đồ án chuyên ngành này mang lại giá trị tham khảo thiết thực cho các đối tượng:

  • Sinh viên ngành Công nghệ thông tin, Khoa học máy tính và Trí tuệ nhân tạo: Tài liệu cung cấp ví dụ thực tế về quy trình thực hiện một đồ án học máy hoàn chỉnh, từ bước phát biểu bài toán, tiền xử lý ma trận ảnh bằng thư viện scikit-image, xây dựng pipeline huấn luyện với scikit-learn đến đóng gói mô hình bằng joblib.
  • Người phát triển ứng dụng web AI cơ bản: Phần thiết kế hệ thống tại Chương 4 là tài liệu tham khảo trực quan về cách tích hợp mô hình Machine Learning viết bằng Python (thông qua Flask RESTful API) với giao diện người dùng hiện đại viết bằng Vue.js.
  • Nhà nghiên cứu về thuật toán phân lớp truyền thống: Cung cấp mã nguồn mẫu chi tiết về việc ứng dụng GridSearchCV để tối ưu siêu tham số cho SVM kết hợp cùng VotingClassifier trong bài toán phân loại đa lớp.

Câu hỏi thường gặp

1. Đề tài sử dụng những bộ dữ liệu nào và kích thước ảnh được xử lý ra sao?
Đề tài sử dụng 2 bộ dữ liệu: bộ huấn luyện Dog_Breed_Classification tải từ Kaggle gồm 700 ảnh màu (kích thước gốc $100 \times 100 \times 3$) phân đều cho 14 giống chó (50 ảnh/giống); bộ kiểm thử archive gồm 115 ảnh do nhóm tự thu thập. Trong quá trình huấn luyện và kiểm thử, toàn bộ ảnh đều được chuyển đổi sang thang độ xám và chuẩn hóa kích thước về $50 \times 50 \times 3$ (sau đó làm phẳng thành vector 1D).

2. Tại sao tác giả lại áp dụng kỹ thuật GridSearchCV trong quá trình huấn luyện SVM?
GridSearchCV được sử dụng để tự động hóa quá trình tìm kiếm không gian siêu tham số tối ưu nhất cho mô hình svm.SVC(probability=True). Cụ thể, thuật toán tiến hành thử nghiệm lưới các giá trị hệ số phạt $C \in [0.1, 1]$ và các loại hàm nhân kernel $\in [\text{'rbf'}, \text{'poly'}]$ để chọn ra cấu hình cho hiệu năng phân lớp cao nhất trên từng tập dữ liệu con.

3. Cơ chế Ensemble Learning được triển khai như thế nào trong đồ án?
Tác giả chia danh sách thư mục huấn luyện thành các tầng con (subcategories), huấn luyện từng mô hình SVM riêng biệt cho từng tầng, sau đó sử dụng VotingClassifier từ thư viện sklearn.ensemble với cơ chế bỏ phiếu mềm (voting='soft') để tổng hợp phân phối xác suất dự đoán của toàn bộ các mô hình con trên toàn bộ tập dữ liệu x_train, y_train.

4. Ứng dụng demo giao tiếp giữa Frontend và Backend thông qua cơ chế nào?
Hệ thống sử dụng kiến trúc RESTful API. Phía Client xây dựng bằng Vue.js gửi các yêu cầu HTTP (chứa dữ liệu ảnh) đến máy chủ Backend xây dựng bằng Flask (Python). Máy chủ tiếp nhận ảnh qua các endpoint (như /results), chuyển đổi dữ liệu thành vector đặc trưng, nạp mô hình từ file .pkl qua joblib để dự đoán và trả lời về Client dưới định dạng dữ liệu chuẩn JSON.


Kết luận

Đồ án chuyên ngành "Phân loại giống chó bằng mô hình phân lớp SVM" của nhóm sinh viên Trường Đại học Công nghiệp Hà Nội đã giải quyết trọn vẹn bài toán nhận dạng 14 giống chó thông qua thị giác máy tính và học máy. Bằng việc kết hợp thuật toán Support Vector Machine phân tầng với cơ chế học kết hợp Voting Classifier, mô hình đạt độ chính xác thực nghiệm cao (Accuracy đạt 95.15% và Precision đạt 95.29% trên tập kiểm thử độc lập). Đồng thời, đề tài đã hiện thực hóa thành công sản phẩm demo tương tác hoàn chỉnh dựa trên nền tảng Flask và Vue.js, đóng góp một giải pháp ứng dụng thiết thực cho lĩnh vực tin học hóa động vật học.