1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)

56 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại ảnh
Tác giả Vũ Văn Cường
Người hướng dẫn TS. Trần Thị Xuân
Trường học Trường Đại học Công nghệ thông tin và Truyền thông
Chuyên ngành Công nghệ thông tin
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2024
Thành phố Thái Nguyên
Định dạng
Số trang 56
Dung lượng 3,04 MB

Cấu trúc

  • CHƯƠNG 1. TỔNG QUAN VỀ MẠNG NƠ RON (10)
    • 1.1. Tổng quan về Deep – Learning (10)
      • 1.1.1. Khái Niệm Deep Learning (10)
      • 1.1.2. Hoạt động của Deep Learning (11)
      • 1.1.3. Ứng dụng của Deep Learning (12)
      • 1.1.4. Ưu và nhược điểm của Deep Leanring (15)
    • 1.2. Tổng quan về mạng nơ-ron (15)
      • 1.2.1. Khái niệm mạng nơ-ron (15)
      • 1.2.2. Công dụng của mạng nơ-ron (16)
      • 1.2.3. Kiến trúc của mạng nơ-ron (18)
      • 1.2.4. Các mạng nơ-ron phổ biến (20)
  • CHƯƠNG 2. MẠNG TÍCH CHẬP CNN VÀ RESNET (23)
    • 2.1. Mạng tích chập CNN (23)
      • 2.1.1. Tổng quan (23)
      • 2.1.2. Phép nhân tích chập (Convolution) (28)
      • 2.1.3. Cấu trúc của mạng nơ-ron tích chập CNN (28)
    • 2.2. Tổng quan về ResNet (32)
      • 2.2.1. Khái niệm ResNet (32)
      • 2.2.2. Hiện tượng Vanishing Gradient (33)
      • 2.2.3. Kiến trúc ResNet (34)
    • 2.3. Xây dựng mạng ResNet – 50 (36)
    • 2.4. Kết luận về ResNet (38)
  • CHƯƠNG 3. XÂY DỰNG MÔ HÌNH PHÂN LOẠI ẢNH (39)
    • 3.1. Mô tả bài toán (39)
      • 3.1.1. Bài toán phân loại hình ảnh vật nuôi (39)
      • 3.1.2. Khó khăn của bài toán phân loại ảnh (39)
      • 3.1.3. Xây dựng phương pháp giải quyết bài toán (39)
    • 3.2. Xây dựng chương trình (40)
      • 3.2.1. Cơ sở dữ liệu (40)
      • 3.2.2. Xử lý dữ liệu (44)
      • 3.2.3. Tăng cường dữ liệu (45)
      • 3.2.4. Thiết kế mạng CNN (47)
      • 3.2.5. Khởi tạo mạng và tạo lớp ảnh đầu vào (50)
      • 3.2.6. Khởi tạo các lớp FC (50)
      • 3.2.7. Huấn luyện mô hình (50)
      • 3.2.8. Kết quả huấn luyện (50)
    • 3.3. Chương trình kiểm tra kết quả huấn luyện (51)
  • CHƯƠNG 4. KẾT LUẬN (56)

Nội dung

MỤC LỤC LỜI CẢM ƠN i --- Page 5 --- LỜI CAM ĐOAN ii MỤC LỤC iii DANH MỤC HÌNH ẢNH v LỜI MỞ ĐẦU 1 CHƯƠNG 1. TỔNG QUAN VỀ MẠNG NƠ RON 2 1.1. Tổng quan về Deep – Learning 2 1.1.1. Khái Niệm Deep Learning 2 1.1.2. Hoạt động của Deep Learning 3 1.1.3. Ứng dụng của Deep Learning 4 1.1.4. Ưu và nhược điểm của Deep Leanring 6 1.2. Tổng quan về mạng nơ-ron 7 1.2.1. Khái niệm mạng nơ-ron 7 1.2.2. Công dụng của mạng nơ-ron 7 1.2.3. Kiến trúc của mạng nơ-ron 9 1.2.4. Các mạng nơ-ron phổ biến 11 CHƯƠNG 2. MẠNG TÍCH CHẬP CNN VÀ RESNET 14 2.1. Mạng tích chập CNN 14 2.1.1. Tổng quan 14 2.1.2. Phép nhân tích chập (Convolution) 20 2.1.3. Cấu trúc của mạng nơ-ron tích chập CNN 20 --- Page 6 --- 2.2. Tổng quan về ResNet 24 2.2.1. Khái niệm ResNet 24 2.2.2. Hiện tượng Vanishing Gradient 25 2.2.3. Kiến trúc ResNet 26 2.3. Xây dựng mạng ResNet – 50 28 2.4. Kết luận về ResNet 29 CHƯƠNG 3. XÂY DỰNG MÔ HÌNH PHÂN LOẠI ẢNH 31 3.1. Mô tả bài toán 31 3.1.1. Bài toán phân loại hình ảnh vật nuôi 31 3.1.2. Khó khăn của bài toán phân loại ảnh 31 3.1.3. Xây dựng phương pháp giải quyết bài toán 31 3.2. Xây dựng chương trình 32 3.2.1. Cơ sở dữ liệu 32 3.2.2. Xử lý dữ liệu 36 3.2.3. Tăng cường dữ liệu 37 3.2.4. Thiết kế mạng CNN 39 3.2.5. Khởi tạo mạng và tạo lớp ảnh đầu vào 41 3.2.6. Khởi tạo các lớp FC 41 3.2.7. Huấn luyện mô hình 41 3.2.8. Kết quả huấn luyện 41

TỔNG QUAN VỀ MẠNG NƠ RON

Tổng quan về Deep – Learning

Trong quá trình phát triển của trí tuệ nhân tạo (AI), AI là ý tưởng xuất hiện sớm nhất, tiếp theo là học máy, và gần đây nhất là học sâu Mặc dù xuất hiện sau cùng, học sâu lại đang đóng vai trò chính trong sự bùng nổ của AI hiện nay Trong ngữ cảnh hiện nay, học sâu là một phần không thể thiếu của lĩnh vực học máy, một thuật ngữ mà thường ám chỉ đến các mạng thần kinh có khả năng học từ dữ liệu đầu vào và tạo ra các biểu diễn trừu tượng Học sâu đã vượt trội so với các phương pháp học máy cũ trong việc giải quyết những thách thức phức tạp như nhận dạng giọng nói, xử lý ngôn ngữ tự nhiên và phân loại ảnh.

Hình 2 1 Mối quan hệ giữa Dl, ML và AI

Deep learning là một phần của machine learning, tồn tại trong một mạng nơ-ron nhân tạo với các thuật toán mô phỏng theo cấu trúc thần kinh của con người và học từ một lượng lớn dữ liệu Tương tự như cách chúng ta học từ kinh nghiệm, thuật toán deep learning thực hiện nhiệm vụ nhiều lần, mỗi lần điều chỉnh một chút để cải thiện kết quả.

Deep learning được đặt tên như vậy do các mạng nơ-ron mô phỏng có các lớp (có độ sâu) khác nhau, tương ứng với mức độ học hỏi Tất cả các vấn đề đòi hỏi khả năng

"tư duy" để giải quyết, đều là những vấn đề deep learning có thể học hỏi và tìm ra giải pháp.

Sự gia tăng đáng kể của lượng dữ liệu, ước lượng khoảng 2,6 nghìn tỷ byte mỗi ngày, là một trong những lý do khiến deep learning phát triển mạnh mẽ trong những năm gần đây, bởi thuật toán này đòi hỏi một lượng dữ liệu lớn.

Deep learning mở ra khả năng giải quyết các vấn đề phức tạp trên các bộ dữ liệu rất đa dạng, không có cấu trúc hoặc liên kết với nhau Càng đào sâu vào nghiên cứu, các thuật toán deep learning càng cung cấp tiềm năng ứng dụng lớn hơn.

Không giống với học máy, học sâu cần được đào tạo thuật toán trong một thời gian dài do số lượng các tham số lớn, trong khi thuật toán học máy cũ có thể được đào tạo chỉ trong vài giờ.

Học sâu có vai trò ngày càng quan trọng trong công nghệ hiện đại, với tiềm năng vượt qua khả năng xử lí của bộ não con người vì sử dụng các mạng lưới thần kinh rộng lớn

1.1.2 Hoạt động của Deep Learning

Deep learning là một trong những phương pháp của Machine learning, sử dụng mạng nơ-ron nhân tạo để mô phỏng khả năng tư duy logic của bộ não con người Mạng nơ-ron được cấu thành từ nhiều lớp (layer) khác nhau Số lượng layer càng nhiều thì mạng càng "deep" (sâu) hơn Mỗi layer bên trong sẽ chứa các nút mạng (node), kết nối với các layer liền kề qua các trọng số tương ứng Trọng số càng cao, thì kết nối đó càng có ảnh hưởng lớn đối với mạng nơ-ron.

Ngoài ra, mỗi nơ-ron cũng sẽ có một hàm kích hoạt nhằm chuẩn hóa đầu ra Khi dữ liệu được đưa vào mạng nơ-ron, nó sẽ truyền qua các layer và trả về kết quả tại layer cuối cùng, gọi là output layer.

Trong quá trình huấn luyện mô hình mạng nơ-ron, các trọng số sẽ được điều chỉnh để tối ưu hóa độ chính xác Mô hình sẽ cố gắng tìm ra bộ giá trị trọng số tốt nhất cho phép dự đoán chính xác Các hệ thống Deep learning đòi hỏi phần cứng mạnh mẽ để xử lý lượng lớn dữ liệu và thực hiện các phép tính phức tạp Đối với một số mô hình Deep learning, việc huấn luyện có thể mất từ vài tuần đến vài tháng trên các phần cứng tiên tiến hiện nay.

1.1.3 Ứng dụng của Deep Learning

Học sâu là một thuật toán đòi hỏi sử dụng một lượng lớn dữ liệu để huấn luyện và học tập Trước đây, khi internet chưa phổ biến như hiện nay, việc thu thập dữ liệu cho học sâu gặp rất nhiều khó khăn Tuy nhiên, với sự bùng nổ của internet và sự phát triển của mạng xã hội, mỗi ngày tạo ra khoảng hơn 2.6 nghìn tỉ byte dữ liệu, một lượng dữ liệu đáng kể và quý báu cho phát triển học sâu Do đó, học sâu đã, đang và sẽ tiếp tục phát triển mạnh mẽ trong tương lai.

- Nhận dạng giọng nói: Các trợ lý ảo như của Apple ( Siri), Google (Assistant), Amazon ( Alexa), Microsoft ( Cortana), và gần đây là Samsung ( Bixby) đều áp dụng học sâu để hỗ trợ người sử dụng tương tác với máy tính qua giọng nói Những trợ lý này được tích hợp vào các loa thông minh trong nhà và kết nối với internet.

- Dịch thuật: Công nghệ dịch thuật dựa trên học sâu và trí tuệ nhân tạo sử dụng mạng nơ-ron nhân tạo và xử lý ngôn ngữ tự nhiên, đem tới kết quả chính xác hơn so với các công nghệ dịch trước đây Theo Google, công nghệ này dịch toàn bộ câu cùng một lúc so với dịch từng đoạn như trước đây Kết quả là các câu dịch có cấu trúc ngữ pháp chính xác hơn và tự điều chỉnh và hoàn thiện theo thời gian.

- Ô tô tự vận hành hay máy bay không cần người lái: Trong tương lai, trí tuệ nhân tạo tiến bộ hơn và sẽ được áp dụng vào ngành hàng không và công nghiệp sản xuất vận hành ô tô, có thể những phương tiện này sẽ không chỉ đơn thuần là các phương tiện di chuyển mỗi ngày Thay vào đó, chúng có thể trở thành những “sinh vật”, có thể tư duy, suy luận và thậm chí cảm xúc, tương tự như con người Khi đó, chúng sẽ không chỉ là phương tiện di chuyển mà còn là bạn đồng hành, cùng tham gia vào cuộc sống và phát triển trong một thế giới mới.

- Tô màu, phục chế hình ảnh: Trước đây, quá trình tô màu và phục chế hình ảnh thường được thực hiện thủ công bằng phần mềm Photoshop, một quy trình rất phức tạp đòi hỏi người thực hiện phải có kiến thức về màu sắc, các thang đo màu xám tương ứng và phải sử dụng thành thạo phần mềm Photoshop Tuy nhiên, hiện nay có nhiều phần mềm sử dụng thuật toán học sâu để tự động tô màu cho các ảnh đen trắng Người sử dụng chỉ cần vài thao tác nhỏ đơn giản để tô màu cho ảnh và nhận được kết quả bất ngờ và chính xác, trong khi không có kiến thức về màu sắc và Photoshop.

Hình 2 2 Tô màu ảnh đen trắng dựa trên Deep Learning

“Facebook đã nghiên cứu và phát triển hệ thống nhận dạng khuôn mặt có tên là

Tổng quan về mạng nơ-ron

1.2.1 Khái niệm mạng nơ-ron

“Mạng nơ-ron là một công cụ tiên tiến trong lĩnh vực AI ( trí tuệ nhân tạo), sử dụng để huấn luyện máy tính xử lý dữ liệu theo cảm hứng từ cấu trúc của bộ não người Được biết đến như một phương pháp học sâu, gọi là Deep Learning, mạng nơ- ron thường được tổ chức thành các lớp nơ-ron kết nối nhau, mô phỏng lại cấu trúc phân lớp của bộ não Tính linh hoạt của mạng nơ-ron cho phép máy tính học từ sai sót và liên tục cải thiện theo thời gian Nhờ tính linh hoạt và khả năng học này, mà mạng nơ- ron nhân tạo có thể áp dụng giải quyết các vấn đề phức tạp

Cấu trúc của mạng nơ-ron nhân tạo

1.2.2 Công dụng của mạng nơ-ron

Thị giác máy tính là khả năng của máy tính đưa ra thông tin từ hình ảnh và video một cách sâu sắc và chính xác Với sự phát triển của mạng nơ-ron, máy tính đã có khả năng nhận diện và phân biệt hình ảnh giống như con người Thị giác máy tính có ứng dụng rộng rãi trong nhiều lĩnh vực, bao gồm:

- Trong hệ thống nhận diện ảnh của ô tô tự lái, công nghệ này đóng vai trò quan trọng trong việc nhận biết biển báo giao thông và các phần tử khác trong môi trường giao thông, là một ứng dụng quan trọng của công nghệ hiện đại.

- Việc kiểm tra nội dung một cách tự động để loại bỏ các thông tin không an toàn hay không phù hợp ra khỏi kho lưu trữ hình ảnh, video cũng đóng vai trò quan trọng trong công nghệ hiện đại.

- Sự nhận diện và phát hiện khuôn mặt giúp xác định các cá nhân hay các đặc điểm có trên khuôn mặt như mắt, mũi, miệng,

- Dán nhãn trên ảnh hỗ trợ việc nhận biết được thương hiệu logo, đồ bảo hộ, quần áo và các chi tiết khác, từ đó giúp quản lý và tìm kiếm hình ảnh một cách hiệu quả.

Mạng nơ-ron có khả năng phân tích tiếng nói của con người, vượt qua các khác biệt về mẫu giọng, ngôn ngữ, cao độ, tông và giọng vùng miền Trợ lý ảo như Alexa (Amazon) và các phần mềm tự động phiên âm có sử dụng công nghệ nhận dạng giọng nói thực hiện các tác vụ như:

- Giúp các nhân viên tổng đài trực và phân loại cuộc gọi tự động.

- Đưa cuộc trò chuyện về y học thành văn bản trong thời gian ngắn.

- Làm phụ đề cho video và bản ghi âm một cách chính xác cuộc họp để mở rộng phạm vi nội dung được tiếp cận.

Kỹ thuật xử lý ngôn ngữ tự nhiên:

“Hay (NLP) là khả năng của máy tính xử lý được văn bản tự nhiên mà của con người đã có Mạng nơ-ron hỗ trợ máy tính trong việc trích xuất thông tin sâu sắc và nội dung ý nghĩa với dữ liệu văn bản và tài liệu NLP được ứng dụng trong nhiều tình huống, bao gồm các chức năng sau:

- Chatbot tự động và tổng đài viên ảo

- Tự động phân loại và sắp xếp dữ liệu được ghi

- Phân tích thông minh nghiệp vụ những tài liệu dài như biểu mẫu và email

- Đưa ra các từ khóa quan trọng, thể hiện cảm xúc ví dụ như những đánh giá tiêu cực hay những bình luận trên mạng xã hội

- Tóm tắt tài liệu và tạo bài viết về một chủ đề cho trước

Mạng nơ-ron có khả năng theo dõi và phân tích hành vi của người dùng để đề xuất các sản phẩm hoặc dịch vụ phù hợp Ví dụ, Curalate - là công ty bắt đầu và khởi nghiệp đặt trụ sở tại Philadelphia - đã giúp cho nhiều thương hiệu tăng doanh số bán hàng với các bài tải lên trên mạng bằng cách gắn thẻ các sản phẩm thông minh (IPT). IPT của Curalate đã thu thập tự động và lựa chọn nội dung từ người dùng qua mạng xã hội Dựa trên thông tin này, nó đề xuất những sản phẩm ảnh hưởng đến hoạt động của người dùng Điều này giúp người tiêu dùng mua hàng dễ dàng hơn mà không cần phải tìm kiếm sản phẩm trực tiếp từ hình ảnh trên khồn gian mạng xã hội Thay thế vào đó, họ có thể tự dùng dịch vụ gắn thẻ lên các sản phẩm tự động của Curalate.”

1.2.3 Kiến trúc của mạng nơ-ron

Cấu trúc mạng nơ-ron đã được lấy cảm hứng chính từ bộ não con người Giống như các tế bào não, hay còn được biết tới là nơ-ron, mạng nơ-ron hình thành một mạng lưới rất phức tạp, với các liên kết mạnh mẽ và truyền tải những tín hiệu điện giữa chúng để hỗ trợ xử lý các thông tin Với mạng nơ-ron nhân tạo, tương tự như vậy, được xây dựng từ những "tế bào nơ-ron" nhân tạo, hoạt động cùng với nhau để xử lý và giải quyết các vấn đề Các "tế bào nơ-ron" nhân tạo thường được gọi là nút, mạng nơ-ron nhân tạo được hiểu là các chương trình phần mềm hay thuật toán dùng hệ thống máy tính để thực hiện các phép toán cơ bản.

Kiến trúc của mạng nơ-ron đơn giản bao gồm ba lớp:

Thông tin từ thế giới bên ngoài được đưa vào mạng nơ-ron nhân tạo qua lớp đầu vào Các nút này xử lý, phân tích hoặc phân loại dữ liệu ngay sau đó đưa dữ liệu sang lớp tiếp theo.

Dữ liệu nhận từ lớp đầu vào hoặc các lớp ẩn khác được đưa vào lớp ẩn Một mạng nơ-ron nhân tạo có thể có nhiều lớp ẩn Với mỗi lớp ẩn phân tích đầu ra của lớp trước, để xử lý dữ liệu tốt hơn, sâu hơn và sau đó đưa dữ liệu tới lớp tiếp theo.

Lớp đầu ra tạo ra kết quả cuối của dữ liệu sau khi trải qua quá trình xử lý của mạng nơ-ron nhân tạo Nên lớp này có thể chứa một hay nhiều nút, tùy thuộc vào các loại bài toán Ví dụ, trong bài toán phân loại nhị phân, với lớp đầu ra chỉ có một nút để tạo ra kết quả dưới dạng 1 hoặc 0 Tuy nhiên, khi xử lý các bài toán phân loại với nhiều hơn hai lớp và lớp đầu ra có thể gồm nhiều nút đầu ra.”

Kiến trúc của mạng nơ-ron chuyên sâu

Deep learning, hoặc mạng nơ-ron sâu, với hàng triệu nơ-ron nhân tạo được kết nối với nhau bao gồm nhiều lớp ẩn Mỗi kết nối giữa hai nút được biểu diễn bằng một giá trị gọi là trọng số Trọng số này có thể dương nếu nút này kích thích nút kế tiếp, hay âm nếu nút này ức chế nút kế tiếp Các nút có trọng số lớn hơn sẽ ảnh hưởng lớn hơn đối với các nút khác.

Lý thuyết cho thấy rằng mạng nơ-ron sâu có khả năng ánh xạ mọi loại dữ liệu đầu vào sang bất kỳ dữ liệu đầu ra như nào Tuy nhiên, để hoạt động hiệu quả, chúng cần được đào tạo với một lượng lớn ví dụ dữ liệu đào tạo, thường là hàng triệu ví dụ, so với nhiều ví dụ mà mạng đơn giản nhiều hơn thường cần.”

Hình 1 1 Ảnh kiến trúc của mạng nơ-ron chuyên sâu

(Nguồn: https://www.google.com.vn) 1.2.4 Các mạng nơ-ron phổ biến

1.2.4.1 Mạng nơron tái tạo (Recurrent neural networks - RNN)

“Mạng nơ-ron tái tạo (RNN) là một tiến bộ từ mạng nơ-ron truyền thống, được thiết kế đặc biệt để xử lý dữ liệu dạng tuần tự RNN bao gồm các thành phần như: đơn vị đầu vào, đơn vị ẩn và đơn vị đầu ra, trong đó các đơn vị ẩn thường được coi là các phần tử nhớ Để thực hiện dự đoán, mỗi đơn vị RNN sử dụng đầu vào hiện tại cùng với đầu ra của đơn vị trước đó RNN đã được áp dụng rộng rãi trong nhiều lĩnh vực như là xử lý giọng nói, nhận dạng hành vi con người, dự đoán chữ viết tay và hiểu ngữ nghĩa.

MẠNG TÍCH CHẬP CNN VÀ RESNET

Mạng tích chập CNN

Trong mạng neural, mô hình mạng tích chập (CNN) là một trong những mô hình được sử dụng phổ biến để phân loại và nhận dạng hình ảnh, đặc biệt là trong việc xác định đối tượng và nhận dạng khuôn mặt.

CNN phân loại hình ảnh bằng cách xử lý một hình ảnh đưa vào và phân loại nó vào các mục nhất định (ví dụ: Chó, Gà, Bò, ) Máy tính xem hình ảnh đầu vào như một mảng pixel được phụ thuộc vào độ phân giải của hình ảnh Trên độ phân giải này, máy tính sẽ nhận diện kích thước H x W x D (trong đó H: Chiều cao, W: Chiều rộng, D: Độ sâu) Ví dụ: Một hình ảnh có thể được biểu diễn bằng một mảng ma trận RGB 6x6x3 (trong đó, 3 là số giá trị cho các kênh màu RGB).

Hình 2 3 Mảng ma trận RGB 6x6x3

Trong mô hình CNN, từ kỹ thuật, mỗi hình ảnh đầu vào đi qua chuỗi các lớp tích chập với bộ lọc (Kernals), sau đó được tổng hợp qua các lớp kết nối đầy đủ (FullyConnected), và kết thúc bằng việc sử dụng hàm softmax khi phân loại đối tượng, cho ra giá trị có xác suất từ 0 đến 1 Đây là quá trình tổng thể của CNN để xử lý dữ liệu hình ảnh đưa vào và phân loại các đối tượng.

Một số loại mạng nơ-ron tích chập đem lại kết quả cao như: VGG16, GoogleNet, ResNet-50, DenseNet, EfficientNet,

Lớp tích chập - Convolution Layer

Lớp Convolution (Conv) là một phần không thể thiếu trong cấu trúc của mạng nơ-ron tích chập (CNN) Phép tích chập ban đầu đã được phát triển trong lĩnh vực xử lý tín hiệu số trước khi trở nên phổ biến trong việc xử lý ảnh và video số, nhờ vào khả năng chuyển đổi thông tin.

Bên trong lớp tích chập, một tập hợp những bộ lọc với kích thước nhỏ được áp dụng lên các phần của ma trận đầu vào Sau đó, phép tích chập được thực hiện giữa giá trị của ma trận và bộ lọc trong vùng đó Các bộ lọc di chuyển với bước trượt (stride) dọc theo ma trận đầu vào và quét qua toàn bộ ma trận Trọng số các bộ lọc thường được ngẫu nhiên khởi tạo ban đầu và sẽ được cập nhật dần trong quá trình huấn luyện mô hình.

Phép tích chập giúp xác định mối quan hệ với các pixel trong ảnh bằng cách tập trung vào các đặc trưng quan trọng thông qua việc sử dụng các phần nhỏ của dữ liệu đầu vào Đây là một phép toán có hai đầu vào: ma trận hình ảnh và một bộ lọc hoặc hạt nhân.

• Ma trận 5 x 5 với pixel là 0 và 1 Ma trận bộ lọc 3 x 3 như hình bên dưới.

Hình 2 5 Ma trận bộ lọc 3x3, ma trận 5x5

• Sau đó, lớp tích chập của ma trận hình ảnh 5 x 5 nhân với ma trận bộ lọc 3 x 3 gọi là “Feature Map” như hình bên dưới:

Hình 2 6 Mô tả bộ lọc qua ma trận ban đầu

• Khi áp dụng một hình ảnh với các bộ lọc khác nhau, chúng ta có thể thực hiện nhiều tác vụ khác nhau như phát hiện cạnh, làm sắc nét và làm mờ Dưới đây là một ví dụ minh họa về các hình ảnh tích chập khác nhau khi áp dụng với các kernel khác nhau.

Hình 2 7 Tích chập khác khi áp dụng các Kernel không giống nhau Bước nhảy - Stride

• Stride đề cập đến số pixel thay đổi trên ma trận đầu vào khi di chuyển kernel.Khi stride bằng 1, kernel di chuyển một pixel Khi stride là 2, kernel di chuyển hai pixel và tiếp tục như vậy Dưới đây là một ví dụ về lớp tích chập hoạt động với stride là 2.

Hình 2 8 Lớp tích chập với stride là 2 Hàm phi tuyến – ReLU

ReLU hay Rectified Linear Unit, là một hàm phi tuyến Với đầu ra là: ƒ (x) max (0, x).

Convolution có tính chất cơ bản là phép biến đổi tuyến tính Khi mọi neuron trong mạng neural được tổng hợp thông qua các phép biến đổi tuyến tính, thì mạng ANN có thể được biểu diễn dưới dạng một hàm tuyến tính, trở thành bài toán logistic regression Do đó, mỗi neuron cần sử dụng một hàm truyền phi tuyến Có nhiều loại hàm phi tuyến được áp dụng, như đã giới thiệu trong phần về neural cơ bản Tuy nhiên, các nghiên cứu mới đây đã chỉ ra rằng việc sử dụng hàm ReLU (Rectified Linear Unit) mang lại hiệu quả tốt hơn ở các mặt sau: tính toán đơn giản, tạo ra tính thưa (sparsity) ở các neuron ẩn (ví dụ, sau khi khởi tạo ngẫu nhiên các trọng số, khoảng 50% neuron ẩn được kích hoạt có giá trị lớn hơn 0), và quá trình huấn luyện nhanh hơn, thậm chí không cần bước tiền huấn luyện Do đó, tầng ReLU cơ bản chỉ đơn giản là áp dụng hàm truyền ReLU Điều quan trọng là ReLU giới thiệu tính phi tuyến trong ConvNet,phù hợp với dữ liệu trong thế giới mà chúng ta tìm hiểu, là các giá trị tuyến tính không âm.

Có 1 số hàm phi tuyến khác như tanh, sigmoid cũng có thể được sử dụng thay cho ReLU Hầu hết người ta thường dùng ReLU vì nó có hiệu suất tốt.

2.1.2 Phép nhân tích chập (Convolution)

Kí hiệu phép tính convolution (⊗), kí hiệu Y = X ⊗W

Với mỗi phần tử xij trong ma trận X lấy ra một ma trận có kích thước bằng kích thước của kernel W có phần tử xij làm trung tâm (đây là vì sao kích thước của kernel thường lẻ) gọi là ma trận A Sau đó tính tổng các phần tử của phép tính element-wise của ma trận A và ma trận W, rồi viết vào ma trận kết quả Y.

Hình 2 9 Phép nhân tích chập

2.1.3 Cấu trúc của mạng nơ-ron tích chập CNN

Chứa phép tính nhân tích chập (Convolution) với stride: S, padding: P trên tensor

 Với padding=p có nghĩa là thêm p vector 0 vào mỗi phía (Trên, dưới, Trái, Phải) của ma trận.

 stride=S có nghĩ là chỉ thực hiện phép tính convolution trên các phần tử: x 1+i∗s ,1+ j∗s

“Giả sử input của 1 convolutional layer tổng quát là tensor kích thước: H * W *

D Kernel có kích thước F * F * D (kernel luôn có depth bằng depth của input và F là số lẻ), stride: S, padding: P Convolutional layer áp dụng K kernel.

 Output của Convolutional layer là tensor 3 chiều có kích thước:

Output của convolutional layer sẽ qua hàm non-linear activation function trước khi trở thành input của convolutional layer tiếp theo

Tổng số parameter của layer:

 Mỗi kernel có kích thước F*F*D và có 1 hệ số bias, nên tổng parameter của 1 kernel là

 Mà convolutional layer áp dụng K kernel => Tổng số parameter trong layer này là K * (F*F*D + 1).”

Lớp Pooling thường được áp dụng giữa các lớp Convolutional để giảm kích thước dữ liệu, đồng thời vẫn giữ lại các đặc điểm quan trọng Việc này giúp giảm đáng kể số lượng phép tính trong mô hình.

Ngoài ra, khi kích thước của ảnh giảm sau phép pooling, các lớp convolution sẽ học được các vùng có kích thước lớn hơn.

Gọi kích thước của pooling là K*K Input của lớp pooling có kích thước H*W*D,chúng ta tách nó thành D ma trận có kích thước H*W Đối với mỗi ma trận, trên mỗi vùng có kích thước K*K, chúng ta tìm giá trị lớn nhất hoặc trung bình của dữ liệu, và sau đó ghi vào ma trận kết quả Quy tắc về bước nhảy (stride) và lề (padding) cũng áp dụng tương tự như phép tính convolution trên ảnh.

Thường thì khi sử dụng lớp pooling, kích thước (size) được chọn là (2,2), bước di chuyển (stride) là 2, và không thêm đệm (padding=0) Kết quả là chiều rộng và chiều cao của đầu ra giảm đi một nửa, trong khi độ sâu (depth) của dữ liệu được giữ nguyên.

Hình 2 11 Giảm kích thước ảnh và đầu ra tại các lớp tiếp theo

Có 2 loại pooling layer phổ biến là: max pooling và average pooling

Hình 2 12 Max pooling và average pooling Fully connected layer

Sau khi ảnh đã được thông qua nhiều lớp convolutional và lớp pooling, mô hình sẽ đã học được các đặc điểm tương đối của ảnh (ví dụ như mắt, mũi, khuôn mặt, v.v.). Khi đó, tensor đầu ra của lớp cuối cùng có kích thước H*W*D sẽ được biến đổi thành một vector kích thước (H*W*D, 1).

Hình 2 13 Mô tả lớp làm phẳng (Flattening)

Sau đó ta dùng các fully connected layer để kết hợp các đặc điểm của ảnh để ra được output của model.

Tổng quan về ResNet

“ResNet, viết tắt của Residual Network, là một kiến trúc mạng Học sâu đã thu hút sự quan tâm đáng kể kể từ năm 2015, sau khi giành vị trí hàng đầu trong cuộc thi LSVRC2015 Nó đã trở thành một trong những mô hình phổ biến nhất trong lĩnh vực thị giác máy ResNet đã được huấn luyện với các cấu trúc khác nhau bao gồm 18, 34,

50, 101 và 152 lớp Nhờ vào khả năng biểu diễn mạnh mẽ của nó, ResNet đã cải thiện hiệu suất của nhiều ứng dụng thị giác máy, không chỉ trong việc phân loại hình ảnh mà còn trong các ứng dụng khác như phát hiện đối tượng và nhận dạng khuôn mặt.

ResNet đã được giới thiệu vào năm 2015 và đạt vị trí hàng đầu trong cuộc thi ILSVRC 2015 với tỉ lệ lỗi top 5 chỉ là 3.57% Nó cũng giành vị trí hàng đầu trong cuộc thi ILSVRC và COCO 2015 ở các hạng mục như ImageNet Detection, ImageNet localization, Coco detection và Coco segmentation.

Hiện nay, có nhiều biến thể của kiến trúc ResNet được phát triển, với các biến thể có số lượng lớp khác nhau như ResNet-18, ResNet-34, ResNet-50, ResNet-101 và ResNet-152 Tên “ResNet” thường được kết hợp với số chỉ kiến trúc cụ thể của ResNet, để định rõ số lớp trong mạng.

ResNet là một mạng CNN được thiết kế để làm việc với hàng trăm hoặc hàng nghìn lớp chập Xu hướng thêm nhiều lớp vào các mạng học sâu nhằm trích xuất các đặc trưng quan trọng từ các hình ảnh phức tạp Các lớp đầu tiên có thể phát hiện các cạnh, trong khi các lớp cuối cùng có thể nhận biết các hình dạng dễ nhận biết Tuy nhiên, nếu thêm quá nhiều lớp vào mạng, hiệu suất của nó sẽ bị ảnh hưởng và có thể dẫn đến độ chính xác thấp do hiện tượng Vanishing Gradient trong quá trình học tập.Định lý gần đúng phổ quát về mặt kiến trúc cho biết rằng một mạng nơ-ron truyền thẳng có thể xấp xỉ mọi hàm với dữ liệu huấn luyện được cung cấp, miễn là không vượt quá khả năng chứa của nó Tuy nhiên, việc chỉ tập trung vào việc xấp xỉ dữ liệu không đảm bảo một mô hình tổng quát hóa được Điều này đã dẫn đến sự phát triển của các kiến trúc mạng sâu, vì chúng có khả năng học được các đặc trưng cấp cao và có khả năng tổng quát hóa dữ liệu, làm cho chúng trở thành xu hướng phổ biến trong cộng đồng nghiên cứu. Điểm nổi bật của mô hình ResNet

ResNet định hình một tiến bộ đáng kể trong lĩnh vực Học sâu bằng cách giải quyết vấn đề của việc huấn luyện các mô hình với hàng trăm layer một cách dễ dàng hơn Để hiểu rõ cách hoạt động của ResNet, ta cần tìm hiểu về những thách thức khi thêm nhiều layer vào quá trình huấn luyện Thách thức đầu tiên khi gia tăng sâu độ của mô hình là hiện tượng gradient biến mất hoặc phát nổ (vanishing/exploding) Điều này có thể được giải quyết thông qua việc áp dụng Batch Normalization, giúp chuẩn hóa đầu ra và đảm bảo rằng các hệ số không quá nhỏ hoặc quá lớn, từ đó giúp mô hình hội tụ dễ dàng hơn.

Thách thức thứ hai là sự suy giảm hiệu suất Khi mô hình trở nên sâu hơn, độ chính xác bắt đầu bão hòa hoặc thậm chí giảm đi Điều này không phải là vấn đề của việc mô hình quá tối quá mức (overfitting) Thay vào đó, vấn đề này bắt nguồn từ sự khó khăn trong việc huấn luyện mô hình khi thêm nhiều layer Mỗi lớp mới thêm vào có thể không đóng góp gì thêm (identity mapping), dẫn đến việc độ chính xác của mô hình không tăng lên, thậm chí có thể giảm đi ResNet đã được phát triển để giải quyết vấn đề này, giúp mô hình vượt qua sự suy giảm hiệu suất khi trở nên sâu hơn.

2.2.2 Hiện tượng Vanishing Gradient Ý tưởng chung dựa trên thuật toán backpropagation: đi từ output layer đến input layer, rồi tính toán độ dốc của hàm giá trị tương ứng cho từng thông số (weight) của mạng Gradient Descent sau đó được sử dụng để cập nhật các thông số đó.

Hình 2 14 Mối tương quan giữa độ sâu và hiệu suất mạng

Toàn bộ quá trình này sẽ được lặp lại cho đến khi các tham số của mạng hội tụ. Thông thường, chúng ta sẽ thiết lập một siêu tham số (số Epoch - số lần mà tập huấn luyện được duyệt qua một lần và trọng số được cập nhật) để xác định số lượng vòng lặp cho quá trình này Nếu số lượng vòng lặp quá ít, mạng có thể không đạt được kết quả tốt, trong khi nếu quá nhiều, thời gian huấn luyện sẽ tăng lên.

Tuy nhiên, trong thực tế, gradient thường giảm dần khi đi xuống các lớp thấp hơn Điều này dẫn đến hiện tượng mà các cập nhật được thực hiện bởi Gradient Descent không ảnh hưởng nhiều đến trọng số của các lớp đó và làm cho chúng không thể hội tụ, dẫn đến mạng không thể đạt được kết quả tốt.

Hình 2 15 Kiến trúc mạng Resnet

Trong ResNet, kết nối tắt đồng nhất được dùng để xuyên qua một hoặc nhiều lớp Các kết nối tắt giữ cho thông tin không bị mất bằng cách kết nối trực tiếp từ layer trước đó tới layer tiếp theo và bỏ qua một số lớp trung gian Các kiến trúc mạng CNN cơ bản như YOLOv2, YOLOv3 và YOLOv4 cũng thường sử dụng các kết nối tắt.

Trong khối tích chập của ResNet, bộ lọc thường được sử dụng có kích thước 3 x

3, tương tự như InceptionNet Khối tích chập bao gồm hai nhánh tích chập, trong đó một nhánh áp dụng tích chập 1 x 1 trước khi cộng trực tiếp vào nhánh còn lại.

Ngược lại, trong khối xác định của ResNet, không sử dụng tích chập 1 x 1, mà giá trị của nhánh đó được cộng trực tiếp vào nhánh còn lại.

Hình 2 16 Cấu trúc khối xác định

Giả sử chúng ta có một đầu vào x cho một khối cụ thể và cần ánh xạ đầu vào x thành một hàm F(x) Việc tìm ra một ánh xạ chuẩn xác tương đương với hàm F(x) là một nhiệm vụ khó khăn Tuy nhiên, nếu chúng ta thêm x vào đầu ra, tức là x + F(x), chúng ta có thể chuyển vấn đề về việc tham số hóa phần dư, nghĩa là cần tham số hóa F(x) Việc tìm ánh xạ cho phần dư thường dễ hơn vì chỉ cần tìm giá trị F(x) gần bằng 0 để thu được một ánh xạ chuẩn xác Tại mỗi khối cụ thể, chúng ta sử dụng một lớp kích hoạt ReLU sau mỗi tầng trọng số.

Xếp chồng các lớp không làm giảm hiệu suất của mạng Ta có thể đơn giản xếp trúc “Điều này giúp cho kiến trúc sâu ít nhất là không kém hơn các kiến trúc cạn Hơn nữa, với kiến trúc này, các lớp ở phía trên nhận được thông tin trực tiếp từ các lớp dưới, giúp chúng điều chỉnh trọng số hiệu quả hơn.

Thực tế, ResNet không phải là kiến trúc đầu tiên sử dụng các kết nối tắt Mạng Highway Network cũng sử dụng kiến trúc cổng với các kết nối tắt Các cổng được tham số hóa để kiểm soát lượng thông tin được truyền qua kết nối tắt Ý tưởng tương tự cũng được áp dụng trong LSTM (Long-short term memory), với các cổng được tham số hóa để kiểm soát lượng thông tin được truyền đến bước tiếp theo Do đó, ResNet có thể được coi là một trường hợp đặc biệt của mạng Highway Network.

Xây dựng mạng ResNet – 50

ResNet50 là một biến thể của mô hình ResNet có độ sâu 50 lớp (gồm 48 lớp Convolution cùng với 1 MaxPool và 1 lớp Average Pool Nó có 3,810^9 phép toán dấu chấm động Đây là một mô hình ResNet được sử dụng rộng rãi và chúng tôi đã khám phá sâu

Hình 2 17 Kiến trúc Resnet-50 Nội dung:

- Một tích chập với kích thước hạt nhân là (7*7) và 64 hạt nhân khác nhau, tất cả đều có bước sải kích thước 2 cho chúng ta 1 lớp.

- Tiếp theo, thấy tổng hợp tối đa cũng với kích thước sải chân là 2.

- Trong phép tích chập tiếp theo có một hạt nhân (1*1,64) theo sau là hạt nhân (3*3,64) và cuối cùng là một hạt nhân (1*1,256), Ba lớp này được lặp lại tổng cộng 3 lần, do đó, chúng ta có 9 lớp trong bước này.

- Tiếp theo, chúng ta thấy hạt nhân (1*1,128) sau đó là hạt nhân (3*3,128) và cuối cùng là hạt nhân (1*1,512) bước này được lặp lại 4 lần vì vậy cho chúng ta 12 lớp trong bước này.

- Sau đó, có một hạt nhân (1*1,256) và hai hạt nhân nữa với (3*3,256) và (1*1,1024) và điều này được lặp lại 6 lần cho chúng ta tổng cộng 18 lớp.

- Và sau đó lại là một hạt nhân (1*1,512) với hai nhân nữa là (3*3,512) và (1*1,2048) và điều này được lặp lại 3 lần cho chúng ta tổng cộng 9 lớp.

- Sau đó, chúng tôi thực hiện một nhóm trung bình và kết thúc nó bằng một lớp được kết nối đầy đủ có chứa 1000 nút và ở cuối một hàm softmax để chúng ta có 1 lớp. Mặc dù có kiến trúc khối kế thừa lại từ GoogleNet nhưng ResNet lại dễ tóm tắt và triển khai hơn rất nhiều vì kiến trúc cơ sở của nó chỉ gồm các khối tích chập và khối xác định Ta có thể đơn giản hóa kiến trúc của ResNet-50 như hình bên dưới:

Hình 2 18 Đơn giản hóa kiến trúc Resnet-50

Kết luận về ResNet

Thực tế, ResNet không phải là kiến trúc đầu tiên áp dụng các kết nối tắt, ví dụ như Highway Network Tuy nhiên, phương pháp của ResNet được coi là đơn giản hơn và tập trung vào việc cải thiện thông tin thông qua độ dốc của mạng.

Mặc dù kiến trúc chính của ResNet tương tự như của GoogLeNet, nhưng cấu trúc của ResNet đơn giản và dễ sửa đổi hơn Tất cả các yếu tố này đã dẫn đến việc sử dụng ResNet nhanh chóng và rộng rãi.

Trước khi huấn luyện ResNet, quan sát sự thay đổi trong hình dạng của đầu vào giữa các mô-đun khác nhau trong ResNet Như trong tất cả các kiến trúc trước đó, độ phân giải giảm trong khi số lượng kênh tăng lên, cho đến khi một lớp pooling trung bình toàn cầu tổng hợp tất cả các đặc trưng.

Thực nghiệm đã chứng minh rằng những kiến trúc này có thể huấn luyện mạng nơ-ron với độ sâu hàng nghìn lớp, và chúng nhanh chóng trở thành kiến trúc phổ biến nhất trong lĩnh vực Thị giác máy tính.

XÂY DỰNG MÔ HÌNH PHÂN LOẠI ẢNH

Mô tả bài toán

3.1.1 Bài toán phân loại hình ảnh vật nuôi

Trong lĩnh vực nghiên cứu về nhận dạng đối tượng, một bài toán quan trọng là phân loại các loài động vật trong hình ảnh Đây là một bài toán thú vị và có ứng dụng rộng rãi trong nhiều lĩnh vực, từ giám sát an ninh đến công nghiệp chăn nuôi Ngoài ra, nó cũng có thể được sử dụng để xây dựng các hình thức giải trí Trong lĩnh vực du lịch và tham quan, việc phân loại các loài động vật trong hình ảnh có thể được áp dụng để cung cấp trải nghiệm tương tác và giáo dục cho du khách.

3.1.2 Khó khăn của bài toán phân loại ảnh

“Các lớp động vật có thể có số lượng hình ảnh không cân đối Ví dụ, có thể có nhiều hình ảnh của chó và mèo hơn so với gà hoặc bò Điều này có thể gây ra hiện tượng mô hình được huấn luyện không công bằng, tức là nó có thể có xu hướng phân loại các lớp nhiều hơn so với các lớp khác.

Dữ liệu cũng có thể chứa nhiễu, tức là các hình ảnh không rõ ràng hoặc mờ, hoặc có nền phức tạp Điều này có thể làm cho việc phân loại trở nên khó khăn hơn. Ngoài ra, các động vật có thể có vẻ ngoài và đặc điểm vật lý khác nhau, điều này có thể gây ra sự biến dạng trong dữ liệu, làm cho việc nhận diện trở nên phức tạp.

Một vấn đề phổ biến khi xây dựng các mô hình học máy là overfitting, tức là mô hình học quá nhiều chi tiết từ dữ liệu huấn luyện và không thể tổng quát hóa tốt cho dữ liệu mới Điều này có thể xảy ra đặc biệt khi có ít dữ liệu huấn luyện hoặc khi dữ liệu có sự không cân đối lớn.”

3.1.3 Xây dựng phương pháp giải quyết bài toán

Sau khi tìm hiểu và nghiên cứu, tôi quyết định sử dụng mạng CNN và cấu trúc ResNet để giải quyết các vấn đề với nhiều loại dữ liệu vật nuôi khác nhau Kiến trúc mạng neural tích chập sẽ được sử dụng để trích xuất các đặc trưng phân biệt và dựa vào những đặc trưng đó để nhận dạng các giá trị đúng của mỗi loại vật nuôi.

Mô hình phân loại vật nuôi được dựa trên các bước sau:

- Ảnh vật nuôi sưu tầm

- Từ ảnh của vật nuôi đưa vào mạng ResNet để huấn luyện đặc trưng

- Kết quả thu được sẽ phân loại ra đó là con vật nào trong tạp dữ liệu

Xây dựng chương trình

Nguồn dữ liệu để đưa vào mô hình huấn luyện phân loại ảnh vật nuôi sẽ là các hình ảnh của các vật nuôi gồm 4 vật nuôi là: cat, chicken, crow, dog Bao gồm 2 tập dữ liệu là tập train với 10389 ảnh và tập test với 950 ảnh Sau khi thành công, em có thư mục data như sau:

Hình 3 1 Hình ảnh các tập dữ liệu

Em sẽ chạy file make_data.py em sẽ đưa dữ liệu ảnh vào những thư mục tương ứng, mục đích để gán nhãn cho dữ liệu, với mỗi class dữ liệu, em sẽ tạo từ 1600-3000 dữ liệu Dưới đây là một số dữ liệu ngẫu nhiên trong thư mục train và test từ mỗi class:

CLASS HÌNH ẢNH MINH HOẠ SỐ DỮ LIỆU

Hình 3 2 Hình ảnh dữ liệu class trong thư mục train

CLASS HÌNH ẢNH MINH HOẠ SỐ DỮ

Hình 3 3 Hình ảnh class trong thư mục test

Sau khi đã có dữ liệu, bước tiếp theo là xử lý dữ liệu Trong quá trình triển khai, thường xảy ra nhiều lỗi, và khi cần chạy lại tất cả các tệp trong thư mục, mỗi lần thực hiện việc này sẽ mất rất nhiều thời gian Do đó, tôi quyết định thực hiện chuyển đổi các nhãn thành mã one-hot.

Chuyển đổi các nhãn thành mã one-hot là một phương pháp phổ biến trong xử lý dữ liệu khi thực hiện phân loại đa lớp Mã one-hot là một biểu diễn số học của nhãn, trong đó mỗi nhãn được mã hóa thành một vector có độ dài bằng số lớp (số loài động vật trong trường hợp này), và chỉ có một phần tử của vector được đặt thành 1 tại vị trí tương ứng với nhãn của đối tượng, còn lại các phần tử khác đều là 0.

Khi đã chuyển đổi các nhãn thành mã one-hot, bạn có thể lưu trữ mã one-hot của mỗi ảnh trong tập dữ liệu và sử dụng chúng để huấn luyện mô hình phân loại Điều này giúp tiết kiệm thời gian và giảm thiểu lỗi trong quá trình xử lý dữ liệu.

Hình 3 4 Hình ảnh one hot sau khi chuyển nhãn

Sau khi chạy 1 lần chương trình sẽ tự tạo ra file pix.data Để thực hiện việc lưu trữ dữ liệu đã xử lý vào một file và sau đó sử dụng file đó mà không cần chạy lại tất cả các bước xử lý dữ liệu, Việc này giúp tiết kiệm thời gian hơn rất nhiều:

Hình 3 5 Hình ảnh file pix.data sau khi xử lý dữ liệu

Tăng cường dữ liệu trong quá trình huấn luyện mô hình mang lại một số lợi ích quan trọng:

- Tăng tính tổng quát hóa: Bằng cách áp dụng các biến đổi hình ảnh ngẫu nhiên như xoay, phóng to, thu nhỏ, lật ngang/dọc, mô hình sẽ học được các đặc điểm đa dạng của đối tượng mục tiêu từ các biến thể của ảnh Điều này giúp cải thiện khả năng tổng quát hóa của mô hình, tức là khả năng phân loại các ảnh mới mà mô hình chưa từng thấy trước đó.

- Ngăn chặn overfitting: Tăng cường dữ liệu có thể giúp ngăn chặn hiện tượng overfitting, tức là mô hình quá tập trung vào dữ liệu huấn luyện và không thể tổng quát hóa tốt cho dữ liệu mới Bằng cách tạo ra các biến thể của dữ liệu huấn luyện, mô hình sẽ không thể “nhớ” được mỗi chi tiết của dữ liệu huấn luyện và sẽ học được các đặc điểm chung hơn.

- Mở rộng tập dữ liệu: Thông qua việc tạo ra các biến thể của dữ liệu huấn luyện, bạn có thể mở rộng tập dữ liệu mà không cần thu thập thêm dữ liệu mới Điều này đặc biệt hữu ích khi tập dữ liệu ban đầu không đủ lớn hoặc đa dạng.

- Tăng hiệu suất của mô hình: Một mô hình được huấn luyện trên dữ liệu được tăng cường có khả năng tổng quát hóa tốt hơn và có thể đạt được hiệu suất cao hơn trên dữ liệu mới so với một mô hình được huấn luyện trên dữ liệu gốc mà không có tăng cường.

Vấn đề mất cân đối dữ liệu trong tập huấn luyện có thể dẫn đến hiện tượng overfitting, khiến mô hình tập trung quá nhiều vào dữ liệu ít và giống nhau Điều này có thể khiến việc huấn luyện đạt độ chính xác cao nhưng dự đoán lại không chính xác khi áp dụng cho dữ liệu mới Vì vậy, em sẽ tăng cường dữ liệu bằng hàm

ImageDataGenerator trainAug = ImageDataGenerator(rotation_range0, zoom_range=0.15, width_shift_range=0.2, height_shift_range=0.2,hear_range=0.15, horizontal_flip=True,fill_mode="nearest")

Hình 3 6 Hình ảnh sau khi tăng cường dữ liệu

Với cấu trúc Resnet đã tìm hiểu ở chương 2 và yêu cầu phù hợp với bài toán em sẽ sử dụng Resnet50 Để phù hợp với bài toán phân loại ảnh hơn, em sẽ điều chỉnh mô hình, tái sử dụng lại phần màu đỏ là trích chọn đặc trưng ảnh của mạng Resnet và sửa đổi lại lớpFC.

Hình 3 7 Mô hình mạng Resnet sau khi tinh chỉnh

3.2.5 Khởi tạo mạng và tạo lớp ảnh đầu vào

Em sẽ sử dụng hàm Input () với đầu vào là 248, 248, 3 và đồng thời lấy output của Resnet làm input của các lớp FC model_resnet_conv = ResNet50(weights="imagenet", include_topse, input_tensor=Input(shape=(224, 224, 3))) output_resnet_conv = model_resnet_conv.output

3.2.6 Khởi tạo các lớp FC output_resnet_conv = AveragePooling2D(pool_size=(7, 7))

(output_resnet_conv) output_resnet_conv = Flatten(name="flatten")(output_resnet_conv) output_resnet_conv = Dense(512, activation="relu")(output_resnet_conv) output_resnet_conv = Dropout(0.5)(output_resnet_conv) output_resnet_conv = Dense(7, activation="softmax")(output_resnet_conv)

Sau khi đã xây dựng mạng Resnet, em bắt đầu đưa dữ liệu vào để train bằng hàm model.fit_generator và đồng thời tạo điểm lưu để lưu các trọng số tốt sau mỗi epoch

Chương trình kiểm tra kết quả huấn luyện

Chương trình nhân dạng được viết trong file predict.py, trong chương trình này em đã tạo ra một giao diện để chọn ảnh từ máy tính và kiểm tra root = tk.Tk() root.title(“Image Classifier”) root.geometry(“800x800”) browse_button = tk.Button(root, text=“Select Image”, command=classify_image) browse_button.pack()

Tiếp theo chúng ta sẽ sử dung mô hình đã huấn luyện file resnetmodel.h5 để tiến hành phân loại ảnh

Kết quả phân loại ảnh:

Hình 3 9 Kết quả phân loại cat

Hình 3 10 Kết quả phân loại cow

Hình 3 11 Kết quả phân loại chicken

Hình 3 12 Kết quả phân loại dog

Ngày đăng: 28/07/2024, 22:48

HÌNH ẢNH LIÊN QUAN

Hình 2. 1. Mối quan hệ giữa Dl, ML và AI - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 2. 1. Mối quan hệ giữa Dl, ML và AI (Trang 10)
Hình 2. 2. Tô màu ảnh đen trắng dựa trên Deep Learning - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 2. 2. Tô màu ảnh đen trắng dựa trên Deep Learning (Trang 13)
Hình 1. 1.  Ảnh kiến trúc của mạng nơ-ron chuyên sâu - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 1. 1. Ảnh kiến trúc của mạng nơ-ron chuyên sâu (Trang 20)
Hình 2. 3. Mảng ma trận RGB 6x6x3 - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 2. 3. Mảng ma trận RGB 6x6x3 (Trang 23)
Hình 2. 5. Ma trận bộ lọc 3x3, ma trận 5x5 - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 2. 5. Ma trận bộ lọc 3x3, ma trận 5x5 (Trang 25)
Hình 2. 6. Mô tả bộ lọc qua ma trận ban đầu - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 2. 6. Mô tả bộ lọc qua ma trận ban đầu (Trang 26)
Hình 2. 8. Lớp tích chập với stride là 2 Hàm phi tuyến – ReLU - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 2. 8. Lớp tích chập với stride là 2 Hàm phi tuyến – ReLU (Trang 27)
Hình 2. 9. Phép nhân tích chập - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 2. 9. Phép nhân tích chập (Trang 28)
Hình 2. 11. Giảm kích thước ảnh và đầu ra tại các lớp tiếp theo - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 2. 11. Giảm kích thước ảnh và đầu ra tại các lớp tiếp theo (Trang 30)
Hình 2. 10. Pooling layer - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 2. 10. Pooling layer (Trang 30)
Hình 2. 12. Max pooling và average pooling Fully connected layer - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 2. 12. Max pooling và average pooling Fully connected layer (Trang 31)
Hình 2. 13. Mô tả lớp làm phẳng (Flattening) - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 2. 13. Mô tả lớp làm phẳng (Flattening) (Trang 31)
Hình 2. 14. Mối tương quan giữa độ sâu và hiệu suất mạng - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 2. 14. Mối tương quan giữa độ sâu và hiệu suất mạng (Trang 34)
Hình 2. 15. Kiến trúc mạng Resnet - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 2. 15. Kiến trúc mạng Resnet (Trang 35)
Hình 2. 17. Kiến trúc Resnet-50 Nội dung: - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 2. 17. Kiến trúc Resnet-50 Nội dung: (Trang 36)
Hình 2. 18. Đơn giản hóa kiến trúc Resnet-50 - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 2. 18. Đơn giản hóa kiến trúc Resnet-50 (Trang 37)
Hình 3. 1. Hình ảnh các tập dữ liệu - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 3. 1. Hình ảnh các tập dữ liệu (Trang 40)
Hình 3. 2. Hình ảnh dữ liệu class trong thư mục train - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 3. 2. Hình ảnh dữ liệu class trong thư mục train (Trang 43)
Hình 3. 3. Hình ảnh class trong thư mục test - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 3. 3. Hình ảnh class trong thư mục test (Trang 44)
Hình 3. 4. Hình ảnh one hot sau khi chuyển nhãn - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 3. 4. Hình ảnh one hot sau khi chuyển nhãn (Trang 45)
Hình 3. 5. Hình ảnh file pix.data sau khi xử lý dữ liệu - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 3. 5. Hình ảnh file pix.data sau khi xử lý dữ liệu (Trang 45)
Hình 3. 6. Hình ảnh sau khi tăng cường dữ liệu - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 3. 6. Hình ảnh sau khi tăng cường dữ liệu (Trang 47)
Hình 3. 7. Mô hình mạng Resnet sau khi tinh chỉnh - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 3. 7. Mô hình mạng Resnet sau khi tinh chỉnh (Trang 49)
Hình 3. 8. Kết quả huấn luyện - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 3. 8. Kết quả huấn luyện (Trang 51)
Hình 3. 9. Kết quả phân loại cat - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 3. 9. Kết quả phân loại cat (Trang 52)
Hình 3. 10. Kết quả phân loại cow - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 3. 10. Kết quả phân loại cow (Trang 53)
Hình 3. 11. Kết quả phân loại chicken - Nghiên cứu sử dụng mạng học sâu trong bài toán phân loại Ảnh Đồ Án tốt nghiệp (2)
Hình 3. 11. Kết quả phân loại chicken (Trang 54)
w