Trước sự phát triển của khoa học và công nghệ, học máy và thị giác máy tính được xem là một ứng dụng cụ thể thuộc lĩnh vực trí tuệ nhân tạo (AI) và mạng không gian ảo – đã góp phần xây dụng nên một kỷ nguyên phát triển của khoa học hiện đại, giúp máy tính có khả năng quan sát thu thập dữ liệu sau đó tiến hành xử lý như con người, từ đó cải thiện chính bản thân chúng dựa trên dữ liệu mẫu (training data) hoặc dựa vào kinh nghiệm (những gì đã được học). Dưới sự bùng nổ của các ngành khoa học và công nghệ, nó đã được ứng dụng rộng rãi để giải quyết các vấn đề trong thực tiễn. Trong thời đại mà trí tuệ nhân tạo phát triển mạnh mẽ, khả năng phân loại nhận dạng và nguồn gốc của sản phẩm đóng một vai trò quan trọng trong việc đảm bảo tính xác thực và chất lượng của sản phẩm. Đồ án này tập trung vào việc nhận dạng chính xác giống chó qua hình ảnh bằng cách sử dụng mạng nơron tích chập (CNN) với mô hình VGG16 để trích xuất đặc trưng từ hình ảnh, từ đó phân loại chúng vào các nhãn tương ứng. Nhóm chúng em đã lựa chọn đề tài này vì nó đặt ra một thách thức trong việc kết hợp giữa học máy và thị giác máy tính để xây dựng một hệ thống nhận dạng có khả năng phân biệt giữa các giống chó khác nhau
PHÁT BIỂU BÀI TOÁN
Tổng quan về học máy và bài toán nhận dạng
1.1.1 Tổng quan về học máy
Học máy, một nhánh của trí tuệ nhân tạo, cho phép máy tính tự động học hỏi và cải thiện hiệu suất mà không cần lập trình cụ thể cho từng nhiệm vụ.
Học máy thường được chia thành hai loại chính là học máy có giám sát và học máy không giám sát:
Trong học máy có giám sát, máy tính nhận dữ liệu huấn luyện kèm theo nhãn tương ứng để học cách dự đoán nhãn cho dữ liệu mới Phương pháp này được ứng dụng rộng rãi trong việc đào tạo mô hình nhận dạng chữ viết tay, phân loại hình ảnh và chẩn đoán y khoa.
Trong học máy không giám sát, máy tính học từ dữ liệu không có nhãn, giúp phát hiện mẫu và phân nhóm Phương pháp này thường được ứng dụng trong việc phân nhóm khách hàng, phát hiện gian lận và phân tích thị trường.
Học máy có nhiều ứng dụng trong thực tế, bao gồm:
- Phân loại: Phân loại là quá trình gán nhãn cho các dữ liệu Học máy được sử dụng để phân loại các sản phẩm, khách hàng, email, v.v
- Kết nối: Kết nối là quá trình phân nhóm các dữ liệu Học máy được sử dụng để kết nối các khách hàng, sản phẩm, v.v
Dự đoán là quá trình ước lượng giá trị của một biến trong tương lai, trong đó học máy đóng vai trò quan trọng Công nghệ này được áp dụng rộng rãi để dự đoán giá cổ phiếu, thời tiết và nhiều lĩnh vực khác.
Tìm kiếm là quá trình khám phá thông tin trong một tập dữ liệu lớn, và học máy đóng vai trò quan trọng trong việc nâng cao hiệu quả của các hệ thống tìm kiếm.
Học máy đang phát triển nhanh chóng và ngày càng được ứng dụng rộng rãi trong nhiều lĩnh vực của đời sống nhờ vào sự tiến bộ của công nghệ.
1.1.2 Bài toán nhận dạng trong học máy
Mục tiêu chính của bài toán nhận dạng thông thường sẽ là:
- Xác định và phân loại đối tượng hoặc thông tin từ dữ liệu đầu vào
- Đối với ảnh, đối tượng phân loại có thể bao gồm việc nhận diện khuôn mặt, phân loại đối tượng, hoặc đánh giá tình trạng của một hình ảnh
Bài toán nhận dạng văn bản bao gồm việc hiểu và phân loại các đoạn văn, từ việc nhận diện từ ngữ cho đến dự đoán ý nghĩa của câu văn.
Trong học máy, có nhiều phương pháp nhận dạng đa dạng, bao gồm các mô hình học sâu như Mạng Nơ-ron Tích chập (CNN) cho xử lý ảnh và Mạng Nơ-ron Tái diễn (RNN) cho xử lý ngôn ngữ tự nhiên Một chiến lược quan trọng khác là Học chuyển giao (Transfer Learning), cho phép sử dụng mô hình đã được huấn luyện trên tập dữ liệu lớn để áp dụng cho các bài toán cụ thể khác.
Nhận dạng không phải lúc nào cũng đơn giản, vì nó gặp phải nhiều thách thức như biến đổi ánh sáng, che mờ và độ nhiễu trong dữ liệu Để đảm bảo độ chính xác và ổn định trong môi trường thực tế, các mô hình học máy cần có sự phức tạp và linh hoạt.
Bài toán nhận dạng giống chó qua hình ảnh
1.2.1 Lý do lựa chọn đề tài
Trong lĩnh vực chăn nuôi, chó đóng vai trò quan trọng và chiếm tỉ trọng đáng kể Ngày nay, chó không chỉ được nuôi để làm thú cưng mà còn mang lại nhiều giá trị khác cho con người.
Nuôi thú cưng không chỉ là sở thích mà còn thể hiện phong cách cá nhân của chủ nhân Tuy nhiên, một thách thức lớn đối với người nuôi là xác định tính xác thực của giống chó và nguồn gốc của chúng Việc phân biệt chó thật và giả đòi hỏi kiến thức sâu rộng và khả năng phân tích tinh tế, điều này thường khó khăn cho nhiều người May mắn thay, nhờ vào sự phát triển của công nghệ học máy và thị giác máy tính, chúng ta có thể ứng dụng các công nghệ này để cải thiện quy trình nhận dạng và đảm bảo chất lượng giống chó.
Hiện nay, việc xác định nguồn gốc giống chó qua hình ảnh vẫn gặp nhiều khó khăn Các phương pháp truyền thống chưa đạt được độ chính xác và hiệu suất mong muốn Do đó, cần thiết phải phát triển một hệ thống nhận dạng đáng tin cậy với mục tiêu nâng cao độ chính xác.
1.2.2 Giới hạn và phạm vi nghiên cứu Đồ án nghiên cứu này, dù có tiềm năng lớn, nhưng cũng có một số giới hạn về phạm vi và các khía cạnh không được xử lý trong đề tài Chúng em muốn thể hiện sự minh bạch và xác định rõ ràng về những hạn chế này
Đồ án này tập trung vào việc nhận dạng nguồn gốc của các giống chó qua hình ảnh, với sự chú trọng vào một số giống chó phổ biến do hạn chế về dữ liệu Chúng tôi sẽ không xử lý các giống chó hiếm gặp và giống chó lai.
Về các khía cạnh không xử lý trong đề tài, chúng em sẽ không tập chung xử lý các mục sau:
Dự án sẽ không xem xét sự thay đổi về thời gian của giống chó, mặc dù kích thước và kiểu lông của chúng có thể thay đổi lớn theo thời gian Chúng tôi sẽ nỗ lực chọn dữ liệu sao cho không bị ảnh hưởng nhiều và xác định nguồn gốc tĩnh của giống chó dựa trên hình ảnh đã cung cấp.
Hệ thống nhận dạng nguồn gốc của giống chó dựa trên hình ảnh được chúng em giới thiệu, cung cấp khả năng xác định nguồn gốc của các giống chó khác nhau thông qua hình ảnh Tuy nhiên, hệ thống này không xác định tình trạng cụ thể của những con chó, chẳng hạn như chó lai hoặc chó ta, mà chỉ tập trung vào việc nhận dạng nguồn gốc của giống chó.
- Địa điểm: Dự án tập trung vào việc nhận dạng nguồn gốc qua hình ảnh, không liên quan đến địa điểm cụ thể của việc mua bán
Các giới hạn và phạm vi đã được xác định sẽ giúp tập trung vào mục tiêu chính của dự án, đồng thời đảm bảo tính khả thi và hiệu quả của nghiên cứu.
1.2.3 Đầu vào và đầu ra bài toán
Để giải quyết bài toán nhận diện giống chó, chúng tôi sử dụng tập dữ liệu gồm hình ảnh các loại chó khác nhau, với mỗi hình ảnh được cung cấp dưới dạng dữ liệu pixel có độ phân giải cụ thể Các mô hình của chúng tôi được thiết kế dựa trên mạng nơ-ron tích chập (CNN) để nhận diện các đặc trưng quan trọng của chó.
Đầu ra của bài toán là thông tin văn bản về nguồn gốc cụ thể của các giống chó Mô hình CNN sẽ học các đặc trưng quan trọng từ hình ảnh để dự đoán nguồn gốc giống chó Sau khi có dự đoán, hệ thống sẽ hiển thị hình ảnh cùng với giống chó có độ chính xác cao nhất.
1.2.4 Ràng buộc của bài toán
Bài toán nhận dạng giống chó đặt ra rất nhiều thách thức, chúng được thể hiện qua các ràng buộc chính của bài toán:
Ràng buộc dữ liệu là yếu tố quan trọng trong việc nhận diện nguồn gốc của giống chó, với sự ảnh hưởng lớn từ chất lượng và tính đại diện của tập dữ liệu hình ảnh Sử dụng một tập dữ liệu không đầy đủ hoặc chứa nhiều hình ảnh mờ sẽ làm giảm hiệu suất của mô hình nhận diện.
Xử lý hình ảnh thường mất nhiều thời gian tính toán, đặc biệt khi sử dụng các mô hình phức tạp như mạng nơ-ron tích chập (CNN) Điều này có thể gây ra ràng buộc về thời gian, nhất là khi cần xử lý một khối lượng lớn hình ảnh.
Việc triển khai mô hình CNN yêu cầu một lượng tài nguyên tính toán lớn, đặc biệt trên các cơ sở hạ tầng hạn chế Nếu không có đủ tài nguyên, quá trình huấn luyện và triển khai mô hình sẽ gặp nhiều khó khăn.
Mô hình nhận diện giống chó có thể gặp ràng buộc hiệu suất khi phải xử lý nhiễu trong dữ liệu hình ảnh hoặc khi các giống chó có sự tương đồng cao, bao gồm cả các loại chó lai.
Độ chính xác của mô hình là một yếu tố quan trọng, đặc biệt trong các ứng dụng như nhận diện nguồn gốc giống chó Việc đảm bảo độ chính xác cao là cần thiết để tránh kết quả sai lệch và cung cấp thông tin tin cậy.
PHƯƠNG PHÁP ỨNG DỤNG
Phương pháp tiếp cận bài toán
Phương pháp nghiên cứu trong dự án này được thực hiện theo các bước cụ thể để đảm bảo tính khả thi và hiệu quả
Chúng em bắt đầu bằng việc thu thập dữ liệu hình ảnh về các giống chó từ một nguồn đáng tin cậy Bộ dữ liệu này bao gồm nhiều giống chó khác nhau từ nhiều địa điểm khác nhau, nhằm tạo ra một tập hợp đa dạng và phong phú.
Quá trình tiền xử lý dữ liệu là bước quan trọng đầu tiên sau khi thu thập bộ dữ liệu Để chuẩn hóa và làm sạch dữ liệu, chúng tôi thực hiện các bước chuyển đổi kích thước ảnh nhằm đảm bảo sự đồng nhất, đồng thời xoay và cắt ảnh theo khuôn mẫu cố định để tạo ra dữ liệu đầu vào đồng nhất cho mô hình.
Mô hình nhận dạng chó được xây dựng dựa trên VGG16, sử dụng để trích xuất đặc trưng từ hình ảnh và phân loại giống chó Quá trình này bao gồm việc huấn luyện mô hình trên tập dữ liệu đào tạo để tối ưu hóa khả năng nhận diện và phân loại dựa trên các đặc trưng đã trích xuất Mạng nơ ron sau đó sẽ thực hiện nhiệm vụ phân loại các giống chó dựa trên những đặc trưng này.
Đánh giá mô hình đào tạo là quá trình quan trọng để xác định hiệu quả của nó thông qua các chỉ số như độ chính xác (accuracy), độ chính xác trên tập xác thực (validation accuracy) và hàm mất mát (loss function) Chúng tôi cũng thực hiện trực quan hóa kết quả nhằm làm rõ khả năng nhận dạng của mô hình và so sánh với các mục tiêu đã đề ra ban đầu.
Mô hình phân loại giống chó đã được triển khai trong một ứng dụng thực tế, cho phép người dùng nhận dạng giống chó thông qua hình ảnh Sau khi đánh giá và đạt được những kết quả tốt, ứng dụng này mang đến trải nghiệm tiện lợi cho người dùng cuối.
Các kỹ thuật giải quyết bài toán đề xuất
2.2.1 Lý thuyết về mạng CNN
Mạng neural tích chập (CNN) là mô hình học sâu giúp xây dựng hệ thống thông minh với độ chính xác cao Nó sử dụng phép tích chập để trích chọn đặc trưng từ lớp đầu vào, kết hợp với hàm kích hoạt phi tuyến như ReLU để tạo ra thông tin trừu tượng cho các lớp tiếp theo Quá trình này lặp lại qua nhiều lớp ẩn, sử dụng bộ lọc tích chập, nhằm nhận dạng đối tượng CNN thường được áp dụng trong nhận dạng hình ảnh và xử lý ngôn ngữ tự nhiên.
CNN is built on three core principles: local connectivity, which emphasizes compositionality; location invariance, ensuring consistent performance regardless of input position; and invariance to local transitions, allowing the model to maintain robustness against minor changes in the input data.
Trong mô hình mạng neural truyền thẳng, các lớp được kết nối với nhau thông qua trọng số liên kết w, tạo thành các lớp kết nối đầy đủ (fully connected layer).
Trong mô hình CNN, các lớp được kết nối qua cơ chế tích chập (Convolutional), với các lớp tiếp theo là kết quả của quá trình này từ lớp trước Mỗi lớp sử dụng các bộ lọc (filter) khác nhau, thường từ vài trăm đến vài nghìn bộ lọc Ngoài ra, các lớp pooling/subsampling được sử dụng để trích xuất thông tin hữu ích hơn và loại bỏ thông tin nhiễu.
Trong quá trình huấn luyện, mạng nơ-ron tích chập (CNN) tự động điều chỉnh các thông số cho các bộ lọc Cụ thể, trong nhiệm vụ phân loại hình ảnh, CNN nỗ lực xác định các thông số tối ưu cho từng bộ lọc tương ứng.
Lớp Convolutional sử dụng các bộ lọc nhỏ (thường là 3x3 hoặc 5x5) để quét qua ảnh, thay vì kết nối toàn bộ điểm ảnh Quá trình này thực hiện phép tích chập giữa bộ lọc và giá trị điểm ảnh trong vùng quét, tạo ra một giá trị duy nhất cho mỗi vị trí Đầu ra của phép tích chập là mạng đặc trưng (features map), giúp làm nổi bật các đặc điểm của đối tượng trong ảnh như đường viền và góc cạnh Các layer tiếp theo tiếp tục trích xuất các đặc trưng phức tạp hơn từ những đặc trưng đã nhận diện, cho phép phân tích ảnh sâu hơn và chi tiết hơn.
Hình 2.2 Phép tích chập với bộ lọc (nguồn internet)
Mỗi filter trong lớp sẽ tạo ra một lớp ảnh tương ứng, và lớp ảnh này sẽ được truyền vào lớp tiếp theo Các trọng số của filter được khởi tạo ngẫu nhiên và sẽ được điều chỉnh dần trong quá trình huấn luyện.
Lớp chuyển đổi RELU (Rectified Linear Unit) thường được cài đặt ngay sau lớp Convolutional, sử dụng hàm kích hoạt f(x) = max(0, x) để loại bỏ các giá trị âm không cần thiết, giúp cải thiện tính toán ở các layer sau mà không thay đổi kích thước của ảnh Trong khi đó, lớp Pooling cũng sử dụng cửa sổ trượt để quét toàn bộ bức ảnh, nhưng thay vì tính tích chập, nó thực hiện quá trình lấy mẫu (subsampling) để giảm kích thước ảnh mà vẫn giữ lại các đặc trưng quan trọng.
Giá trị đại diện cho vùng ảnh được xác định thông qua các phương pháp pooling, bao gồm MaxPooling (giá trị lớn nhất), MinPooling (giá trị nhỏ nhất) và AveragePooling (giá trị trung bình).
Trong lớp Fully Connected Layer (FC), mỗi neuron sẽ kết nối với tất cả các neuron của lớp khác Để đưa ảnh từ các lớp trước vào mạng, cần dàn phẳng ảnh thành một vector thay vì giữ nguyên dạng mảng nhiều chiều Ở lớp cuối cùng, hàm softmax được sử dụng để phân loại đối tượng dựa trên vector đặc trưng đã được tính toán từ các lớp trước.
Như vậy có thể thấy được cấu trúc cơ bản của CNN gồm các lớp tích chập (Convolutional layer), lớp phi tuyến (Nonlinear layer) và lớp lọc
(Pooling layer) như hình 1.* Các lớp tích chập kết hợp với các lớp phi tuyến
15 sử dụng các hàm phi tuyến như ReLU hay tanh để tạo ra thông tin trừu tượng hơn (Abstract/higher-level) cho các lớp tiếp theo
- Vai trò của transfer learning
Trong thời kỳ bùng nổ deep learning, nguồn tài nguyên về trí tuệ nhân tạo (AI) ngày càng phong phú Cùng với sự phát triển này, số lượng các mô hình đã được huấn luyện trước (pretrained-model) với chất lượng và độ chính xác cao cũng gia tăng Hầu hết các lĩnh vực đều có thể tìm thấy các mô hình pretrained phù hợp.
Lý thuyết về transfer learning được Lorien Pratt thực nghiệm lần đầu năm
Vào năm 1993, ý tưởng về chuyển giao tri thức giữa các mô hình, tương tự như cách con người chia sẻ kiến thức, đã được hình thành Đến năm 1998, ý tưởng này đã được phát triển thành một lý thuyết toán học, cho phép một mô hình tận dụng lại các tri thức đã được huấn luyện trước đó và cải thiện hiệu suất trong các tác vụ phân loại.
- Cải thiện accuracy và tiết kiệm chi phí huấn luyện
Trong bài toán phân loại chó và mèo, việc huấn luyện từ đầu thường yêu cầu nhiều epochs hơn để đạt được độ chính xác cao Tuy nhiên, nếu tận dụng các mô hình đã được huấn luyện trước (pretrained models), số lượng epochs cần thiết sẽ giảm, giúp đạt được độ chính xác mong đợi nhanh hơn Thậm chí, độ chính xác có thể cao hơn so với phương pháp không áp dụng transfer learning.
Hình 2.4 Sơ đồ so sánh hiệu suất mô hình
Từ đồ thị ta có thể thấy sử dụng transfer learning sẽ mang lại 3 lợi thế chính:
• Có điểm khởi đầu của accuracy tốt hơn (higher start)
• Accuracy có tốc độ tăng nhanh hơn (higher slope)
• Đường tiệm cận của độ chính xác tối ưu cao hơn (higher asymptote)
- Hiệu quả với dữ liệu nhỏ:
Khi bộ dữ liệu quá nhỏ, việc dự báo chính xác trở nên khó khăn Sử dụng tri thức từ các mô hình đã được huấn luyện trước (pretrained-model) cho cùng tác vụ phân loại giúp cải thiện khả năng dự báo của mô hình mới Bằng cách này, mô hình có thể học từ cả dữ liệu huấn luyện hiện tại và kiến thức đã có trước đó, từ đó nâng cao hiệu quả dự báo với dữ liệu mới.
- Ví dụ về transfer learning
Quá trình chuyển giao tri thức từ một mô hình đã học sang bài toán hiện tại được gọi là transfer learning Ví dụ minh họa sẽ giúp bạn hiểu rõ hơn về khái niệm này.
TIẾN HÀNH THỰC NGHIỆM
Dataset
The dataset is sourced from https://www.kaggle.com/competitions/dog-breed-identification Kaggle is a platform that offers a wide variety of datasets in the fields of computer vision, machine learning, and deep learning Additionally, Kaggle hosts numerous competitions related to these domains.
Trong bộ dữ liệu về giống chó, chúng tôi đã tải xuống 100 giống chó khác nhau với hình ảnh đa dạng, kích thước trung bình 500x500 Sau khi xử lý, nhóm chúng tôi đã giữ lại khoảng 1000 ảnh của 6 giống chó chính để tạo thành dataset cho bài toán, bao gồm: border collie, chihuahua, doberman, pekinese, rottweiler và shih-tzu.
Trong bộ dữ liệu này, chúng tôi đã phân loại các file ảnh giống chó vào các thư mục train và test với tỷ lệ 90% cho training và 10% cho testing Chúng tôi cũng tạo một file train.csv chứa hai cột: ảnh của giống chó và nhãn tương ứng Để thực hiện bài toán, chúng tôi chia tập train thành hai phần: một phần cho training và một phần cho validation với tỷ lệ 80% cho training và 20% cho validation Do đó, tỷ lệ phân chia dataset sẽ là 64% cho training, 16% cho validation và 20% cho testing.
Xây DỰNG CHƯƠNG TRÌNH DEMO
Giới thiệu về chương trình
Nhóm chúng em đã phát triển một chương trình demo đơn giản bằng Python nhằm dự đoán giống chó, dựa trên mô hình đã được huấn luyện để nhận diện 6 loại giống chó Chương trình được triển khai trên Google Colab và sử dụng các thư viện như Ipython, OpenCV, Numpy, Keras và Matplotlib để hỗ trợ quá trình phân loại.
Chương trình sẽ được thiết kế đơn giản với tiến trình như sau:
- Người dùng tiến hành tải lên hình ảnh về giống chó từ hệ thống và ảnh sẽ được lưu vào
- Sau đó, chương trình sẽ tiền xử lý hình ảnh để phù hợp với dự đoán và yêu cầu của mô hình
Chương trình sẽ áp dụng mô hình phân loại giống chó đã được đào tạo để dự đoán chính xác lớp giống chó cho hình ảnh.
- Chương trình hiển thị hình ảnh về giống chó cùng với tên loại giống chó đã dự đoán cho người dùng