Dự án này nhằm mục đích phát triển một hệ thống phân loại hình ảnh đa nhãn, sử dụng các kiến trúc học sâu phổ biến như AlexNet, VGG và ResNet để trích xuất đặc trưng của hình ảnh. Mục tiêu là phân loại một hình ảnh thành nhiều nhãn cùng một lúc.
Khác với phân loại nhãn đơn, trong bài toán này, mỗi hình ảnh sẽ có nhiều hơn 1 nhãn được gán cho nó. Trong những ứng dụng thực tế thường gặp như gắn thẻ hình ảnh, phát hiện đối tượng và truy xuất hình ảnh. Có thể nói phân loại đa nhãn cũng là một nhiệm vụ quan trọng trong thị giác máy tính.
Trong phạm vi dự án này, các mô hình được áp dụng là AlexNet, VGG, ResNet. Các mô hình này đã được sử dụng rộng rãi cho các tác vụ phân loại hình ảnh và đã cho thấy hiệu suất tuyệt vời. Và nó cũng được tinh chỉnh một chút để phù hợp cho việc huấn luyện trên tập dữ liệu của mình.
- AlexNet: được giới thiệu vào năm 2012, nó bao gồm 5 lớp tích chập và 3 lớp fully connected.
- VGG: được giới thiệu vào năm 2014, nó bao gồm 16 lớp tích chập và 3 lớp fully connected.
- ResNet: được giới thiệu vào năm 2015, dự án này dùng mô hình nhỏ là ResNet18 với 18 lớp tích chập và 1 lớp fully connected.
Dự án sử dụng bộ dữ liệu MIML, bao gồm 2000 hình ảnh được gán ít nhất 1 nhãn với mỗi hình. Các nhãn lần lượt sẽ là: desert, mountains, sea, sunset, trees
Code được tổ chức thành các thư mục sau:
models: chứa triển khai các mô hình (AlexNet, VGG16 và ResNet18)datasets: chứa triển khai tập dữ liệu (MIML)training: chứa triển khai vòng lặp đào tạoevaluation: chứa triển khai các số liệu đánh giáutils: Chứa các hàm tiện ích dùng chungpretrained_models: Chứa các mô hình đã train xong để sử dụng ngaytrain.py,test.py,inference.py: Các script chính để huấn luyện, đánh giá và chạy mô hình và suy luận ra nhãn của hình ảnh
| Model | batchsize | time(s)/epoch | accuracy | Loss |
|---|---|---|---|---|
| AlexNet | 32 | 11 | 93.3929% | 0.2032 |
| VGG16 | 2 | 247 | 94.0000% | 0.4254 |
| Resnet18 | 32 | 11 | 90.8929% | 0.2297 |
Do giới hạn sức mạnh GPU nên việc huấn luyện VGG16 sẽ khó khăn hơn các mô hình khác vì kích thước mô hình quá lớn dẫn đến phải dùng batchsize nhỏ kéo theo thời gian huấn luyện dài.
Dự án này đã phát triển một hệ thống phân loại hình ảnh đa nhãn sử dụng ba kiến trúc học sâu phổ biến: AlexNet, VGG16 và ResNet18. Kết quả cho thấy cả ba mô hình đều hoạt động tốt trên tập dữ liệu MIML, với VGG16 đạt được độ chính xác cao nhất. Dự án này cũng chứng minh tính hiệu quả của việc sử dụng các mô hình được đào tạo trước cho các tác vụ phân loại hình ảnh đa nhãn.
Có một số hướng cho công việc trong tương lai:
- Tăng cường dữ liệu: áp dụng các kỹ thuật tăng cường dữ liệu để tăng kích thước tập dữ liệu
- Điều chỉnh siêu tham số: điều chỉnh siêu tham số của các mô hình để cải thiện hiệu suất của chúng
- Tập hợp mô hình: kết hợp các dự đoán của nhiều mô hình để cải thiện hiệu suất tổng thể
- Áp dụng mô hình: sử dụng thêm nhiều mô hình để so sánh và đánh giá với các mô hình còn lại từ đó chọn ra mô hình có hiệu suất cao nhất.
Phạm vi bài này sử dụng card NVIDIA GTX 1050 để huấn luyện, các công cụ tương thích là CUDA 10.1 , CuDNN 10.1, và để sử dụng được hai công cụ trên, ta cần cài các phiên bản pytorch như sau:
- torch == 1.7.1+cu101
- torchvision == 0.8.2+cu101
- torchaudio == 0.7.2
- Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet classification with deep convolutional neural networks. In Advances in neural information processing systems (pp. 1097-1105).
- Simonyan, K., & Zisserman, A. (2014). Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556.
- He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 770-778).