본문 바로가기

내가 작업한 것들/소프트웨어

(64)
개선된 신경망 슈퍼 리졸루션 엔진, libsrcnn 변경점 소개 처음 '슈아 왕'에 의해 만들어진 OpenCV 를 이용한 super resolution 을 OpenMP 로 몇배 빠르게 만들었던 작업 뒤에 순수 C++ 로만 구동 되도록 만든 라이브러리 엔진을 작년에 만든 적이 있습니다. (관련글) 기존에 만들었던 엔진에 몇가지 문제가 있었는 점을 확인 한 바가, 내부에 사용된 미리 계산된 학습 데이터가 2배 이내의 이미지에 최적화가 되어 있다는 점 입니다. 그래서 2배를 초과하는 이미지에서는 해당 이미지의 해상도가 SRCNN 알고리즘에 정확히 동작하지 못하는 부분이 많이 발견 되었었 습니다만, 이를 개선하기 위해 2배 단위로 영상 단계별로 scaling 하도록 개선한 소스를 업데이트 하였습니다. 물론 이로 인해 속도가 매우 떨어지게 되는 점은 아쉬운 부분 입니다만, 원..
오픈소스 스크린샷 프로그램, FLSCRNSHOT 소개 뭐 하는 프로그램인가? 대부분의 윈도우 화면을 비손실 압축 ( 압축 레벨 7 ) PNG 로 자동 분류 해서 저장해 주는 프로그램 입니다. 기본으로 지정 해 둔 폴더 안에 현재 캡쳐 하는 윈도우의 "클래스이름[윈도우 제목]" 으로 폴더를 만들고 그 안에 년-월-일-시-분-초-밀리초.png 이름으로 파일을 계속 저장 해 주는 초간단 개편안 프로그램 정도 되겠습니다. 왜 만들었는가? 이 프로그램을 만든 것은 스팀을 쓸 때 편리하던 F12 키 한번에 스크린샷이 저장 되던 편리함들을 에픽게임 런쳐나, 일반 게임들에선 그 기능을 윈도우 자체의 괴랄한 "게임 오버레이" 로만 가능하거나, 상용 프로그램 으로만 가능했기 때문 입니다. 특히 근래 즐기고 있는 "에디스 핀치의 유산" 게임 플레이 중, Ctrl 또는 Shif..
Rock960A/B/C 용 rtl8152 커널 드라이버 소스 Rock960A/B/C 를 쓰는 사용자라면 아마 VAMRs 에서 배포하는 리눅스를 사용하고 있으시거나, 제가 따로 배포하는 AARCH64 빌드를 높은 확률로 사용 중 이실 것 입니다만, 이 커널이 4.4 에 기반을 하고 있는지라 Realtek 의 RTL8152 계열 USB LAN 이 ( 보통 USB 3.0 GbE 지원 제품 ) 위 화면처럼 (unnamed net_device) (uninitialized) 오류를 뱉으면서 커널에서 인식을 못하고 있는 상황을 경험 할 것입니다. 이는 커널에 포함된 r8152 내장드라이버가 너무 옛날 것이라 생기는 문제로 최신 드라이버는 ACPI 와 개선된 net API 등을 사용해서 또 바로 사용해서 컴파일 할 수 없으므로, 이를 기존 kernel 4.4 에 맞도록 수정한 ..
임베디드 리눅스 데스크탑 CPU 동작 속도 및 온도 모니터 프로그램 임베디드 리눅스를 쓰시는 분들이 요즘 많이 보급화 되고 있는 라즈베리파이 같은걸 통해서 꽤 늘어 나고 있는 것으로 사료 되어 한번 만들어 본 CPU 모니터 프로그램을 공개 합니다. 물론 오픈소스이며, 누구나 참여 가능한 상태 입니다. 이 프로그램은 htop 이나, 기본으로 제공하는 task manager 와 달리 CPU 온도와 각 core 간의 동작 속도를 확인 하기 편하게 만들어 진 것으로, 이미 잘 만들어져 유명한 존재들과 달리 임베디드의 목적에 맞게 동작온도와 실제 클럭의 동작 속도 ( 쓰로틀링 여부 확인 ) 등을 종합적으로 확인 할 수 있도록 만든 간단한 프로그램 입니다.특징ARM Little/Big core 에 대한 자동 그래프 비율 표시각 core 마다 동작 속도 실시간 측정core 갯수에 따..
PIGZ 2.4+ Windows 빌드 PIGZ 는 Parallel Implementation of GZip 의 약자로, https://zlib.net/pigz/ 에서 소스를 내려 받아 빌드 하거나, 많은 형태의 미리 빌드된 패키지로 내려 받을 수 있습니다만, 윈도우에서는 MSYS2 같은걸 쓰지 않는 이상 사실 사용이 어려운 경우가 많습니다. 그래서 미리 static 으로 빌드한 바이너리 두개를 올리니 필요하신 분들은 내려 받아 사용이 가능 합니다만, 이 프로그램은 GUI 같은게 없는 console 용 입니다. x86 32/64 를 따로 빌드해서 첨부하고 있으니, 자신의 시스템에 맞게 사용하시면 됩니다.
보케 효과를 만들어 보기 #2 - 성능향상 이 글은 이전 "보케 효과를 만들어 보기 #1" 에 이어지는 글 입니다. 혹시 이 글을 이전 글 보다 먼저 보신 분은 먼저 앞선 글을 읽고 오시면 더 이해 하시기 편할 것으로 예상 됩니다. 향상된 보케(빛망울) 효과 이전 글 에 소개된 보케효과 알고리즘은 0.1 초판으로서 현재 마지막 0.1.7.31 버젼에 비해 많은 것들이 모자란 버젼 이었습니다만, 그간 짬짬히 여러 문제를 수정 하고 성능을 비약적으로 향상 하여 근대의 다중 코어 CPU ( x86 및 ARM 계열 모두 해당 됨 ) 들에서 가장 효과적인 구동을 하도록 발전 하였습니다. 그 중 몇가지 수정 사항은 먼저, 효과를 적용하면서 발생하던 메모리 누수 ( 제 실수 였습니다만 ) 를 제거 하고, OpenMP 의 효과적인 구동으로 각 CPU threa..
보케 효과를 만들어 보기 #1 심도가 낮은 렌즈와, 큰 크기의 촬상면을 가진 DSLR 같은 종류가 아니면 찍기 힘든 사진이 있다면 아마 배경이 뭉개진 이미지들이 아닐까 합니다만, 사실 단순이 Gaussian blur 만 줘서는 큰 렌즈의 빛의 굴절로 인해 생기는 일명 Bokeh 라는 형태를 만들어 내기가 쉽지는 않습니다. 그래서 어떻게 Bokeh 를 만들어 낼까? 란 고민을 하다 scratchpixel.com 에 한 페이지를 보게 되었습니다. circualr shifting 이라는 형태를 가지고 빛이 렌즈와 조리개를 통해 촬상면에 맺히는 형태를 흉내 낸 시뮬레이션 정도 이긴 합니다만 꽤 그럴싸한 결과물을 얻을 수 있었습니다. 원래 소스는 조금 복잡한 처리를 해야 하나, 제가 이를 조금 수정 하여 다음 github 위치에 소스를 공개하..
libsrcnn (Super-Resolution Neural Networks) 맥에서 테스트 libsrcnn 이란? 참조1, 참조2 MacOSX 에서의 테스트 이번 테스트는 MacOSX 에서 기본 LLVM-GCC 를 사용하여 zsh로 성능 테스트를 해 보았습니다. 일단 MacOSX 에서는 기본적으로 HPC-GCC 가 아니고는 OpenMP 를 통한 CPU 가속을 할 수 없기 때문에, 기본적인 LLVM-GCC 의 Optimization 에 제한적으로 기능을 제한 해야 합니다.테스트 한 MacOSX모델명: MacBook Pro모델 식별자: MacBookPro12,1프로세서 이름: Intel Core i7프로세서 속도: 3.1 GHz총 코어 개수: 2L2 캐시(코어당): 256 KBL3 캐시: 4 MB메모리: 16 GB 테스트 이미지는 크기가 3:2 비율을 가지는 DSLR 로 촬영한 가로 2048px ..