# HRNet: Mạng sâu biểu diễn độ phân giải cao
## 1. Sinh viên thực hiện
1. Bùi Cao Doanh - 19521366
2. Bùi Trần Ngọc Dũng - 19521385
3. Nguyễn Phú Quang - 19522096
## 2. Bối cảnh
### 2.1. Lời dẫn
Vào khoảng thời gian trước năm 2020, các kiến trúc mạng tích chập sâu (Convolutional Neural Network) có thể kể đến như: AlexNet, VGG, ResNet, EfficientNet thường được thiết kế theo dạng bottom-up. Tức là một ảnh đầu vào sau khi đi qua các lớp tích chập thì độ phân giải ảnh (resolution) sẽ giảm dần, thay vào đó độ sâu (depth) sẽ tăng lên. Điều này đã được thảo luận khá nhiều rằng các đặc trưng càng sâu thì mức độ ngữ nghĩa của ảnh mà nó chứa đựng càng cao.
Tuy nhiên, có một số bài toán trong lĩnh vực thị giác máy tính đòi hỏi cần thu được đặc trưng tuy sâu nhưng độ phân giải phải cao, ví dụ: phân đoạn ngữ nghĩa (semantic segmentation), phân đoạn đối tượng (instance segmentation). Điều này dẫn đến một số kiến trúc như UNet ra đời. Hoặc đơn giản các nhà nghiên cứu chỉ muốn thu được các đặc trưng sâu có độ phân giải cao, do đó một số kiến trúc cũng được đề xuất để giải quyết vấn đề này: Hourglass, SegNet, DeconvNet, U-Net, SimpleBaseline. Các kiến trúc được kể đến có một điểm chung là đều học cách tăng độ phân giải cho đặc trưng sâu từ đặc trưng có độ phân giải thấp, tức là top-down. Giữa 02 nhánh bottom-up và top-down nhiều khả năng sẽ có sự mất mát thông tin, do đó, Wang và cộng sự đã cho ra đời mạng HRNet - một kiến trúc CNN duy trì độ phân giải cao của ảnh trong suốt quá trình được truyền qua mạng. Trong bài tiểu luận này, nhóm sinh viên sẽ trình bày nội dung lý thuyết chính của mạng HRNet.
### 2.2. Một số kiến trúc CNN theo hướng bottom-up phổ biến trước đây
#### 2.2.1. VGGNet [1]
VGGNet là mạng học sâu truyền thống đơn giản với các lớp tích chập xếp chồng lên nhau, ảnh đầu vào sau khi đi qua mạng sẽ giảm độ phân giải và tăng chiều sâu, điều này giúp học các đặc trưng nông và sâu của ảnh. VGGNet sử dụng bộ lọc $3 \times 3$ ở các lớp tích chập và đạt kết quả cao trong cuộc thi ILSVRC 2014. VGGNet là nền tảng cho các nghiên cứu về mạng học sâu sau này. Trong nghiên cứu này, chúng tôi sử dụng kiến trúc VGG-19 là một trong số các kiến trúc thử nghiệm. Kiến trúc VGG-19 được chúng tôi trực quan hóa ở Hình 1.

**Hình 1.** Kiến trúc VGG19
#### 2.2.2. ResNet [2]
ResNet, viết tắt của Residual Networks, là một kiến trúc CNN được đề xuất bởi He và cộng sự vào năm 2015 và đã đạt top 1 cuộc thi phân loại ảnh ILSVRC 2015. Khác với các kiến trúc CNN truyền thống trước đây, thành công của ResNet là sử dụng các khối Residual để tránh tình trạng Vanishing Gradient. Ý tưởng của ResNet chính là kiến trúc mạng dựa trên các khối Residual. Khối này bao gồm các lớp tích chập (thông thường là 2 lớp $1\times 1$ và 1 lớp $3 \times 3$ ở giữa). Đầu vào của khói là một đặc trưng $x$, sau khi qua các lớp tích chập trong khối thu được đặc trưng $f(x)$, sau đó, đặc trưng $x$ sẽ được cộng với $f(x)$ và đầu ra cuối cùng của khối Residual là $f(x) + x$. Việc sử dụng khối Residual Block sẽ giữ được các đặc trưng từ các lớp nông đến các lớp sâu, tránh việc mất dần thông tin đặc trưng ảnh dẫn đến Vanishing Gradient.

**Hình 2.** Minh họa khối Residual
## 3. Mạng HRNet
### 3.1. Những điểm chính
Đầu tiên, nhóm sinh viên muốn tóm tắt những ý chính làm nên sức mạnh của mạng HRNet:
- HRNet kết nối các nhánh mạng high-to-low một cách song song hơn là nối tiếp. Do đó, HRNet "duy trì" độ phân giải cao khi truyền ảnh qua mạng, chứ không "phục hồi" độ phân giải như ý tưởng của top-down.
- Để kết hợp đặc trưng cấp thấp có độ phân giải cao và đặc trưng cấp cao có độ phân giải thấp, các cách tiếp cận trước đây thường sử dụng phép UpSampling đặc trưng độ phân giải thấp lên cho bằng đặc trưng độ phân giải cao và kết hợp lại bằng các phép cộng hoặc phép nối; HRNet sẽ thực hiện việc này nhiều lần, qua nhiều giai đoạn để các đặc trưng độ phân giải cao và đặc trưng sâu độ phân giải thấp sẽ bổ sung ngữ nghĩa cho nhau.
### 3.2. Nội dung
#### 3.2.1. Các tích chập song song đa độ phân giải
Ý tưởng chính: HRNet sẽ duy trì độ phân giải cao của các đặc trưng xuyên suốt quá trình ảnh được truyền vào mạng. Kiến trúc sẽ chia thành nhiều tầng, tầng phía sau sẽ sinh ra đặc trưng có độ phân giải thấp và sâu hơn, tuy nhiên vẫn duy trì đặc trưng có độ phân giải ở tầng trước đó.

**Hình 3.** Minh họa mạng HRNet
Quan sát ở luồng số 1, qua nhiều tầng, đặc trưng độ phân giải cao (ký hiệu màu vàng) sẽ được duy trì. Bắt đầu từ tầng số 2, đặc trưng có độ phân giải thấp và sâu hơn (màu cam) sẽ được sinh ra, đặc trưng độ phân giải cao màu vàng này sẽ được bổ sung ngữ nghĩa bởi đặc trưng màu cam và ngược lại. Cứ như vậy qua nhiều tầng, các đặc trưng có các độ phân giải khác nhau sẽ được bổ sung ngữ nghĩa cho nhau, dẫn đến cuối cùng ta sẽ thu được đặc trưng độ phân giải cao tuy nhiên chất lượng vẫn rất tốt.
Trong Hình 3 minh họa mạng HRNet bao gồm 04 giai đoạn. Luồng xử lý chính được mô tả một cách logic bằng công thức sau:
$$ \mathcal{N}_{11} \rightarrow \mathcal{N}_{21} \rightarrow \mathcal{N}_{31} \rightarrow \mathcal{N}_{41} \\
\quad \searrow \mathcal{N}_{22} \rightarrow \mathcal{N}_{32} \rightarrow \mathcal{N}_{42} \\
\quad \quad \searrow \mathcal{N}_{33} \rightarrow \mathcal{N}_{43} \\
\quad \quad \quad \searrow \mathcal{N}_{44}$$
Trong đó $\mathcal{N}_{sr}$ là một nhánh đặc trưng tại giai đoạn thứ $s$, và $r$ là chỉ mục độ phân giải. Độ phân giải ở giai đoạn đầu tiên sẽ là $r = 1$, độ phân giải thứ $r$ sẽ bằng $\frac{1}{2^r - 1}$ độ phân giải ở giai đoạn đầu tiên.
#### 3.2.2. Các phép kết hợp đặc trưng
Việc kết hợp đặc trưng là để trao đổi thông tin ngữ nghĩa giữa các đặc trưng có nhiều độ phân giải khác nhau, và được lặp lại nhiều lần. Ví dụ ở **Hình 3**, việc kết hợp giữa các độ phân giải được lặp lại 04 lần.

**Hình 4**. Minh họa cách kết hợp thông tin ngữ nghĩa giữa các đặc trưng độ phân giải cao, trung bình và thấp.
Quan sát ở **Hình 4**, ta thấy có 3 đặc trưng có độ phân giải khác nhau. Ta gọi đặc trưng đầu vào là $\mathrm{R}^i_r$, đặc trưng sau khi kết hợp là $\mathrm{R}^o_r$. Ta có 03 đặc trưng như vậy mỗi loại, như vật $r={1,2,3}$. Một đầu ra tại độ phân giải thứ $r$ ($\mathrm{R}^o_r$) được tính như sau:
$$ \mathrm{R}^o_r = f_{1r}(\mathrm{R}^i_1) + f_{2r}(\mathrm{R}^i_2) + f_{3r}(\mathrm{R}^i_3) $$
Tại điểm giao giữa giai đoạn 3 và 4 sẽ có thêm một đặc trưng $\mathrm{R}^o_4$:
$$ \mathrm{R}^o_4 = f_{14}(\mathrm{R}^i_1) + f_{24}(\mathrm{R}^i_2) + f_{34}(\mathrm{R}^i_3) $$
Trong đó, $f_{xr}(\cdot)$ là phép biến đổi của đặc trưng có độ phân giải đầu vào là $x$ và độ phân giải đầu ra là $r$. Việc lựa chọn phép biến đổi tùy thuộc vào $x$ và $r$.
- Trường hợp $x=r$, $f_{xr}(\mathrm{R}) = \mathrm{R}$
- Trường hợp $x<r$, $f_{xr}(\mathrm{R})$ là một phép tích chập sử dụng $(r-s)$ lớp tích chập $3\times3$ có $stride=2$.
- Trường hợp $x>r$, $f_{xr}(\mathrm{R})$ là một phép upsampling song tuyến, sau đó sẽ đi qua một lớp tích chập $1\times1$ để kiểm soát số chiều của đặc trưng.
## 3.3. Các dạng biểu diễn
Theo các tác giả, HRNet có 03 dạng biểu diễn, được gọi là HRNetV1, HRNetV2 và HRNetV2p.
**HRNetV1**: đầu ra là dạng biểu diễn chỉ lấy từ nhánh đặc trưng có độ phân giải cao (high-resolution). Ba đặc trưng của ba độ phân giải còn lại sẽ được lược bỏ.
**HRNetV2**: các tác giả rescale các đặc trưng độ phân giải thấp lên độ phân giải cao bằng một phép upsampling song tuyến mà không thay đổi chiều sâu, và nối lại cả bốn đặc trưng. Sau đó đi qua một lớp tích chập $1\times1$ để trộn cả bốn đặc trưng này lại.
**HRNetV2p**: các tác giả xây dựng một biểu diễn đa tỷ lệ (multi-level features) bằng cách sử dụng đầu ra từ HRNetV2.
## 3.4. Cài đặt
Khi cài đặt, các tác giả sử dụng kiến trúc giống như **Hình 3**. Kiến trúc chính bao gồm 04 giai đoạn với 04 luồng tích chập song song. Các độ phân giải của đặc trưng là $1/4$, $1/8$, $1/16$ và $1/32$. Giai đoạn đầu có 4 khối residual, mỗi khối được thiết kế như một mạng cổ chai với chiều sâu là 64. Sau đó đi qua một lớp tích chập $3\times3$ để thay đổi chiều sâu thành $C$ kênh. Các giai đoạn thứ 2, 3, 4 có lần lượt 1, 4, 3 khối mô-đun. Mỗi mô-đun có 4 khối residual. Mỗi khối residual chứa hai lớp tích chập $3\times3$ cho mỗi độ phân giải. Phía sau mỗi lớp tích chập là một lớp batch normalization và hàm kích hoạt ReLU. Số chiều sâu của các lớp tích chập ứng với 04 độ phân giải là $C$, $2C$, $4C$, $8C$.
# Tài liệu tham khảo
[1]. Simonyan, K., & Zisserman, A. (2014). Very deep convolutional networks for large-scale image recognition. arXiv preprint arXiv:1409.1556.
[2]. He, K., Zhang, X., Ren, S., & Sun, J. (2016). Deep residual learning for image recognition. In Proceedings of the IEEE conference on computer vision and pattern recognition (pp. 770-778).
[3]. Wang, J., Sun, K., Cheng, T., Jiang, B., Deng, C., Zhao, Y., ... & Xiao, B. (2020). Deep high-resolution representation learning for visual recognition. IEEE transactions on pattern analysis and machine intelligence, 43(10), 3349-3364.