MacOSX 에서의 테스트
이번 테스트는 MacOSX 에서 기본 LLVM-GCC 를 사용하여 zsh로 성능 테스트를 해 보았습니다. 일단 MacOSX 에서는 기본적으로 HPC-GCC 가 아니고는 OpenMP 를 통한 CPU 가속을 할 수 없기 때문에, 기본적인 LLVM-GCC 의 Optimization 에 제한적으로 기능을 제한 해야 합니다.
테스트 한 MacOSX
- 모델명: MacBook Pro
- 모델 식별자: MacBookPro12,1
- 프로세서 이름: Intel Core i7
- 프로세서 속도: 3.1 GHz
- 총 코어 개수: 2
- L2 캐시(코어당): 256 KB
- L3 캐시: 4 MB
- 메모리: 16 GB
빌드 옵션은 기본으로 git 에 올라 가 있는 Makefile.staticlib 과 Makefile.test 를 차례로 빌드 해서 만들어진 것을 그대로 사용 하였으며, libpng 오류는 시스템에서 같이 빌드한 libpng 에서 출력 되는 오류 입니다.
이미지 비교
가로 512px 로 줄인 이미지
1024px 로 Super-Resolution 처리 된 이미지
SRCNN 의 Convolution 연산의 Y 채널 이미지 dump
가로 2048px 의 원본 이미지
SRCNN 의 경우 이미지의 명암부를 가지고 있는 Y 채널을 비약적으로 복구 해 주는 알고리즘으로 실제 16bit 이상의 흑백 이미지를 쓸 경우에서도 효과적인 고해상도 복원 능력을 가져다 줍니다만, 아마 가로 2048px 가 넘어가는 TFT panel 이나 CMOS 등의 센서를 통해 얻은 이미지를 확대 할 경우 엄청나게 느릴수 있습니다.
이미지를 자세히 클릭해서 확인을 해 보면, 맥북의 터미널 안의 글자 처럼 이미 너무 무너져서 복구하기 어려운 픽셀 단위로의 정보를 제외 하고는 정말 높은 원래 이미지대비 높은 복원해상력을 가지고 있다는 것을 알 수 있습니다.
또한 제가 만든 libsrcnn 의 경우 현재 원래 참조한 ShuWang 의 소스가 가진 버그를 수정하고, 성능을 비약적으로 올려 둔 것은 물론, OpenCV 없이 구동 할 수 있는 장점은 아마 다른 프로젝트에서 사용하기에 어려움이 없을 듯 합니다. 또한 interpolation 종류를 Bicubic 외에 Lanczos-3 나 B-Spline 등을 지원 하고 있기 때문에 필요에 따라 더 다양한 복원 방법을 바꿔서 사용해 볼 수 있습니다.
소스 위치
라이센스
LGPLv3