Generating High-Quality Crowd Density Maps Using Contextual Pyramid CNNs (thecvf.com)
1 - 서론
군중 이미지의 전역 및 로컬 상황 정보를 통합해 군중 밀도 및 카운트 추정을 생성하는 CP-CNN(Contextual Pyramid CNN) : GCE(Global Context Estimator), LCE(Local Context Estimator), DME(Density Map Estimator) 및 F-CNN(Fusion-CNN)의 4가지 모듈로 구성.
GCE : 글로벌 컨텍스트를 인코딩하는 VGG-16 기반 CNN. 입력 이미지를 다른 밀도 클래스로 분류하도록 & 구성 및 입력 이미지를 다른 밀도 클래스로 패치별 분류하도록 훈련.
LCE : 로컬 컨텍스트 정보를 인코딩 & 입력 이미지를 다른 밀도 클래스로 패치별 분류하도록 훈련.
DME : F-CNN을 사용하여 GCE 및 LCE가 추정한 상황 정보와 합쳐진(fused) 입력 이미지에서 고차원 피처 맵을 생성하는 다중 컬럼 아키텍처 기반 CNN.
F-CNN : 고해상도 고품질 밀도 맵을 생성하기 위해 컨볼루션 및 부분 스트라이드 컨볼루션 레이어(Convolutional and Fractionally-strided Convolutional layer) 세트를 사용하고 적대적 손실과 픽셀 수준 유클리드 손실의 조합을 사용하여 DME와 함께 종단 간 방식으로 훈련된다.
2 - 본문
서로 다른 다중 스케일 아키텍처를 사용하는 최근 CNN 기반 방법은, 각각 고밀도 및 저밀도 군중 이미지가 있는 경우 카운트를 과소평가하거나 과대평가하는 경향이 있다. 학습 과정 중에 상황 정보를 사용하는 것이 이에 대한 해결책 중 하나가 될 수 있다. 해당 논문은 글로벌 컨텍스트를 학습 프로세스에 통합하는 것이이 최대 풀링 레이어를 사용하여 작은 변환 불변성을 달성하여 저해상도로 인해 저품질 밀도 맵을 생성하는 기존 방식에 비해 더 나은 결과를 낸다고 한다.
이러한 글로벌(전역) 컨텍스트를 통합하기 위해 CNN 기반 Global Context Estimator(GCE)는 입력 이미지의 컨텍스트를 인코딩하도록 훈련되며, 이는 밀도 맵 추정 프로세스를 지원하는 작용을 한다.
GCE(Global): CNN 기반의 VGG16 아키텍처. 적절한 최대 풀링 레이어가 있는 다중 컬럼 아키텍처 기반 CNN인 DME(Density Map Estimator)는 이미지를 고차원 피처 맵으로 변환하는 데 사용된다. 또한 이미지에서 로컬 컨텍스트를 사용하면 DME가 더 나은 품질의 지도를 추정할 수 있을 것으로 보인다.
이를 위해, 로컬 컨텍스트 추정기 CNN(LCE) : 입력 이미지 패치를 통해 훈련되어 로컬 컨텍스트 정보를 인코딩.
마지막으로, LCE와 GCE에 의해 얻은 상황 정보는 F-CNN(Fusion-CNN)을 사용하여 DME의 출력과 결합된다. DME에서 최대 풀링 레이어를 사용하면 해상도 밀도 맵이 낮다는 점에 주목하여, F-CNN은 출력 해상도를 높이기 위해 부분적으로 스트라이드된 컨볼루션 집합을 사용하여 구성되어 고품질 맵을 생성한다. 밀도 맵의 품질을 향상시키기 위한 추가적인 시도로, F-CNN은 픽셀 단위 유클리드 손실과 적대적 손실의 가중 조합을 사용하여 훈련된다.
제안된 방법은 CNN 네트워크를 사용하여 낮은 카운트 오류와 더 나은 품질 밀도 맵을 달성하기 위해 다양한 수준(various level)에서 컨텍스트를 추정한다. 컨텍스트의 피라미드를 추정하기 위한 CNN 집합으로 간주할 수 있으므로 제안된 방법을 CP-CNN(Contextual Pyramid CNN)이라 이름지었다. 요약하면, 다음은 당사의 주요 기여 사항입니다.
• 우리는 로컬 및 글로벌 컨텍스트를 밀도 추정 프로세스로 인코딩하는 군중 수 및 밀도 추정을 위한 새로운 컨텍스트 피라미드 CNN(CP-CNN)을 제안한다.
• 우리는 군중 밀도 추정을 위해 유클리드 손실 외에도 적대적 손실을 사용한다.
3 - 제안방법(CP-CNN)
CP-CNN은 위와 같이 컨텍스트 추정기의 피라미드와 Fusion-CNN으로 구성된다. GCE, LCE, DME, F-CNN의 4개 모듈로 구성되어 있으며, GCE와 LCE는 각각 입력 이미지에 존재하는 글로벌 및 로컬 컨텍스트를 인코딩하는 CNN 기반 네트워크이고, DME는 입력 이미지를 고차원 피처 맵으로 변환하는 초기 작업을 수행하는 다중 컬럼 CNN이다. 마지막으로, F-CNN은 GCE와 LCE의 상황 정보를 DME의 고차원 기능 맵과 결합하여 고해상도 및 고품질 밀도 맵을 생성한다.
3.1. Global Context Estimator(GCE)
최근의 최첨단 다중칼럼 또는 다중 스케일 방법은 군중 수 추정 작업에서 고밀도 및 저밀도 군중 이미지의 카운트를 각각 과소평가하거나 과대평가한다. 이러한 추정 오류를 줄이기 위해 이미지에 존재하는 모델 컨텍스트를 명시하는 것이 중요하다고 생각한다. 이를 위해 글로벌 컨텍스트를 학습하는 작업을 입력 이미지를 극도로 낮은 밀도(ex-lo), 낮은 밀도(lo), 중간 밀도(med), 고밀도(hi) 및 극도로 높은 밀도(ex-hi)의 5가지 클래스로 분류하는 것으로 간주하여 글로벌 컨텍스트를 이미지에 존재하는 밀도 수준과 연관시킨다(이러한 클래스 수는 변경 가능).
본 논문은 5개의 밀도 수준 범주를 사용하여 상당한 개선을 얻었다고 함. 분류 작업을 학습하기 위해 VGG-16 기반 네트워크는 군중 훈련 데이터로 미세 조정된다. GCE에 사용되는 네트워크는 아래 그림과 같다. VGG-16 네트워크의 컨볼루션 레이어는 유지되지만, 마지막 세 개의 Fully-Connected 레이어는 다섯 가지 범주로 분류하는 작업을 충족하기 위해 Fully-Connected 레이어의 다른 구성으로 대체된다. 마지막 두 컨볼루션 레이어의 가중치는 이전 레이어에 대해 고정된 가중치를 유지하면서 미세 조정된다. 사전 훈련된 VGG 네트워크를 사용하면 컨버전스가 빨라지고 컨텍스트 추정 측면에서 성능이 향상된다.
3.2. 로컬 컨텍스트 추정기(LCE)
군중 밀도 추정을 위한 기존 방법은 주로 더 나은 품질의 밀도 맵을 추정하기보다는 더 낮은 카운트 오류를 달성하는 데 중점을 두었다. 이러한 결과를 분석한 후, 저자는 어떤 종류의 로컬 상황 정보(local contextual information)가 더 나은 map을 만드는 데 도움이 될 수 있다고 믿는다. 이러한 효과를 위해 GCE와 유사하게 이미지의 로컬 패치를 {ex-lo, lo, med, hi, ex-hi}의 다섯 가지 클래스 중 하나로 분류하는 방법을 학습하여 이미지의 로컬 컨텍스트를 학습할 것을 제안한다. 로컬 컨텍스트는 아래 그림의 LCE에 의해 학습됩니다. 그것은 컨볼루션 레이어와 최대 풀링 레이어의 세트로 구성된 후 처음 두 개의 완전히 연결된 레이어 뒤에 적절한 드롭아웃 레이어가 있는 3개의 완전히 연결된 레이어로 구성된다. 마지막으로 완전히 연결된 층을 제외한 모든 컨볼루션 및 완전 연결된 층은 S자형 층을 따른다.
잘 보면 FC-5를 통해 최종적으로 5가지의 밀도클래스로 분류하는 것을 알 수 있다.
3.3 DME(Density Map Estimator)
DME의 목적은 입력 이미지를 GCE와 LCE가 제공하는 상황 정보와 연결될 고차원 피처 맵 세트로 변환하는 것이다. 고밀도 군중 이미지에서 밀도 맵을 추정하는 것은 이미지 내 및 이미지 전반에 걸쳐 다양한 크기의 사람 머리가 존재하기 때문에 특히 어렵다. 이러한 해결책으로 다중 스케일 또는 다중 컬럼 아키텍처가 나타나, 객체 크기의 변화에 강인하게 처리할 수 있는 능력을 입증했다. 이러한 방법의 성공에 영감을 받아, 우리는 [Single image crowd counting via multi-column convolutional neural network]와 유사한 다중 칼럼 아키텍처를 사용한다. 또한, 본 연구에서는 입력을 밀도 맵을 추정하는 데 직접 사용하지 않고 고차원 피처 맵 세트로 변환하기 위해 다중 컬럼 아키텍처를 사용한다. DME에 대한 네트워크 세부사항은 아래 그림에 도시되어 있다.
DME는 필터 크기의 피라미드를 가지고 있기 때문에, 더 큰 스케일의 변화를 다루기 위해 필터 크기와 열 수를 증가시킬 수 있다. 그러나 데이터 세트에 존재하는 스케일 변동을 기반으로 더 많은 열과 필터 크기를 추가해야 하므로 서로 다른 스케일 변동을 포함하는 서로 다른 데이터 세트를 충족하는 새로운 네트워크 설계가 발생한다. 또한 필터 크기를 결정하려면 시간이 많이 걸리는 실험이 필요함. 일단 저자의 네트워크를 사용하면 맥락(conext) 추정기가 거친 군중 계수 작업을 수행하는 것으로 간주될 수 있기 때문에 설계는 모든 데이터 세트에서 일관성을 유지한다.
저기에 사용하는게 F-CNN임.
3.4. Fusion-CNN(F-CNN)
GCE와 LCE의 상황 정보는 F-CNN을 사용하여 DME의 고차원 피처 맵과 결합된다. F-CNN은 상황 추정기에 의해 추정된 상황 정보를 통합하는 방법을 자동으로 학습한다. DME 네트워크에 최대 풀링 계층이 존재하면(변환 불변성을 달성하는 데 필수적인) 기능 맵이 다운샘플되고 세부 정보가 손실된다. 이 작업의 목적은 고해상도 및 고품질 밀도 맵을 추정하는 것이므로 F-CNN은 컨볼루션 및 부분적으로 스트라이드된 컨볼루션 레이어 세트를 사용하여 구성된다. 부분적으로 스트라이드된 컨볼루션 레이어 세트는 출력 밀도 맵의 세부 정보를 복원하는 데 도움이 된다.
구조는 CR(64,9)-CR(32,7)-TR(32) CR(16,5)-TR(16)-C(1,1).
여기서 C는 컨볼루션 레이어, R은 ReLU 레이어, T는 부분적으로 스트라이드된 컨볼루션 레이어이며 각 브레이스(brace) 내부의 첫 번째 숫자는 필터 수를 나타내고 두 번째 숫자는 필터 크기를 나타낸다. 부분적으로 스트라이드된 모든 컨볼루션 레이어는 입력 해상도를 2배 증가시켜 출력 해상도가 입력 해상도와 동일하도록 한다. 컨텍스트 추정기가 훈련되면 DME와 FCNN은 종단 간 방식(end-to-end, 즉 부분네트워크 없이 처음부터 끝까지 한번에 처리)으로 훈련된다.
군중 밀도 추정을 위한 기존 방법은 유클리드 손실을 사용하여 네트워크를 훈련시킨다. L2 오류의 최소화는 특히 이미지 재구성 작업의 경우 흐릿한 결과를 초래한다는 것은 널리 인정되어 왔다[13, 14, 45, 46, 47]. 이러한 관찰과 L2 최소화 문제를 극복하기 위한 GAN의 최근 성공에 힘입어, 우리는 픽셀 단위 유클리드 손실과 적대적 손실의 가중 조합을 최소화하여 밀도 맵의 품질을 더욱 향상시키려고 시도한다. F-CNN 및 DME 훈련 손실은 다음과 같이 정의된다.
여기서 LT는 전체 손실, LE는 추정 밀도 맵과 해당 지상 진실 사이의 픽셀 단위 유클리드 손실, γa는 가중치 인자, LA는 적대적 손실, X는 치수 W × H, Y는 지상 진실 밀도 맵, γ는 DME와 F-CNN으로 구성된 네트워크, γD는 판별자 하위 네트워크이다. 적대적 손실을 계산하기 위해. 판별자 하위 네트워크에 사용되는 구조는 CP(64)-CP(128)-M-CP(256)-MCP(256)-CP(256)-M-C(1)-Sigmoid이며, 여기서 C는 컨볼루션 레이어를, P는 P렐루 레이어를, M은 최대 풀링 레이어를 나타낸다.
즉, GCE : 전체에 대해 Feature 뽑음. 이는 원본사이즈의 1/4로 훈련됨.
LCE : 패치에 대해 Feature 뽑음. 이는 64 x 64사이즈의 패치로 훈련됨.
DME : 인풋 이미지에 따라 맨 앞사람과 맨 뒤의 머리는 크기차이가 있으니, 다양한 필터를 이용해 Feature을 뽑음.
F-CNN : GCE와 LCE를 이 DME와 결합함.
4. 훈련 및 평가내용
1) Training Detial : D를 원래의 훈련 데이터 세트로 하자. 원본 이미지 크기의 1/4 패치는 D의 모든 이미지에서 임의의 100개 위치에서 잘라낸다. 수평 플립 및 노이즈 추가와 같은 다른 증강(augmentation) 기술은 200개의 패치를 추가하는 데 사용된다. 무작위 자르기 및 확대로 인해 훈련 데이터 세트에서 이미지당 총 300개의 패치가 생성되었다. 이 이미지 집합을 Ddme라 하자. 또 다른 훈련 세트 Dlc는 D의 모든 훈련 이미지에서 100개의 무작위 위치에서 64 × 64 크기의 패치를 잘라냄으로써 형성된다.
GCE는 데이터 세트 Ddme를 사용하여 훈련된다. 즉, 각 이미지에 대한 Ground Trth는 해당 이미지에 있는 사람의 수에 따라 결정된다. 이미지를 VGG 기반 GCE 네트워크에 공급하기 전에 이미지 크기가 224 x 224로 조정된다. 그런 다음 네트워크는 표준 교차 엔트로피 손실을 사용하여 훈련된다.
LCE는 Dlc의 64x64 패치를 사용하여 훈련된다. 훈련 패치의 기본 진실 범주는 패치에 존재하는 사람의 수에 따라 결정된다. 그런 다음 네트워크는 표준 교차 엔트로피 손실을 사용하여 훈련된다.
다음으로 DME 및 F-CNN 네트워크는 Ddme의 입력 훈련 이미지와 해당 글로벌 및 로컬 컨텍스트를 사용하여 종단 간 방식으로 훈련된다.
이 때 좌측의 '인풋 훈련 이미지 Xi의 global context'는 다음과 같이 얻어진다.
우선 5 × Wi/4 × Hi/4 사이즈의 empty global context가 생성된다. 이 때 기본 이미지 Xi의 차원이 곧 Wi x Hi일 것이다.
다음으로는 좌측의 분류스코어가 Xi를 GCE에 삽입함으로써 얻어진다. 위의 글로벌 컨텍스트 점수는 이것으로 정해질 것임
Local Context 역시 같은 방식으로 만들어짐. 5 x Wi x Hi의 빈 차원 로컬 컨텍스트가 생성되고, 64x64의 슬라이딩 윈도우 classifier가 지나가며 아래의 점수를 획득. 이 때, 윈도우 location w가 고려된다.
좌측과 같은 형태로 점수가 매겨짐.
이렇게 Context Map이 Estimated된 후, Xi는 DME에 공급되어 위의 F_i_gc와 F_i_lc와 연결된 고차원 피처 맵 F_i_dme를 얻는다. 그런 다음 이러한 연결된 기능 맵은 F-CNN에 공급된다. 두 CNN(DME 및 F-CNN)은 ground-truth Density Map과 Estimated Truth Map 사이의 픽셀단위 유클리드 손실과 적대적 손실의 가중 조합을 최소화해 종단 간 방식으로 훈련된다.
2) Inference Detail :
좌측의 테스트 이미지의 밀도 맵을 추정하는 프로세스를 설명한다. 먼저, 테스트이미지에 대한 글로벌 컨텍스트 맵 F_ i_tgc은 다음과 같은 방식으로 계산된다. 우선 테스트 이미지는 자기자신의 W, H에 대해 W/4 × H/4 크기의 겹치지 않는 블록으로 나뉜다. 그런 다음 모든 블록이 GCE에 입력되어 각각의 분류 점수를 얻는다. 훈련에서와 마찬가지로 분류 점수는 최종 글로벌 컨텍스트 피처 맵 F_i_tgc을 얻기 위해 각 블록에 대한 Context map을 구축하는 데 사용된다.
다음으로, 이미지에 대한 로컬 컨텍스트 맵 F_i_tlc는 다음과 같은 방식으로 계산된다: 64 × 64 크기의 슬라이딩 윈도우 분류기(LCE)가 해당 이미지에 걸쳐 실행되고 모든 윈도우의 분류 점수가 로컬 컨텍스트 F_i_tlc를 구축하는 데 사용된다. 컨텍스트 정보를 얻으면, 이미지는 고차원 형상 맵 F_i_tdme를 얻기 위해 DME에 입력된다. F_i_tdme는 F_i_tgc 및 F_i_tlc와 연결되어 출력 밀도 맵을 얻기 위해 F-CNN에 공급된다.
'버츄얼유튜버' 카테고리의 다른 글
Tracking Pedestrian Heads in Dense Crowd (0) | 2022.12.04 |
---|---|
To Choose or to Fuse? Scale Selection for Crowd Counting (2) | 2022.12.02 |
Density Map 작성법 (0) | 2022.11.29 |
DataLoader 이해 - Boosting-Crowd-Counting... 을 기반으로 (0) | 2022.11.29 |
ResNet 관련 링크 (0) | 2022.10.12 |