7.2. ML đã thay đổi điều gì¶
Module image chứa một số phương thức phát hiện kế thừa -- find_features() để phát hiện khuôn mặt bằng Haar-cascade, find_eye() cho bộ tìm con ngươi cố định, find_hog() cho các tóm tắt hướng gradient, các đường dẫn find_keypoints() và find_lbp() cho các điểm đặc trưng tùy ý. Tất cả chúng vẫn hoạt động; tất cả chúng đã bị thay thế bởi pipeline học máy.
7.2.1. Sự phân chia cổ điển: tóm tắt thiết kế thủ công, quyết định được học¶
Một pipeline thị giác cổ điển là quá trình hai bước. Bước đầu tiên chuyển đổi các điểm ảnh thô thành một tập số nhỏ gọn được chọn để tóm tắt nội dung trong ảnh -- không phải là các giá trị điểm ảnh mà là mô tả ngắn hơn về các mẫu xuất hiện ở đâu. Bước thứ hai lấy bản tóm tắt đó và đưa ra quyết định: khuôn mặt hay không, đối tượng này hay đối tượng kia, cùng mục tiêu hay khác nhau.
Sự phân chia quan trọng vì hai bước có tác giả khác nhau. Bước đầu tiên được viết bởi con người. Ai đó đã quyết định rằng sự chênh lệch độ sáng giữa hai hình chữ nhật cụ thể là tóm tắt tốt của vùng mắt, rằng hướng cạnh chiếm ưu thế trong mỗi ô của một lưới là tóm tắt tốt của đường viền người đứng, rằng mẫu sáng/tối xung quanh mỗi điểm ảnh là tóm tắt tốt của kết cấu cục bộ. Mỗi lựa chọn đó là một thuật toán viết tay -- được viết, gỡ lỗi và công bố. Các phương thức kế thừa ở trên đều là các tóm tắt loại này đã trở thành công cụ tiêu chuẩn:
find_features()tóm tắt một cửa sổ của ảnh bằng cách cộng độ sáng bên trong một số hình chữ nhật và so sánh các tổng. Bố cục hình chữ nhật được chọn vì khuôn mặt người thể hiện sự tương phản sáng-tối đáng tin cậy: lông mày so với má, hốc mắt so với trán, mũi so với da xung quanh.find_hog()tóm tắt một ảnh bằng cách di chuyển qua một lưới các ô nhỏ và ghi lại hướng cạnh chiếm ưu thế trong mỗi ô. Lưới được chọn vì đường viền của người đứng tạo ra một mẫu hướng cạnh có thể nhận ra bất kể quần áo hay ánh sáng.find_lbp()tóm tắt vùng lân cận của mỗi điểm ảnh bằng cách mã hóa các điểm ảnh xung quanh nào sáng hơn và tối hơn. Cách mã hóa được chọn vì các mẫu sáng hơn / tối hơn này nắm bắt kết cấu của một bề mặt độc lập với ánh sáng tổng thể.find_keypoints()tìm các điểm góc trong ảnh và mô tả vùng xung quanh mỗi góc theo cách không thay đổi khi góc bị xoay. Phương án góc-và-xoay được chọn vì các góc tương tự xuất hiện lại khi một cảnh được nhìn từ góc độ khác.
Khi một bản tóm tắt đã được viết thủ công, một bước học nhỏ phía trên nó có thể kết hợp các con số thành một quyết định. Thuật toán phát hiện khuôn mặt gắn thêm một bước học vào tóm tắt chênh lệch hình chữ nhật, huấn luyện nó trên các ảnh khuôn mặt và không phải khuôn mặt có nhãn để học tổ hợp chênh lệch nào biểu thị khuôn mặt. Tóm tắt hướng cạnh đưa vào bước học được huấn luyện trên các ảnh người và không phải người có nhãn. Các bộ mô tả góc đưa vào bước khớp học cách cân bằng trọng số cho mỗi góc. Mỗi bước thứ hai này là một thuật toán học -- nhỏ theo tiêu chuẩn hiện đại, nhưng là thuật toán học.
Sự phân chia đóng góp là điều quan trọng. Con người đóng góp bản tóm tắt. Máy học tổ hợp. Thêm một mục tiêu mới có nghĩa là viết một bản tóm tắt mới.
7.2.2. Điều mà mạng nơ-ron thay đổi¶
Một mạng nơ-ron xóa bỏ sự phân chia. Các lớp đầu tiên của mạng thực hiện công việc tóm tắt mà các thuật toán viết tay từng làm -- phát hiện cạnh, góc, thanh định hướng, kết cấu, chính xác những thứ mà các phương thức kế thừa được liệt kê ở trên được điều chỉnh để phát hiện -- nhưng chúng không được viết thủ công. Chúng được học từ cùng dữ liệu huấn luyện mà bước quyết định được học từ đó, trong một lần huấn luyện đơn điều chỉnh cả hai nửa của mạng cùng một lúc. Các lớp sâu hơn thực hiện việc kết hợp mà bước học nhỏ phía trên các bản tóm tắt viết tay từng làm, cũng được học, trong cùng một lần.
Sự thay đổi về người thiết kế là hoàn toàn:
Con người thiết kế đầu vào -- các khung hình được chụp với kích thước và định dạng nhất định.
Con người thiết kế đầu ra -- bố cục của tensor kết quả (một điểm số cho mỗi lớp để phân loại, danh sách các hộp để phát hiện, lưới điểm đặc trưng cho mốc).
Con người cung cấp dữ liệu huấn luyện có nhãn -- đủ ví dụ về mục tiêu và đủ ví dụ về các không phải mục tiêu để quá trình huấn luyện có thể học từ đó.
Mọi thứ giữa đầu vào và đầu ra được tạo ra bởi quá trình huấn luyện. Không có bước viết bản tóm tắt riêng biệt nào. Các lớp đầu ổn định thành các bộ phát hiện cạnh và kết cấu không phải vì ai đó đã viết chúng như vậy, mà vì phát hiện cạnh và kết cấu là điều làm cho các dự đoán của mạng khớp với các nhãn. Các lớp sâu hơn ổn định thành các bộ phát hiện hình dạng và đối tượng vì lý do tương tự. Cả hai nửa được huấn luyện cùng nhau, cho phép các bản tóm tắt mà mỗi lớp tạo ra là chính xác các bản tóm tắt mà lớp tiếp theo cần -- không phải các bản tóm tắt chung chung mà một pipeline viết tay phải chấp nhận.
7.2.3. Kết hợp với module image¶
Các pipeline mạng nơ-ron vẫn chụp ảnh qua cùng các API cảm biến, vẽ kết quả qua cùng các nguyên tố draw_rectangle() và draw_circle(), và giới hạn phạm vi công việc qua cùng ROI (x, y, w, h). Một pipeline điển hình chụp một khung hình, tùy chọn tìm mục tiêu thô bằng bộ phát hiện cổ điển như find_blobs() và truyền hộp giới hạn của nó vào quá trình suy luận như một ROI, chạy suy luận, và chú thích các phát hiện trả về trở lại vào khung hình gốc. Các nguyên tố cổ điển là nền tảng; mạng là bước mới ở giữa.