Bối cảnh và vấn đề nghiên cứu
Theo báo cáo Hiện trạng Thủy sản và Nuôi trồng Thủy sản Thế giới năm 2022 (FAO, 2022), sản lượng động vật thủy sản toàn cầu năm 2020 đã tăng hơn 60% so với mức trung bình trong thập niên 1990, vượt xa tốc độ tăng trưởng dân số thế giới. Mức tiêu thụ thực phẩm thủy sản toàn cầu giai đoạn 1961–2019 ghi nhận mức tăng trưởng trung bình 3,0%/năm, gần gấp đôi tốc độ gia tăng dân số hàng năm (1,6%) trong cùng kỳ. Sự gia tăng nhu cầu tiêu thụ thủy hải sản bình quân đầu người dẫn đến nguy cơ khai thác quá mức (overfishing), gây cạn kiệt tài nguyên thủy sinh tại các lưu vực sông và biển. Dữ liệu từ Our World in Data (Hannah Ritchie và Max Roser) chỉ ra rằng tỷ lệ trữ lượng cá bị khai thác quá mức đã tăng hơn gấp đôi kể từ những năm 1980.
Vấn đề khai thác quá mức xuất phát từ các nguyên nhân chính sau:
- Thiếu kiến thức và thông tin về các quần thể cá.
- Khó khăn trong việc quản lý và kiểm soát các ngư trường do hạn chế về nguồn lực và công cụ theo dõi hoạt động đánh bắt.
- Phần lớn các vùng ngư trường chưa được bảo vệ nghiêm ngặt.
Việc thiếu hụt thông tin khiến ngư dân khai thác cả những cá thể cá chưa đạt kích cỡ cho phép hoặc đánh bắt nhầm các loài thủy hải sản quý hiếm cần được bảo tồn trong hệ sinh thái. Do đó, việc xây dựng một công cụ tự động nhận diện loài cá và cung cấp thông tin chi tiết (tên khoa học, kích thước, môi trường sống) là nhu cầu cấp thiết nhằm hỗ trợ kiểm soát hoạt động đánh bắt, bảo vệ tài nguyên và nâng cao năng suất tại các quốc gia đang phát triển như Việt Nam.
Nhiệm vụ và mục tiêu nghiên cứu của khóa luận được xác định cụ thể bao gồm:
- Nghiên cứu tổng quan về bài toán nhận diện đối tượng trong ảnh.
- Tìm hiểu các kiến trúc mô hình học sâu (Deep Learning) phục vụ bài toán nhận diện.
- Xây dựng mô hình học sâu và triển khai ứng dụng trên điện thoại thông minh chạy hệ điều hành Android.
- Đánh giá kết quả thực nghiệm và đề xuất định hướng phát triển trong tương lai.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng nghiên cứu: Nhận diện và phân loại hình ảnh các loài cá dựa trên dữ liệu ảnh kỹ thuật số (ảnh chụp từ máy ảnh hoặc ảnh quét sẵn có).
- Phạm vi dữ liệu và không gian: Nghiên cứu 12 loài cá khác nhau với hơn 1.000 mẫu ảnh cho mỗi loài; môi trường triển khai thực nghiệm là thiết bị di động Android kết nối hệ thống xử lý học sâu.
- Thách thức kỹ thuật: Phân loại trong môi trường thực tế đối mặt với độ phức tạp của hậu cảnh, độ đục của nước và sự lan truyền ánh sáng làm giảm chất lượng ảnh; đồng thời việc triển khai thuật toán học sâu phức tạp trên phần cứng hạn chế của điện thoại di động là thách thức lớn đối với khoa học dữ liệu.
Cơ sở lý thuyết và phương pháp
Khóa luận tiến hành tổng hợp cơ sở lý thuyết về mạng nơ-ron nhân tạo và thị giác máy tính, từ đó lựa chọn giải pháp học chuyển giao dựa trên kiến trúc tích chập sâu.
So sánh Mạng nơ-ron nhân tạo (ANN) và Mạng nơ-ron tích chập (CNN)
Mạng nơ-ron nhân tạo truyền thống (ANN/MLP) bao gồm lớp đầu vào (Input layer), các lớp ẩn (Hidden layers) và lớp đầu ra (Output layer). Khi giải quyết bài toán phân loại ảnh bằng ANN, ảnh 2 chiều bắt buộc phải chuyển đổi thành vector 1 chiều trước khi đưa vào huấn luyện. Quá trình này làm số lượng tham số cần tối ưu hóa tăng đột biến khi kích thước ảnh tăng lên. Ví dụ, với kích thước ảnh $224 \times 224$ pixel, lớp ẩn đầu tiên với 4 nơ-ron đã tiêu tốn khoảng 600.000 tham số, dẫn đến sự phụ thuộc nặng nề vào phần cứng và làm mất đi tính tương quan không gian giữa các điểm ảnh.
Ngược lại, Mạng nơ-ron tích chập (CNN) khắc phục hoàn toàn nhược điểm trên bằng cách tự động trích xuất các đặc trưng không gian thông qua các bộ lọc (filters/kernels) mà không cần xác định thủ công các đặc trưng hình học. Kiến trúc CNN gồm hai phần chính:
- Phần học đặc trưng (Feature Learning): Gồm các khối tích chập lặp lại, kết hợp giữa lớp tích chập (Convolutional layer), hàm kích hoạt phi tuyến (ReLU/Leaky ReLU) và lớp lấy mẫu giảm chiều (Pooling layer).
- Phần phân loại (Classification): Chuyển đổi dữ liệu đặc trưng thành dạng 1 chiều qua lớp làm phẳng (Flatten) và đưa vào các lớp kết nối đầy đủ (Fully Connected / Dense layer) cùng hàm Softmax ở ngõ ra.
| Tiêu chí so sánh |
Mạng nơ-ron nhân tạo (ANN) |
Mạng nơ-ron tích chập (CNN) |
| Dạng dữ liệu đầu vào |
Vector 1 chiều (1D) |
Ma trận/Tensor nhiều chiều (2D/3D) |
| Bảo toàn cấu trúc không gian |
Không bảo toàn (bị phẳng hóa) |
Bảo toàn cấu trúc không gian của điểm ảnh |
| Trích xuất đặc trưng |
Dựa trên dữ liệu thuộc tính đo đạc thủ công |
Tự động trích xuất qua các bộ lọc tích chập |
| Số lượng tham số |
Tăng rất nhanh theo kích thước ảnh |
Chia sẻ trọng số (Weight sharing), tiết kiệm tham số |
| Ứng dụng chủ đạo |
Dữ liệu bảng, quan hệ số tĩnh |
Thị giác máy tính, phân loại ảnh và video |
Các thành phần kỹ thuật cốt lõi trong CNN
- Lớp tích chập (Convolutional Layer): Thực hiện phép nhân từng phần tử giữa ma trận ảnh đầu vào và ma trận hạt nhân (Kernel/Filter) rồi tính tổng để tạo ra bản đồ đặc trưng (Feature Map). Phép toán tương quan chéo (Cross-Correlation) được áp dụng phổ biến trong cài đặt:
$$G[m,n] = (f * h)[m,n] = \sum_{j} \sum_{k} h[j,k] f[m+j, n+k]$$
Các kích thước hạt nhân thông dụng là $1 \times 1$, $2 \times 2$, $3 \times 3$, $4 \times 4$. Các kích thước lớn như $5 \times 5$ hay $11 \times 11$ (từng dùng trong AlexNet 2012) hiện ít được dùng do tiêu tốn thời gian và chi phí tính toán.
- Kỹ thuật đệm (Padding) và Bước trượt (Stride):
- Padding ($p$): Thêm các viền điểm ảnh (thường là $0$) xung quanh ma trận đầu vào nhằm giải quyết vấn đề co rút kích thước ảnh sau mỗi lần tích chập và giữ lại thông tin tại các góc, cạnh của ảnh. Kích thước đầu ra sau khi đệm được xác định theo công thức:
$$(n_h - m_h + 2p + 1) \times (n_w - m_w + 2p + 1)$$
- Stride ($s$): Số điểm ảnh mà hạt nhân dịch chuyển trên ma trận đầu vào theo chiều dọc ($s_h$) và chiều ngang ($s_w$), giúp giảm chiều không gian và tối ưu hóa tính toán khi mạng chỉ cần học các đặc trưng mức cao.
- Hàm kích hoạt (Activation Functions): Bổ sung tính phi tuyến giúp mạng nơ-ron giải quyết các bài toán phức tạp:
- ReLU ($f(x) = \max(0, x)$): Giữ nguyên giá trị dương và gán giá trị âm về $0$. Nhược điểm là hiện tượng "Dying ReLU" khi nơ-ron luôn trả về giá trị $0$ và không thể cập nhật trọng số.
- Leaky ReLU ($f(x) = \max(0.01x, x)$): Khắc phục hiện tượng Dying ReLU bằng cách gán độ dốc nhỏ phi số không ($0.01$) cho vùng giá trị âm.
- Lớp giảm mẫu (Pooling/Sub-sampling Layer): Giảm kích thước không gian của bản đồ đặc trưng, giảm lượng tham số và chống hiện tượng quá khớp (Overfitting). Hai kỹ thuật chính là Max Pooling (lấy giá trị lớn nhất trong vùng hạt nhân, thường dùng cỡ $2 \times 2$, bước trượt $2$ để làm nổi bật các cạnh và đặc trưng chính) và Average Pooling (lấy giá trị trung bình tạo bản đồ đặc trưng mượt hơn).
- Kỹ thuật điều hòa Dropout: Vô hiệu hóa ngẫu nhiên một tỷ lệ nơ-ron trong các lớp ẩn ở mỗi lượt huấn luyện, ngăn chặn việc mô hình học thuộc lòng các điểm dữ liệu nhiễu.
Học chuyển giao (Transfer Learning) và Kiến trúc mạng ResNet
Nhằm giải quyết khó khăn khi huấn luyện các mô hình rất sâu từ đầu (tiêu tốn tài nguyên và dễ gặp hiện tượng suy thoái độ chính xác khi tăng độ sâu), khóa luận áp dụng phương pháp học chuyển giao (Transfer Learning) và tinh chỉnh mô hình (Fine-tuning) từ mô hình huấn luyện sẵn trên tập dữ liệu ImageNet (với hơn 14 triệu ảnh).
Kiến trúc mạng phần dư sâu (Deep Residual Network - ResNet), được phát triển bởi nhóm nghiên cứu Microsoft năm 2015, giải quyết hiện tượng suy thoái (degradation problem) bằng các kết nối tắt (shortcut/skip connections) thực hiện phép ánh xạ đồng nhất (Identity Mapping):
$$y = F(x, {W_i}) + x$$
Kết nối tắt cộng trực tiếp đầu vào $x$ vào đầu ra của khối tích chập, giúp triệt tiêu hiện tượng đạo hàm triệt tiêu (vanishing gradient) và cho phép mô hình huấn luyện hiệu quả ở độ sâu hàng trăm lớp. Tác giả đối sánh giữa hai biến thể ResNet-50 và ResNet-101 dựa trên kết quả kiểm thử chuẩn hóa trên ImageNet-1K:
| Mô hình |
Cấu hình |
Số lượng tham số |
Độ phức tạp tính toán (FLOPs) |
Lỗi Top-1 (Top-1 Error) |
| ResNet-50 |
$1 \times 64\text{d}$ |
$\sim 25\text{ triệu}$ |
$\sim 4,1\text{ tỷ FLOPs}$ |
$23,2%$ |
| ResNet-101 |
$1 \times 64\text{d}$ |
$\sim 44\text{ triệu}$ |
$\sim 7,8\text{ tỷ FLOPs}$ |
Thấp hơn ResNet-50 |
Khóa luận lựa chọn mô hình ResNet-101 làm mạng nòng cốt, thực hiện đóng băng các khối trích xuất đặc trưng cơ sở và thay thế các lớp phân loại cuối bằng các lớp Dense, Dropout và Softmax mới phù hợp với 12 nhãn loài cá cần phân loại.
Nguồn dữ liệu và Tiền xử lý
Dữ liệu hình ảnh được thu thập và tổng hợp từ hai nguồn công khai:
- A Large-Scale Fish Dataset (Kaggle, tác giả O. Ulucan và M. Turkan - Đại học Kinh tế Izmir, Thổ Nhĩ Kỳ).
- Fish-Pak: Fish Species Dataset from Pakistan for Visual Features Based Classification (Mendeley Data, tác giả Syed Zakir Hussain Shah cùng cộng sự - gồm 915 ảnh độ phân giải cao chụp bằng máy ảnh Canon EOS 1300D tại 3 địa điểm: Head Qadirabad, Head Marala và sông Chenab).
Tổng dung lượng bộ dữ liệu nghiên cứu đạt hơn 6 GB, bao gồm 12 loài cá với hơn 1.000 mẫu ảnh chất lượng cao cho mỗi loài, được chụp từ nhiều góc độ khác nhau. Dữ liệu điểm ảnh (Pixel values từ 0 đến 255) được chuẩn hóa về đoạn $[0, 1]$ bằng cách chia cho 255 để tăng tốc độ tính toán ma trận. Bộ dữ liệu sau đó được phân chia thành các tập huấn luyện (Train), kiểm định (Validation) và kiểm thử (Test).
Thiết kế và triển khai
Hệ thống được thiết kế theo kiến trúc Client - Server kết hợp thực thi mô hình tối ưu trên thiết bị di động Android:
[Người dùng / Ứng dụng Android]
[Máy chủ xử lý / Mô hình Deep Learning]
[Phản hồi kết quả về Ứng dụng Android]
Kiến trúc công nghệ và Tối ưu hóa
- Nền tảng Học sâu: Sử dụng framework Keras / TensorFlow để xây dựng, huấn luyện và tinh chỉnh mô hình ResNet-101.
- Tối ưu hóa mô hình di động: Mô hình sau khi huấn luyện được chuyển đổi từ định dạng TensorFlow Model sang định dạng nhẹ TensorFlow Lite (TFLite) nhằm tối ưu bộ nhớ và thời gian suy luận.
- Giao tiếp mạng: Xây dựng hệ thống RESTful API cho phép ứng dụng di động gửi dữ liệu hình ảnh lên hệ thống và nhận kết quả phân loại; trên Android sử dụng thư viện Retrofit để xử lý các luồng kết nối HTTP/HTTPS bất đồng bộ.
Giao diện và Chức năng ứng dụng di động
Ứng dụng di động cung cấp giao diện trực quan với các chức năng chính:
- Màn hình chính (Main screen): Điều hướng người dùng đến chức năng nhận diện.
- Tùy chọn nhập ảnh (Two options for importing image): Cho phép người dùng linh hoạt lựa chọn chụp ảnh trực tiếp qua máy ảnh (Camera) hoặc tải ảnh có sẵn từ bộ sưu tập (Gallery).
- Màn hình hiển thị kết quả (Scan Result): Xuất nhãn loài cá dự đoán kèm theo các trường thông tin mô tả chi tiết như tên khoa học, đặc điểm kích thước và môi trường sống đặc trưng.
Nội dung chính theo từng chương
Chapter 1: Overview
Chương 1 thiết lập bài toán nghiên cứu dựa trên các số liệu thống kê của FAO (2022) về tình trạng gia tăng tiêu thụ thủy hải sản và thực trạng khai thác quá mức. Tác giả chỉ ra các nguyên nhân chính dẫn đến việc cạn kiệt nguồn lợi thủy sản, bao gồm sự thiếu hụt kiến thức phân loại loài và hạn chế trong công tác quản lý. Chương này xác định rõ mục tiêu, phạm vi nghiên cứu, các thách thức khi nhận diện cá trong điều kiện ảnh môi trường tự nhiên và giới hạn phần cứng di động, đồng thời trình bày cấu trúc tổng thể 5 chương của khóa luận.
Chapter 2: Methods
Chương 2 trình bày toàn diện cơ sở toán học và lý thuyết của mạng nơ-ron nhân tạo (ANN) và mạng nơ-ron tích chập (CNN). Nội dung đi sâu vào cơ chế hoạt động của từng lớp trong CNN: phép toán tích chập, ma trận hạt nhân, kỹ thuật đệm (Padding), bước trượt (Stride), các hàm kích hoạt (ReLU, Leaky ReLU giải quyết lỗi Dying ReLU), các dạng Pooling (Max Pooling, Average Pooling), lớp làm phẳng và Dropout. Tác giả phân tích chi tiết cơ chế giải quyết hiện tượng suy thoái của mạng phần dư ResNet thông qua khối residual block, đối sánh giữa ResNet-50 và ResNet-101 trên tập ImageNet-1K, quy trình học chuyển giao (Transfer Learning) và tinh chỉnh mô hình (Fine-tuning). Cuối chương mô tả chi tiết quy trình chuẩn bị dữ liệu từ Kaggle và Mendeley Data với dung lượng hơn 6 GB gồm 12 loài cá.
Chapter 3: Android Application
Chương 3 tập trung vào khía cạnh kỹ thuật phần mềm và phát triển ứng dụng di động trên nền tảng Android. Tác giả trình bày kiến trúc tích hợp hệ thống, quy trình chuyển đổi mô hình từ TensorFlow sang TensorFlow Lite (TFLite), thiết kế giao diện người dùng và triển khai thư viện Retrofit để kết nối với RESTful API của dự án.
Chapter 4: Evaluation
Chương 4 công bố kết quả thực nghiệm huấn luyện và đánh giá mô hình học sâu. Mô hình ResNet-101 sau khi tinh chỉnh đạt độ chính xác kiểm định (Validation Accuracy) là 89,13%. Chương này cũng trình bày chi tiết giao diện vận hành thực tế của ứng dụng Android qua các màn hình quét ảnh từ camera và thư viện, đồng thời thảo luận về các vấn đề kỹ thuật phát sinh trong quá trình thử nghiệm.
Chapter 5: Conclusion
Chương 5 tổng kết lại toàn bộ kết quả nghiên cứu lý thuyết về học sâu, thị giác máy tính và quy trình phân loại ảnh loài cá. Tác giả đánh giá mức độ hoàn thành mục tiêu đề ra và vạch ra các định hướng nghiên cứu tiếp theo nhằm nâng cao chất lượng nhận diện và mở rộng quy mô ứng dụng.
Kết quả và đóng góp
Kết quả nghiên cứu và thực nghiệm
- Độ chính xác phân loại: Mô hình ResNet-101 áp dụng học chuyển giao đạt độ chính xác kiểm định là 89,13% trên tập dữ liệu 12 loài cá.
- Sản phẩm phần mềm hoàn chỉnh: Xây dựng thành công ứng dụng di động Android cho phép người dùng nhận diện loài cá tự động thông qua hai phương thức nhập ảnh (Camera và Gallery), tích hợp giao tiếp RESTful API qua Retrofit và tối ưu hóa mô hình qua TFLite.
- Tập dữ liệu chuẩn hóa: Tổng hợp và tiền xử lý bộ dữ liệu ảnh đa dạng với dung lượng hơn 6 GB, gồm hơn 1.000 mẫu ảnh/loài cho 12 loài cá từ các nguồn Kaggle và Mendeley Data.
Đóng góp thực tiễn
- Cung cấp giải pháp công nghệ hỗ trợ ngư dân, các tổ chức quản lý và cơ quan chính quyền dễ dàng tra cứu, nhận diện chính xác các loài cá, góp phần hạn chế tình trạng đánh bắt nhầm các loài quý hiếm hoặc cá chưa đạt kích thước cho phép.
- Chứng minh tính khả thi của việc triển khai các mạng nơ-ron tích chập sâu (ResNet-101) vào các ứng dụng thực tế trên thiết bị di động phục vụ giám sát môi trường và nông nghiệp thông minh tại Việt Nam.
Hạn chế và hướng nghiên cứu tiếp
Khóa luận ghi nhận một số hạn chế và đề xuất các hướng phát triển trong tương lai:
- Hạn chế: Độ chính xác của mô hình học sâu bị ảnh hưởng khi chất lượng ảnh đầu vào chụp trong môi trường tự nhiên gặp phải các điều kiện bất lợi như độ đục của nước, hậu cảnh phức tạp và sự lan truyền ánh sáng không ổn định. Bên cạnh đó, năng lực tính toán hạn chế của phần cứng điện thoại di động vẫn là rào cản khi xử lý các thuật toán học máy phức tạp.
- Hướng phát triển tiếp theo:
- Mở rộng tập dữ liệu huấn luyện để bao quát thêm nhiều loài cá bản địa và các góc chụp đa dạng hơn.
- Cải thiện thuật toán tiền xử lý ảnh nhằm tăng cường khả năng chống nhiễu trong điều kiện môi trường nước đục hoặc thiếu sáng.
- Tiếp tục tối ưu hóa kiến trúc mô hình học sâu để tăng tốc độ suy luận và giảm tiêu thụ tài nguyên phần cứng trên thiết bị di động.
Giá trị tham khảo
Khóa luận là tài liệu tham khảo chuyên môn phù hợp cho:
- Sinh viên và nghiên cứu sinh các ngành Kỹ thuật Hệ thống Thông tin, Công nghệ Thông tin, Khoa học Máy tính và Khoa học Dữ liệu quan tâm đến bài toán phân loại ảnh và ứng dụng học sâu (Deep Learning/CNN).
- Lập trình viên ứng dụng di động cần tài liệu tham khảo thực tế về việc chuyển đổi mô hình TensorFlow sang TensorFlow Lite, xây dựng RESTful API và tích hợp thư viện Retrofit trên Android.
- Các nhà nghiên cứu trong lĩnh vực quản lý thủy sản và nông nghiệp thông minh đang tìm kiếm giải pháp nhận diện sinh vật tự động từ ảnh kỹ thuật số.
Câu hỏi thường gặp
1. Khóa luận sử dụng kiến trúc mô hình học sâu nào làm nòng cốt và độ chính xác đạt được là bao nhiêu?
Khóa luận sử dụng kiến trúc mạng phần dư ResNet-101 (gồm 101 lớp sâu) kết hợp phương pháp học chuyển giao (Transfer Learning) từ tập dữ liệu ImageNet. Độ chính xác kiểm định (Validation Accuracy) đạt được sau quá trình huấn luyện là 89,13%.
2. Bộ dữ liệu huấn luyện nhận diện cá được thu thập từ những nguồn nào và quy mô ra sao?
Dữ liệu có tổng dung lượng hơn 6 GB, được tổng hợp từ tập dữ liệu "A Large-Scale Fish Dataset" (Kaggle) của O. Ulucan và tập dữ liệu "Fish-Pak" (Mendeley Data) của Syed Zakir Hussain Shah cùng cộng sự. Bộ dữ liệu bao gồm 12 loài cá với hơn 1.000 mẫu ảnh chất lượng cao cho mỗi loài, được chụp từ nhiều góc độ khác nhau.
3. Vì sao tác giả lựa chọn CNN thay vì ANN truyền thống cho bài toán phân loại ảnh cá?
ANN yêu cầu chuyển đổi ảnh 2D thành vector 1D, làm mất cấu trúc không gian và khiến số lượng tham số tăng vọt (ảnh $224 \times 224$ với 4 nơ-ron lớp ẩn tốn khoảng 600.000 tham số). Trong khi đó, CNN tự động trích xuất các đặc trưng không gian thông qua các bộ lọc tích chập, chia sẻ trọng số và giảm thiểu đáng kể số lượng tham số cần huấn luyện.
4. Ứng dụng Android được kết nối và xử lý như thế nào để nhận diện ảnh?
Ứng dụng Android cung cấp hai tùy chọn nhập ảnh (chụp từ Camera hoặc chọn từ Gallery), sau đó giao tiếp với hệ thống máy chủ thông qua RESTful API sử dụng thư viện Retrofit. Mô hình học sâu cũng được tối ưu hóa thông qua việc chuyển đổi từ TensorFlow Model sang định dạng TensorFlow Lite (TFLite) để hỗ trợ vận hành hiệu quả trên thiết bị di động.
Kết luận
Khóa luận tốt nghiệp của tác giả Phi Long Nguyen đã nghiên cứu và triển khai thành công giải pháp nhận diện 12 loài cá tự động bằng mô hình tích chập sâu ResNet-101 với độ chính xác kiểm định đạt 89,13%. Đề tài đã hoàn thiện quy trình từ thu thập, chuẩn hóa hơn 6 GB dữ liệu ảnh, ứng dụng học chuyển giao đến việc đóng gói và triển khai ứng dụng thực tế trên hệ điều hành Android. Kết quả nghiên cứu mang lại giá trị ứng dụng thiết thực cho công tác kiểm soát hoạt động khai thác thủy sản và là tài liệu tham khảo hoàn chỉnh về quy trình tích hợp mô hình học sâu lên nền tảng di động.