Kỹ thuật chuẩn hóa trọng lượng được sử dụng trong Image Style Transfer


6

Tôi đang cố gắng thực hiện Chuyển đổi kiểu ảnh bằng giấy bằng cách sử dụng mạng nơ ron kết hợp . Trong phần 2 - Biểu diễn hình ảnh sâu, các tác giả đề cập đến kỹ thuật chuẩn hóa trọng lượng sau đây:

Chúng tôi đã bình thường hóa mạng bằng cách nhân rộng các trọng số sao cho kích hoạt trung bình của mỗi bộ lọc tích chập trên hình ảnh và vị trí bằng một. Việc mở rộng lại như vậy có thể được thực hiện cho mạng VGG mà không thay đổi đầu ra của nó, bởi vì nó chỉ chứa các chức năng kích hoạt tuyến tính và không chuẩn hóa hoặc gộp chung trên các bản đồ tính năng.

Từ một câu hỏi liên quan được hỏi trước đó, tôi thấy rằng các tác giả đang sử dụng các giá trị kích hoạt từ các hình ảnh xác thực ILSVRC được thiết lập để bình thường hóa các trọng số.

Tôi muốn biết công thức toán học của việc thực hiện một chuẩn hóa như vậy vì tôi không thể tự mình nghĩ ra.

Theo hiểu biết của tôi về vấn đề tôi có bản đồ kích hoạt (X) và tương ứng với nó, tôi có bản đồ kích hoạt K của lớp trước (L) và ma trận trọng số (W) có kích thước 3x3xK, sao cho khi lớp L được kết hợp với W nó tạo ra X. Bây giờ, một khi tôi đã bắt được các giá trị kích hoạt cho tất cả các nơ-ron trong lớp L cho tất cả các hình ảnh trong tập xác thực, mục tiêu là làm cho giá trị trung bình của tất cả các nơ-ron trong X trên tất cả các hình ảnh trong bộ xác thực bằng 1 bằng cách nào đó điều chỉnh W.

Tôi không thể biết mình nên làm gì với W để biến điều đó thành hiện thực.

Ngoài ra, tôi muốn biết liệu điều này sẽ được thực hiện theo cách xếp tầng (tuần tự) bằng cách bình thường hóa trọng số của lớp ban đầu và sau đó sử dụng bản đồ tính năng mới để chuẩn hóa trọng số của các lớp trước hoặc độc lập cho mỗi bản đồ kích hoạt bằng cách lấy các giá trị của lớp trước là trọng số ban đầu được đào tạo cho mỗi bản đồ kích hoạt?

Câu trả lời:


1

Bạn đúng rằng một khi chúng ta có các kích hoạt tính năng trung bình trên một tập hợp các hình ảnh, chúng ta sẽ bình thường hóa mạng theo trình tự, từng lớp một. Có một sự tinh tế liên quan, mặc dù. Bạn không thể bán lại trọng lượng lớp độc lập với các lớp trước.

Đặt và là trọng số và độ lệch của bộ lọc tích chập thứ trong lớp . Hạt nhân có hình dạng 3D với kích thước (chiều cao, chiều rộng, kênh_in), nhưng để ký hiệu dễ dàng hơn trên đường, hãy định hình lại nó thành , trong đó .WilbililWilh×w×cp×cp=h×w

FTôijtôimmộtx(0, WTôitôiPjtôi-1+bTôitôi) là kích hoạt bộ lọc thứ trong lớp ở vị trí thứ trong bản đồ kích hoạt. Ở đây chỉ định thao tác tích chập (hoặc sản phẩm bên trong Frobenius hoặc thêm bội; Tôi đã sử dụng ký hiệu từ câu trả lời của Baba) và là cửa sổ của kích hoạt trong đầu ra của lớp mà bộ lọc kết hợp với tại vị trí đang xem xét.TôitôijPjtôi-1h×w×c= =p×ctôi-1

Hãy để là kích hoạt trung bình của bộ lọc thứ trong lớp trên tất cả các hình ảnh trong tập dữ liệu và tất cả các vị trí trong bản đồ kích hoạt của bộ lọc. Đây rõ ràng là một con số không âm và nó thực sự dương đối với tất cả các bộ lọc trong mạng VGG (khi kích hoạt trung bình được thu thập trên một tập dữ liệu có kích thước vừa phải).

μTôitôiEX,jFTôijtôi= =1NMtôiΣXΣj= =1MtôiFTôijtôi= =1NMtôiΣXΣj= =1Mtôimmộtx(0, WTôitôiPjtôi-1+bTôitôi)
TôitôiNXMtôi

Bây giờ, giả sử chúng ta "bình thường hóa" các kích hoạt bằng cách chia trọng số và độ lệch cho . Điều này sẽ làm cho giá trị trung bình của kích hoạt bằng 1, nếu kích hoạt đến giống như kích hoạt ban đầu không chuẩn hóa . Đó là, , nhưng chỉ khi các kích hoạt của lớp trước giống như trong mạng không chuẩn hóa ban đầu - mạng mà chúng tôi đã tínhμTôitôiEX,jmmộtx(0, WTôitôiμTôitôiPjtôi-1+bTôitôiμTôitôi)= =1Pjtôi-1μTôitôitrong. Điều này chỉ đúng với lớp đối lưu đầu tiên trong mạng được chuẩn hóa, lớp kết hợp với hình ảnh đầu vào. Đối với các lớp khác, điều này không chỉ dẫn đến sai tỷ lệ, mà nó thực sự có thể đảo ngược dấu hiệu của tích chập và do đó, không kích hoạt sau khi đi qua ReLU. Nói cách khác, nó thay đổi đầu ra của mạng .

Để khắc phục điều này, chúng tôi cần khôi phục các kích hoạt đến: nhưng chúng tôi không thể tự thay đổi các giá trị đến, chúng tôi phải hoàn tác việc chuẩn hóa của lớp trước bằng cách sử dụng trọng số của lớp hiện tại. Lưu ý rằng trọng số trong bộ lọc chỉ tương tác với một kênh trong lớp trước. Vì vậy, chúng tôi đã bán lại tất cả các trọng số trong tương tác với kênh thứ trong lớp bằng cách nhân chúng với . Điều này hủy bỏ sự chuẩn hóa của lớp trước.WTôitôiktôi-1μktôi-1

Để chính thức hóa, hãy để

Dtôi-1[μ1tôi-10Giáo dục00μ2tôi-1Giáo dục00Giáo dục0μctôi-1] là ma trận đường chéo xây dựng bằng cách sử dụng tất cả các kích hoạt trung bình từ lớp .c×cctôi-1

Sau đó, . (Và đây là lý do chúng tôi định hình lại trọng số thành 2D, để chúng tôi có thể nhân ma trận thay vì tenxơ, vì mục đích rõ ràng.)EX,jmmộtx(0, WTôitôiDtôi-1μTôitôiPjtôi-1+bTôitôiμTôitôi)= =1

Cũng lưu ý rằng các lớp gộp tối đa và trung bình sẽ không can thiệp vào sơ đồ này, vì chúng không làm thay đổi tỷ lệ.

Ở trên có lẽ trông phức tạp hơn so với mã thực tế. Tôi đã đẩy một repo GitHub bằng cách triển khai Keras ngắn: https://github.com/corleypc/vgg-n normalize . Nhìn vào mã mẫu có thể sẽ làm sáng tỏ mọi thứ hơn nữa.


1

Câu trả lời ngắn: Lấy bản đồ kích hoạt tương ứng với một ma trận trọng số cụ thể, lấy giá trị trung bình của tất cả các kích hoạt và sau đó tính trung bình của giá trị này trên tất cả các hình ảnh. Sau đó chia ma trận trọng số và độ lệch cho trung bình này. Và có nó có ý nghĩa để làm điều đó một cách tuần tự.

Câu trả lời dài: (Sử dụng ký hiệu được sử dụng trong bài báo bạn đã trích dẫn)

Toán tử chập cho Tôith tính năng bản đồ thực hiện một sản phẩm bên trong với các bản vá hình ảnh xj:

mmộtx{0, wTôitôixj+bjtôi}= =FTôijtôi

Chúng có ý nghĩa kích hoạt trên tất cả các hình ảnh χ và tất cả các vị trí không gian j (hãy gọi nó là STôi)

STôitôiEχ,j[mmộtx{0, wTôitôixj+bjtôi}]= =1KMtôiΣχΣj= =1MtôiFTôijtôi

Đây K là số lượng hình ảnh trong bộ dữ liệu.

Bây giờ bạn chỉ cần mở rộng quy mô wTôitôibjtôi bởi 1STôitôi, cho bạn:

Eχ,j[mmộtx{0, wTôitôiSTôitôixj+bjtôiSTôitôi}]= =1

Điều này cũng đảm bảo rằng các kích hoạt bằng 0 trước đó, sau khi đi qua phi tuyến của RELU, vẫn như vậy, nghĩa là

wTôitôixj+bjtôi<0wTôitôiSTôitôixj+bjtôiSTôitôi<0

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.