Sử dụng AI để nén ảnh quá mức

Sử dụng AI để nén ảnh quá mức
Các thuật toán điều khiển dữ liệu như mạng thần kinh đã gây bão trên toàn thế giới. Sự phát triển của chúng là do một số lý do, bao gồm thiết bị rẻ và mạnh mẽ cũng như lượng dữ liệu khổng lồ. Mạng lưới thần kinh hiện đang đi đầu trong mọi thứ liên quan đến nhiệm vụ "nhận thức" như nhận dạng hình ảnh, hiểu ngôn ngữ tự nhiên, v.v. Nhưng họ không nên bị giới hạn trong các nhiệm vụ như vậy. Bài viết này nói về cách nén hình ảnh bằng mạng thần kinh, sử dụng học tập còn lại. Cách tiếp cận được trình bày trong bài viết nhanh hơn và tốt hơn các codec tiêu chuẩn. Sơ đồ, phương trình và, tất nhiên, một bảng với các bài kiểm tra được cắt giảm.

Bài viết này dựa trên điều này công việc. Giả định rằng bạn đã quen thuộc với mạng lưới thần kinh và các khái niệm về chúng. tích chập и mất chức năng.

Nén hình ảnh là gì và nó hoạt động như thế nào?

Nén hình ảnh là quá trình chuyển đổi một hình ảnh để nó chiếm ít dung lượng hơn. Chỉ lưu trữ hình ảnh sẽ chiếm rất nhiều dung lượng, đó là lý do tại sao có các codec như JPEG và PNG nhằm mục đích giảm kích thước của hình ảnh gốc.

Như bạn đã biết, có hai loại nén hình ảnh: không mất mát и với tổn thất. Như tên gợi ý, nén không mất dữ liệu có thể giữ lại dữ liệu hình ảnh gốc, trong khi nén mất dữ liệu sẽ mất một số dữ liệu trong quá trình nén. ví dụ: JPG là các thuật toán mất dữ liệu [xấp xỉ. bản dịch. - về cơ bản, chúng ta cũng đừng quên JPEG không mất dữ liệu] và PNG là một thuật toán không mất dữ liệu.

Sử dụng AI để nén ảnh quá mức
So sánh nén không mất dữ liệu và không mất dữ liệu

Lưu ý rằng có rất nhiều đồ tạo tác khối ô vuông trong hình ảnh bên phải. Đây là thông tin bị mất. Các pixel lân cận có màu tương tự được nén thành một vùng duy nhất để tiết kiệm dung lượng nhưng thông tin về các pixel thực tế sẽ bị mất. Tất nhiên, các thuật toán được sử dụng trong các codec JPEG, PNG, v.v. phức tạp hơn nhiều, nhưng đây là một ví dụ trực quan tốt về nén mất dữ liệu. Nén không mất dữ liệu là tốt, nhưng các tệp nén không mất dữ liệu chiếm nhiều dung lượng đĩa. Có nhiều cách tốt hơn để nén hình ảnh mà không làm mất nhiều thông tin, nhưng chúng khá chậm và nhiều phương pháp sử dụng lặp đi lặp lại. Điều này có nghĩa là chúng không thể chạy song song trên nhiều lõi CPU hoặc GPU. Hạn chế này làm cho chúng hoàn toàn không thực tế trong sử dụng hàng ngày.

Đầu vào mạng thần kinh tích chập

Nếu một cái gì đó cần được tính toán và các tính toán có thể gần đúng, hãy thêm mạng lưới thần kinh. Các tác giả đã sử dụng một mạng thần kinh tích chập khá chuẩn để cải thiện khả năng nén ảnh. Phương pháp được trình bày không chỉ hoạt động ngang bằng với các giải pháp tốt nhất (nếu không muốn nói là tốt hơn), mà còn có thể sử dụng tính toán song song, dẫn đến tốc độ tăng lên đáng kể. Lý do là Mạng thần kinh chuyển đổi (CNN) rất giỏi trong việc trích xuất thông tin không gian từ hình ảnh, sau đó được trình bày ở dạng nhỏ gọn hơn (ví dụ: chỉ các bit "quan trọng" của hình ảnh được giữ lại). Các tác giả muốn sử dụng khả năng CNN này để thể hiện hình ảnh tốt hơn.

kiến trúc

Các tác giả đã đề xuất một mạng kép. Mạng đầu tiên lấy hình ảnh làm đầu vào và tạo biểu diễn nhỏ gọn (ComCNN). Đầu ra của mạng này sau đó được xử lý bởi một codec tiêu chuẩn (ví dụ: JPEG). Sau khi được codec xử lý, hình ảnh được chuyển đến mạng thứ hai, mạng này sẽ "sửa" hình ảnh từ codec nhằm cố gắng trả về hình ảnh gốc. Các tác giả đã đặt tên cho mạng này là Reconstructive CNN (RecCNN). Giống như GAN, cả hai mạng đều được đào tạo lặp đi lặp lại.

Sử dụng AI để nén ảnh quá mức
Biểu diễn ComCNN Compact được chuyển sang codec tiêu chuẩn

Sử dụng AI để nén ảnh quá mức
RecCNN. Đầu ra ComCNN được mở rộng quy mô và cung cấp cho RecCNN, sẽ cố gắng tìm hiểu phần còn lại

Đầu ra codec được tăng tỷ lệ và sau đó được chuyển đến RecCNN. RecCNN sẽ cố gắng hiển thị hình ảnh gần với bản gốc nhất có thể.

Sử dụng AI để nén ảnh quá mức
Khung nén hình ảnh đầu cuối. Co(.) là thuật toán nén ảnh. Các tác giả đã sử dụng JPEG, JPEG2000 và BPG

Phần còn lại là gì?

Phần còn lại có thể được coi là bước xử lý hậu kỳ để "cải thiện" hình ảnh được giải mã bởi codec. Có rất nhiều “thông tin” về thế giới, một mạng thần kinh có thể đưa ra các quyết định dựa trên nhận thức về những gì cần khắc phục. Ý tưởng này dựa trên học tập còn lại, đọc các chi tiết mà bạn có thể đây.

chức năng mất

Hai hàm mất mát được sử dụng vì chúng ta có hai mạng thần kinh. Cái đầu tiên trong số này, ComCNN, được gắn nhãn L1 và được định nghĩa như sau:

Sử dụng AI để nén ảnh quá mức
Mất chức năng cho ComCNN

Giải trình

Phương trình này có vẻ phức tạp, nhưng nó thực sự là tiêu chuẩn (lỗi bình phương trung bình gốc) MSE. ||² có nghĩa là chuẩn của vectơ mà chúng bao quanh.

Sử dụng AI để nén ảnh quá mức
phương trình 1.1

Cr biểu thị đầu ra của ComCNN. θ biểu thị khả năng học của các tham số ComCNN, XK là hình ảnh đầu vào

Sử dụng AI để nén ảnh quá mức
phương trình 1.2

Re() là viết tắt của RecCNN. Phương trình này chỉ truyền đạt ý nghĩa của phương trình 1.1 cho RecCNN. θ biểu thị các tham số có thể đào tạo RecCNN (chiếc mũ ở trên cùng có nghĩa là các tham số được cố định).

Định nghĩa trực quan

Phương trình 1.0 sẽ khiến ComCNN thay đổi trọng số của nó để khi được tạo lại bằng RecCNN, hình ảnh cuối cùng trông giống với hình ảnh đầu vào nhất có thể. Hàm mất RecCNN thứ hai được định nghĩa như sau:

Sử dụng AI để nén ảnh quá mức
phương trình 2.0

Giải trình

Một lần nữa, chức năng này có thể trông phức tạp, nhưng phần lớn đây là chức năng mất mạng thần kinh tiêu chuẩn (MSE).

Sử dụng AI để nén ảnh quá mức
phương trình 2.1

Co() nghĩa là đầu ra codec, x có mũ ở trên nghĩa là đầu ra ComCNN. θ2 là các tham số có thể đào tạo RecCNN, res() chỉ là đầu ra còn lại của RecCNN. Điều đáng chú ý là RecCNN được đào tạo về sự khác biệt giữa Co() và hình ảnh đầu vào, nhưng không phải trên hình ảnh đầu vào.

Định nghĩa trực quan

Phương trình 2.0 sẽ khiến RecCNN thay đổi trọng số của nó để đầu ra trông giống với hình ảnh đầu vào nhất có thể.

Khóa huấn luyện

Các mô hình được đào tạo lặp đi lặp lại, như Gan. Các trọng số của mô hình đầu tiên được cố định trong khi các trọng số của mô hình thứ hai đang được cập nhật, sau đó các trọng số của mô hình thứ hai được cố định trong khi mô hình thứ nhất đang được huấn luyện.

Kiểm tra

Các tác giả đã so sánh phương pháp của họ với các phương pháp hiện có, bao gồm cả các codec đơn giản. Phương pháp của họ hoạt động tốt hơn các phương pháp khác trong khi vẫn duy trì tốc độ cao trên phần cứng phù hợp. Ngoài ra, các tác giả đã cố gắng chỉ sử dụng một trong hai mạng và ghi nhận hiệu suất giảm.

Sử dụng AI để nén ảnh quá mức
So sánh chỉ số tương đồng về cấu trúc (SSIM). Giá trị cao cho thấy sự tương đồng tốt hơn với bản gốc. Kiểu in đậm chỉ kết quả công việc của các tác giả

Kết luận

Chúng tôi đã xem xét một cách mới để áp dụng học sâu vào nén hình ảnh và nói về khả năng sử dụng mạng nơ-ron trong các tác vụ ngoài các tác vụ “chung” như phân loại hình ảnh và xử lý ngôn ngữ. Phương pháp này không những không thua kém các yêu cầu hiện đại mà còn cho phép bạn xử lý hình ảnh nhanh hơn nhiều.

Việc học mạng nơ-ron đã trở nên dễ dàng hơn vì chúng tôi đã tạo mã khuyến mãi đặc biệt cho Habravchan HABR, giảm thêm 10% cho mức chiết khấu được ghi trên biểu ngữ.

Sử dụng AI để nén ảnh quá mức

Các khóa học khác

Bài báo nổi bật

Nguồn: www.habr.com

Thêm một lời nhận xét