Xin chào, trong nội dung bài viết này họ sẽ mày mò về bộ thể hiện hình ảnh Histogram of Oriented Gradients (HOG) và những ứng dụng của nó.

Bạn đang xem: Histogram of oriented gradients là gì

Bạn sẽ xem: Histogram of oriented gradients là gì

HIỂU VỀ HISTOGRAM OF ORIENTED GRADIENTS

Histogram of Oriented Gradients được sử dụng đa phần cho việc Object Detection, dường như HOG cũng là bộ diễn tả kết cấu, bản thiết kế của đối tượng người tiêu dùng khá táo tợn mẽ.

Bản hóa học của HOG là quy mô hóa đối tượng người sử dụng bằng sự phân bố cường độ gradient vào từng vùng điểm ảnh của bức ảnh. HOG descriptor gồm 3 tham số quan liêu trọng, gồm: orientations, pixel_per_cell với cells_per_block, họ sẽ kể đến các thông số này sau.

Để tính toán HOG cần thực hiện 4 bước sau:

Bước 1: chuẩn hóa hình ảnh (normalizing the image)

Bước này đã giúp cải thiện hiệu suất của HOG descriptor.

Bước 2: tính toán gradients

Đầu tiên họ sẽ giám sát gradient của bức ảnh theo cả 2 trục X, Y. Tiếp đến tính Gradient Magnitude và Gradient Orientation (tham khảo bài viết này).

Bước 3: đo lường và thống kê histogram mang đến từng vùng của bức ảnh

Chúng ta sẽ phân tách bức hình ảnh thành những vùng chữ nhật bằng nhau, được điện thoại tư vấn là cells. Mỗi cell sẽ là một trong những vùng hình hình ảnh với số lượng px được lao lý trước. Ví dụ, bọn họ có một bức hình ảnh kích thước 640×480 pixels, nếu như giá trị pixel_per_cell là 80×80 thì bọn họ sẽ có tổng số (640/80)x(480/80) = 8×6 = 48 cells, tuy vậy nếu giá trị pixel_per_cell là 40×40 thì số cell tổng số sẽ là (640/40)x(480/40) = 16×12 = 192 cells, xem Figure 1.


*

*

Figure 1 – phân loại bức ảnh thành những cells

Sau khi đã phân tách bức ảnh thành những cells, chúng ta tính HOG cho từng cell sử dụng những giá trị Gradient Magnitude cùng Gradient Orientation đã có ở bước 2.

Mỗi pixel trong cell sẽ áp dụng giá trị Gradient Magnitude của mình như một trọng số khi đo lường histogram.

Figure 2 – Histogram of Oriented Gradients

Bước 4: chuẩn hóa theo khối

Việc chuẩn chỉnh hóa theo từng khối sẽ nâng cấp bộ descriptor trước sự chuyển đổi ánh sáng cùng độ tương phản. Để làm cho được việc này chúng ta sẽ nhóm các cells lại thành từng block và các block này hoàn toàn có thể overlap (chồng lấn nhau). Thông số cells_per_block sẽ biện pháp số cell gồm trong một block. Thông thường cells_per_block sẽ có được giá trị là 2×2 hoặc 3×3 để cho hiệu năng tốt nhất, coi Figure 3.

Quay lại ví dụ phía trên, trả sử bọn họ có một bức ảnh kích thước 640×480, quý giá pixels_per_cell là 80×80 và bọn họ sẽ tất cả 8×6 = 48 cells. Nếu quý giá cells_per_block là 2×2 thì họ sẽ có tổng số (8-1)x(6-1) = 7×5 = 35 blocks. Nếu quý giá cells_per_block là 3×3 thì bọn họ sẽ có tổng số (8-2)x(6-2) = 6×4 = 24 blocks.

Figure 3 – Nhóm các cells thành block

Sau khi đã nhóm các cells vào từng block, bọn họ sẽ ghép (concatenate) histogram của từng cell trong block cùng nhau và triển khai L1 hoặc L2 normalizing. Lặp lại tựa như với tất cả các block. Cuối cùng histogram của tất cả các block sẽ được ghép lại cùng với nhau tạo nên thành Feature Vector.

Quan trọng: khi đo lường và tính toán HOG, những bức hình ảnh sẽ được phân thành các blocks cùng cells, cho nên cần bảo đảm an toàn rằng toàn bộ các bức ảnh được dùng làm train cùng test cần được gửi về một kích cỡ duy nhất. Khi sử dụng cùng các tham số orientations, pixel_per_cell cùng cells_per_block cho các bức ảnh có kích cỡ khác nhau, chúng sẽ sinh ra số lượng cell cùng block không giống nhau, vấn đề này dẫn đến các HOG Feature Vectors sẽ sở hữu kích thước khác biệt và công dụng sẽ không như họ mong muốn.

Xem thêm: Sau Mm Là Gì? Hĩa Là Gì? Viết Tắt Của Từ Gì? Viết Tắt Của Từ Gì

ÁP DỤNG HISTOGRAM OF ORIENTED GRADIENT

Install:

pip3 install -U scikit-image

Function:

hog, hogImage = skimage.feature.hog(image, orientations=9, pixels_per_cell=(8, 8), cells_per_block=(3, 3), transform_sqrt=False, block_norm=None,visualize=False)

Trong đó:

hog – Histogram of Oriented Gradient thống kê giám sát được, 1-D array;hogImage – 2-D array màn trình diễn HOG image;image – bức hình ảnh cần giám sát và đo lường HOG;orientations – số bins của histogram, khoác định là 9;pixels_per_cell – số px có vào một cell, khoác định là 8×8;cells_per_block – số cell bao gồm trong một block, mang định là 3×3;transform_sqrt – thực hiện chuẩn chỉnh hóa hình ảnh trước khi đo lường HOG, khoác định là False;block_norm – thực hiện chuẩn hóa theo khối, gồm những method sau: ‘L1’, ‘L1-sqrt’, ‘L2’, ‘L2-Hys’; mang định là None;visualize – (>= v0.16) nếu như visualize=True thì kết quả trả về của function đã là hog và hogImage; khoác định là False; (

Bây giờ chúng ta sẽ áp dụng HOG với Machine Learning để nhận ra logo của một số trong những hãng ô tô nổi tiếng nhé.

Training mix của họ sẽ nằm trong thư mục có tên training, gồm các bức hình ảnh sau: