Các kiến trúc mạng hỗ trợ phân loại dữ liệu ảnh 

kiến trúc mạng

Việc tìm hiểu các kiến trúc mạng khác nhau hỗ trợ giải quyết bài toán phân loại hình ảnh, trên thực tế, không hề dễ dàng. Nhằm góp phần giúp bạn tháo gỡ khó khăn này, bài viết dưới đây sẽ phân tích chi tiết về một số kiến trúc có sẵn trong thư viện Keras, bao gồm cả ưu điểm và hạn chế của chúng. Hãy đọc đến cuối bài để không bỏ qua bảng so sánh kết quả của các kiến trúc này.

Tổng quan về phân loại hình ảnh

Mặc dù mỗi nhà nghiên cứu thị giác máy tính sẽ có cách tiếp cận khác nhau, song nhìn chung, các công việc chính khi xử lý một bài toán phân loại ảnh bao gồm: tiền xử lý dữ liệu, phương pháp tăng cường dữ liệu, cơ chế đào tạo tối ưu mô hình (optimizer) và sử dụng lớp cuối của mô hình.

  • Tiền xử lý

Thông thường, giá trị pixel trung bình (mean) được tính trên tập huấn luyện và được trừ bởi các pixel trong ảnh. Lưu ý, Keras cung cấp các chức năng tiền xử lý khác nhau cho từng mô hình thị giác máy tính.

  • Tăng cường dữ liệu

Bộ dữ liệu phân loại ảnh thường rất lớn. Tuy nhiên, tăng cường dữ liệu hay được sử dụng để gia tăng tính tổng quát hóa cho mô hình. Điển hình, một số biến đổi bao gồm: cắt ngẫu nhiên hình ảnh đã thay đổi tỉ lệ hoặc tiến hành thay đổi độ sáng và màu RGB. Có nhiều thuật toán khác nhau thực hiện việc đổi tỉ lệ và cắt ảnh (ví dụ single scale vs. multi-scale training). Sử các thuật toán cắt ảnh trong quá trình kiểm nghiệm mô hình (test time)  cũng thường xuyên được sử dụng, mặc dù phương pháp này thường tiêu tốn nguồn lực tính toán và cải thiện chất lượng mô hình không quá nhiều. 

Lưu ý rằng mục tiêu của việc thay đổi tỷ lệ và cắt xén ngẫu nhiên là để tìm hiểu các đặc điểm quan trọng của từng đối tượng ở các tỷ lệ và vị trí khác nhau. Thư viện Keras không thực hiện tất cả các kỹ thuật tăng cường dữ liệu này ngoài luồng, nhưng chúng có thể dễ dàng thực hiện thông qua chức năng tiền xử lý của các mô-đun ImageDataGenerator. 

Ví dụ về các cách cắt xén khác nhau đối với cùng một hình ảnh. Nguồn ảnh: nghiên cứu của Andrew Howard
  • Cơ chế đào tạo

Các mô hình thường được đào tạo với kích thước mỗi bộ (batch size) là 256, sử dụng song song nhiều gpu, cũng có sẵn trong keras. SGD với động lượng hoặc RMSProp thường được sử dụng làm kỹ thuật tối ưu hóa. Quá trình thay đổi tốc độ học tập (Learning rate schedule) thường khá đơn giản: giảm tốc độ học tập khi giá trị hàm lỗi  và độ chính xác của tập đánh giá (validation loss – accuracy) có xu hướng đi ngang, hoặc giảm tốc độ học tập ở một khoảng thời gian cố định. Với hàm ‘ReduceLROnPlateau’ trong keras, bạn có thể dễ dàng thực hiện điều này.

Một ví dụ về quy trình đào tạo. Nguồn ảnh: Towards Data Science
  • Lớp cuối

Lớp cuối cùng trong mạng phân loại ảnh theo truyền thống là lớp được kết nối đầy đủ (fully connected). Các lớp này có lượng tham số khổng lồ NxM để đi từ N đến M các nút của lớp ẩn. Ngày nay, các lớp này đã được thay thế bằng các lớp tính trung bình (average pooling) hoặc lớp tính cực trị địa phương (max pooling) nhằm giảm số lượng tham số và thời gian tính toán. Khi tinh chỉnh các mạng đã được đào tạo trước trong keras, lưu ý quan trọng là cần giới hạn số lượng tham số được thêm vào.

Một số kiến trúc Keras hỗ trợ phân loại ảnh

  • VGGNet

Được xuất bản lần đầu vào năm 2014 bởi Karen Simonyan và Andrew Zisserman, VGGNet đã chỉ ra rằng xếp chồng nhiều lớp giúp đạt được hiệu suất tốt trong thị giác máy tính. Các mạng VGGNet chứa 16 hoặc 19 lớp và chủ yếu bao gồm các phép tích chập 3×3 nhỏ và phép toán gộp 2×2 (pooling).

Đóng góp chính của các tác giả là chỉ ra rằng việc xếp chồng nhiều bộ lọc nhỏ mà không gộp chung có thể làm tăng độ sâu biểu diễn của mạng trong khi hạn chế số lượng tham số. Bằng cách xếp chồng lên nhau v.d. ba phép chập 3 × 3 thay vì sử dụng một lớp 7 × 7 duy nhất, một số hạn chế đã được khắc phục. Đầu tiên, ba hàm phi tuyến tính được kết hợp thay vì một hàm duy nhất, điều này làm cho hàm quyết định trở nên dễ dàng phân biệt và biểu diễn hơn. Thứ hai, số lượng tham số giảm 81% trong khi lớp biễu diễn (receptive field) vẫn giữ nguyên. Do đó, làm việc với các bộ lọc nhỏ hơn cũng hoạt động như một bộ điều chỉnh và cải thiện hiệu quả của các bộ lọc chập khác nhau.

Một nhược điểm của VGGNet là nó tiêu tốn nhiều hơn trong việc đánh giá so với các mạng nông, sử dụng nhiều bộ nhớ và tham số (140M). VGG có sẵn trên keras với các trọng số được đào tạo trước, cả hai biến thể 16 và 19 lớp.

  • ResNet

Kiến trúc ResNet được phát triển bởi Kaiming He và cộng sự, nhằm đào tạo các mạng có độ sâu lớn hơn nữa. Nhóm tác giả lưu ý rằng việc tăng độ sâu mạng dẫn đến tăng giá trị lỗi của tập training, cho thấy các vấn đề hội tụ của mô hình do gradient (exploding/vanishing gradients).

Nguồn ảnh: báo ResNet

Đóng góp chính của ResNet là việc bổ sung các kết nối tắt vào kiến ​​trúc mạng thần kinh, sử dụng chuẩn hóa bộ (batch normalization) và loại bỏ các lớp được kết nối đầy đủ ở cuối mạng.

Nguồn ảnh: báo ResNet

Bằng cách thêm các kết nối tắt vào mạng, chức năng mặc định của một lớp mạng sẽ trở thành một hàm đồng nhất (Identity function). Bất kỳ thông tin mới nào mà bộ lọc học, đều có thể sử dụng phép toán trừ hoặc cộng với biểu diễn nền tảng và do đó, việc tối ưu hóa residual mapping (ánh xạ dư) sẽ dễ dàng hơn. Kết nối tắt không làm tăng số lượng tham số, nhưng dẫn đến đào tạo ổn định hơn và tăng hiệu suất đáng kể nhờ có các mạng sâu hơn (ví dụ: mạng có độ sâu 34, 50, 101 và 152). Lưu ý rằng các phép tích chập 1×1 được sử dụng để ánh xạ đầu vào của các lớp với đầu ra của nó.

Ngoài các kết nối tắt, chuẩn hóa hàng loạt (batch normalization) đã được sử dụng sau mỗi tích chập và trước hàm kích hoạt. Cuối cùng, các lớp kết nối đầy đủ đã bị loại bỏ và thay vào đó, một lớp gộp trung bình (average pooling layer) được sử dụng để giảm số lượng tham số. 

  • GoogLeNet 

Bài báo GoogLeNet được xuất bản cùng thời điểm với bài báo ResNet nhưng giới thiệu những cải tiến khác nhau. Hai bài báo trước tập trung vào việc tăng độ sâu đại diện của mạng lưới phân loại.

Tuy nhiên, với GoogLeNet, các tác giả cố gắng mở rộng mạng lưới (lên đến 22 lớp) nhưng đồng thời họ hướng đến việc giảm số lượng tham số và sức mạnh tính toán cần thiết. Kiến trúc Inception ban đầu do Google xuất bản và tập trung vào việc áp dụng CNN trong bối cảnh của dữ liệu lớn cũng như cài đặt trên thiết bị di động. Kiến trúc chỉ gồm các lớp tích chập và bao gồm các mô-đun Inception. Mục tiêu của các mô-đun này là tăng khả năng học tập và sức mạnh tổng hợp của bộ lọc tích hợp bằng cách xây dựng một bộ lọc phức tạp bao gồm nhiều khối xây dựng (ví dụ: một mạng trong mạng – Inception).

Một ví dụ về mô-đun Inception. Các chập 1×1 được thực hiện để giảm kích thước của đầu vào/ đầu ra (Hình ảnh lấy từ bài báo GoogLeNet)

Ngoài các mô-đun Inception, nhóm tác giả cũng sử dụng các bộ phân loại bổ trợ để thúc đẩy độ hội tụ ổn định hơn và tốt hơn. Ý tưởng của bộ phân loại bổ trợ là một số biểu diễn hình ảnh khác nhau được sử dụng để thực hiện phân loại (hộp màu vàng). Kết quả là, gradients được tính toán ở các lớp khác nhau trong mô hình, sau đó có thể được sử dụng để tối ưu hóa việc đào tạo.

Biểu diễn y trực quan về kiến ​​trúc GoogLeNet. Các hộp màu vàng cho biết sự hiện diện của các bộ phân loại bổ trợ.
  • Inceptionv3

Với kiến ​​trúc Inceptionv3, một số cải tiến được kết hợp. Trong Inceptionv3, trọng tâm chính là sử dụng lại một số ý tưởng ban đầu GoogLeNet và VGGNet, tức là sử dụng mô-đun Inception và thể hiện các bộ lọc lớn hiệu quả hơn với một loạt các lớp tích chập nhỏ hơn. Ngoài các tích chập nhỏ, các tác giả cũng thử nghiệm với các tích chập không đối xứng (ví dụ: thay nxn bởi nx1 và 1xn thay vì nhiều bộ lọc 2×2 và 3×3).

Ví dụ về bộ lọc 3×3 và bộ lọc 1×1, thay thế hiệu quả bộ lọc 5×5 (Hình ảnh lấy từ bài báo Inceptionv3).

Các tác giả đã cải thiện độ chính quy của mạng bằng cách thực hiện chuẩn hóa hàng loạt và label-smoothing. Label-smoothing là thực hành gán cho mỗi lớp một trọng số nào đó, thay vì gán cho nhãn đúng trọng số đầy đủ. Cách làm này đem lại khả năng khái quát hóa tốt hơn, tương tự như sử dụng chính quy L2.

Rất nhiều nỗ lực đã được thực hiện để đảm bảo rằng mô hình sẽ hoạt động tốt trên cả hình ảnh có độ phân giải cao và thấp, điều này được kích hoạt bởi các mô-đun Inception phân tích các biểu diễn hình ảnh ở các tỷ lệ khác nhau. Kết quả là, khi mạng Inception được sử dụng trong khung phát hiện đối tượng, chúng thực hiện tốt việc phân loại các đối tượng nhỏ và có độ phân giải thấp.

  • NASNet

Kiến trúc phân loại hình ảnh cuối cùng là NASNet, được xây dựng bằng cách sử dụng khung Neural Architecture Search (NAS). Mục tiêu của NAS là sử dụng phương pháp tiếp cận thông minh dựa trên dữ liệu để xây dựng kiến ​​trúc mạng thay vì dùng trực giác và thử nghiệm. 

Bài báo Inception đã được chỉ ra rằng sự kết hợp phức tạp của các bộ lọc trong một ‘ô’ có thể cải thiện đáng kể kết quả. Khung NAS định nghĩa việc xây dựng một ô như vậy là một quá trình tối ưu hóa, sau đó xếp chồng nhiều bản sao của ô tốt nhất để xây dựng một mạng lớn.

Cuối cùng, hai ô khác nhau được xây dựng và sử dụng để đào tạo mô hình đầy đủ.

Kết quả

Bảng dưới đây được lấy từ Keras, cung cấp một cái nhìn tổng quan tốt về kết quả của các mạng trên. Lưu ý rằng VGG nổi bật với số lượng thông số khổng lồ, trong khi Resnet50 và Inceptionv3 nổi bật với độ sâu mạng ấn tượng. Tại thời điểm viết bài, NASnet (không có trong bảng) đạt được hiệu suất tốt nhất với độ chính xác 82,7% top-1 và 96,2% top-5 trên ImageNet.

Nguồn ảnh: Towards Data Science
Bình luận

Địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu

Bài viết liên quan

    Cảm ơn bạn đã quan tâm và ủng hộ.

    File hiện tại không thể tải xuống
    Vui lòng liên hệ hỗ trợ.

    VinOCR eKYC
    Chọn ảnh từ máy của bạn

    Chọn ảnh demo dưới đây hoặc tải ảnh lên từ máy của bạn

    Tải lên ảnh CMND/CCCD/Hộ chiếu,...

    your image
    Chọn ảnh khác
    Tiến hành xử lý
    Thông tin đã được xử lý
    Mức độ tin cậy: 0%
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    Xác thực thông tin thẻ CMND/CCCD

    Vui lòng sử dụng giấy tờ thật. Hãy đảm bảo ảnh chụp không bị mờ hoặc bóng, thông tin hiển thị rõ ràng, dễ đọc.

    your image
    Chọn ảnh khác

    Ảnh mặt trước CMND/CCCD

    your image
    Chọn ảnh khác

    Ảnh mặt sau CMND/CCCD

    your image
    Chọn ảnh khác

    Ảnh chân dung

    This site is registered on wpml.org as a development site.