OpenCV 3.4.1 릴리즈

Study/OpenCV 2018. 2. 27. 00:03 |

(3일 전에) OpenCV 3.4.1 버전이 배포되었습니다.


https://github.com/opencv/opencv/releases/tag/3.4.1

https://github.com/opencv/opencv_contrib/releases/tag/3.4.1


자세한 릴리즈 노트는 없지만, DNN 관련된 기능에 대한 많은 패치가 적용이 된 것 같고, 소스 코드 주석의 오타도 상당히 많이 교정이 되었습니다.


그나저나 벌써 OpenCV 4.0에 대한 이야기가 돌고 있는 것 같습니다. 7월 중순에 릴리즈 목표인 것 같고, 그 전에 Alpha가 됐든 Beta가 됐든 프리뷰 버전도 나올 것 같네요. 2.x 버전에서 3.x 버전까지 5~6년이 걸렸는데, 4.x 버전은 엄청 빠르게 진행되고 있는 것 같습니다.

Posted by kkokkal
:

OpenCV 3.4.0 소스 코드를 Visual Studio 2017에서 빌드를 하면 특별한 에러 없이 잘 빌드가 됩니다. 그러나 Visual Studio 2013에서 OpenCV 3.4.0 소스 코드를 빌드하면 에러가 발생합니다. 일단 기본적인 빌드 설정은 아래와 같습니다.


  • Visual Studio 12 2013 x64
  • BUILD_opencv_python3 선택 해제
  • BUILD_opencv_world 선택
  • opencv_contrib 소스 코드 포함
  • WITH_CUDA 선택 해제


위와 같이 설정한 후 Visual Studio 2013으로 빌드할 때 나오는 에러 메시지 중 일부를 나열하면 다음과 같습니다.

오류    12    error C2065: 'int32_t' : 선언되지 않은 식별자입니다.    C:\opencv\opencv-3.4.0\modules\dnn\src\darknet\darknet_io.cpp    518    1    opencv_world
오류    14    error C2065: 'major_ver' : 선언되지 않은 식별자입니다.    C:\opencv\opencv-3.4.0\modules\dnn\src\darknet\darknet_io.cpp    518    1    opencv_world
오류    161    error C2061: 구문 오류 : 식별자 'uint64_t' (C:\opencv\opencv_contrib-3.4.0\modules\face\src\face_alignment.cpp)    c:\opencv\opencv_contrib-3.4.0\modules\face\src\face_alignmentimpl.hpp    113    1    opencv_world


opencv_world 모듈을 빌드하려고 하는데 int32_t, major_ver, uint64_t 같은 타입을 인식하지 못하는 것인데요, 사실 기본적인 데이터 타입인 것 같은데 에러가 발생하는 것이 이상합니다.


개인적으로는 위 에러를 해결하기 위해 darknet_io.cpp 파일에 #include <stdint.h> 구문을 추가해서 해결을 했었는데요, OpenCV GitHub를 찾아보니 이미 다른 방식의 해결 방법이 메인 소스에 추가되어 있었습니다.

https://github.com/opencv/opencv/pull/10521/files



위와 같이 <opencv2/core.hpp> 파일 대신 "../precomp.hpp" 파일을 #include 하는 형태로 변경하면 됩니다.


그러나 darknet_io.cpp 파일을 바꾸더라도 face_alignmentimpl.hpp 파일에서도 비슷한 에러가 발생합니다. face 모듈은 opencv_contrib 쪽 소스에 있고, 여기에는 precomp.hpp 파일이 없으므로 face_alignmentimpl.hpp 파일을 열어서 아래와 같이 수정합니다.


위와 같이 수정하고 빌드하면 opencv_world340.dll 파일을 정상적으로 빌드가 됩니다.


추가로 opencv 샘플 프로젝트를 빌드할 때 dnn 아래쪽 샘플 프로젝트에서도 빌드 에러가 발생합니다. 이때는 torch_enet.cpp 파일에서 에러가 발생하는데요, 이 파일을 열어서 아래와 같이 수정하면 에러가 사라집니다.


위 수정 사항에서 하나는 "opencv2/core/softfloat.hpp" 라고 쓰고 하나는 <opencv2/core/softfloat.hpp> 라고 입력을 했는데요, 어차피 컴파일러가 해석하는 것은 동일하고 다만 주위 소스 코드 형식을 맞쳐준 것이라고 보면 됩니다.


3줄 요약:

  1. darknet_io.cpp 파일에서 #include <opencv2/core.hpp> 문장을 #include "../precomp.hpp" 로 수정.
  2. face_alignmentimpl.hpp 파일에 #include "opencv2/core/softfloat.hpp" 문장 추가
  3. torch_enet.cpp 파일에 #include <opencv2/core/softfloat.hpp> 문장 추가


'Study > OpenCV' 카테고리의 다른 글

OpenCV Freetype 모듈을 이용하여 영상에 한글 출력하기  (8) 2018.04.04
OpenCV 3.4.1 릴리즈  (0) 2018.02.27
OpenCV 3.4.0 Release  (0) 2017.12.23
Image Watch 2017 사용하기  (3) 2017.12.06
OpenCV 3.3.1 Releases  (0) 2017.10.25
Posted by kkokkal
:

OpenCV 3.4.0 Release

Study/OpenCV 2017. 12. 23. 16:17 |

OpenCV 3.4.0이 릴리즈되었습니다.

일단 3.4.0 버전에서 변경점은 아래 링크를 참고하시구요...
Change Logs: https://github.com/opencv/opencv/wiki/ChangeLog



설치 파일은 아직 OpenCV 공식 사이트에는 올라와있지는 않지만 GitHub 소스 사이트에서 3.4.0 버전 소스 코드를 다운로드 받을 수 있습니다. 아래 두 링크를 참고하세요.

https://github.com/opencv/opencv/releases/tag/3.4.0
https://github.com/opencv/opencv_contrib/releases/tag/3.4.0



Posted by kkokkal
:

간만에 반가운 소식을 전합니다. Visual Studio 2017에서 공식 지원하지 않았던 Image Watch가 이제 공식적으로 지원됩니다. Image Watch는 OpenCV 라이브러리의 Mat 객체를 영상의 형태로 보여주는 디버깅 툴인데요, Visual Studio 2015까지만 공식지원하고 Visual Studio 2017에는 설치를 할 수 없었습니다.  이때문에 Visual Studio 2017 대신 2015 버전을 계속 사용한다는 OpenCV 개발자들도 있었는데요, 다행히 오늘 Visual Studio 2017을 최신 버전으로 업데이트를 하고 나니 "Image Watch 2017"이라는 새로운 이름으로 확장 프로그램을 설치할 수 있었습니다. Image Watch 2017에 대한 자세한 설명은 아래 링크를 참고하세요.

https://marketplace.visualstudio.com/items?itemName=VisualCPPTeam.ImageWatch2017


그럼 이제부터 Visual Studio 2017에 Image Watch 2017을 설치하는 방법을 자세히 설명하겠습니다. 먼저 Visual Studio 2017을 최신 버전으로 업데이트를 합니다. 2017년 12월 6일 현재, 최신 버전은 15.5.0 입니다. 저도 방금 전에 업데이트 알림이 떠서 업데이트했습니다. Visual Studio를 15.5.0 버전으로 업데이트하지 않으면 Image Watch 2017을 설치하지 못할 수도 있으니 꼭 업데이트를 하세요. 참고로 15.5.0 업데이트에서 변경된 사항은 아래 링크에 나와 있습니다. (Visual C++ 항목에서는 그다지 눈에 띠는 내용은 없는 것 같네요.)

https://www.visualstudio.com/en-us/news/releasenotes/vs2017-relnotes#15.5.0


자, 그럼 최신 버전의 Visual Studio를 사용하고 있다고 가정하구요, Image Watch 2017을 설치하는 방법을 설명하겠습니다. 일단 Visual Studio를 실행하시구요, 메뉴에서 [도구] -> [확장 및 업데이트]를 선택하세요. 그러면 "확장 및 업데이트" 창이 새로 뜨는데요, 여기서 왼쪽 항목 중에서 [온라인] 항목을 선택하고, 오른쪽 상단의 검색창에 "Image Watch"라고 입력하세요. (Image와 Watch 사이에 빈 칸이 있어야 합니다.) 그러면 아래 그림처럼 "Image Watch 2017" 항목을 찾을 수 있을 겁니다. 이 항목을 선택한 후 [다운로드] 버튼을 클릭하세요. 간혹 "Image Watch"라고 입력을 했는데도 아래처럼 "Image Watch 2017" 항목이 나타나지 않으면 검색어를 "opencv"라고 입력하셔도 됩니다.



[다운로드] 버튼을 클릭했으면 일단 Visual Studio를 완전히 종료하세요. 그러면 아래와 같은 창이 나타납니다. 여기서 [수정] 버튼을 클릭하면 본격적인 Image Watch 2017 설치가 시작됩니다.



약간의 시간이 흐른 뒤 설치가 완료되면 아래 창이 나타납니다.



잘 설치가 된 것 같죠? 이제 실제로 Image Watch 2017을 사용해보도록 하겠습니다. Visual Studio 2017을 실행하고, 간단한 OpenCV 예제 프로그램을 작성합니다. 아래 그림에 나타난 HelloCV 예제 프로젝트는 제가 패스트캠퍼스에서 "OpenCV와 함께하는 컴퓨터 비전 프로그래밍" 캠프에서 가장 먼저 설명하는 예제 프로그램입니다. 레나 영상을 그레이스케일 형태로 불러와서 영상의 반전을 수행하는 코드입니다.



Image Watch 2017을 사용하려면 Debug 모드로 프로젝트를 빌드해야하고, 원하는 코드 라인에 중단점(breakpoint)를 지정한 후 [디버그] -> [디버깅 시작]을 수행해야 합니다. 위 그림에서는 imshow 코드를 수행하기 전에 중단점이 걸려있습니다. 이렇게 프로그램이 중단점에 의해 멈쳐 있을 때, Visual Studio 메뉴에서 [보기] -> [다른 창] -> [Image Watch] 메뉴를 선택하면 그림 오른쪽에 보이는 Image Watch 창이 나타납니다. 그리고 Image Watch 창에 나열된 Mat 클래스 타입의 변수를 선택하면 해당 변수에 저장된 영상을 (픽셀 값 숫자의 나열이 아닌) 말 그대로 영상 형태로 볼 수 있습니다. 편리하죠?? :-)



Posted by kkokkal
:

OpenCV 3.3.1 Releases

Study/OpenCV 2017. 10. 25. 21:36 |

소리소문없이 OpenCV 3.3.1 버전이 나왔습니다. 기존 OpenCV 3.3.0 버전이 8월 초에 나왔으니까 두달 좀 지나서 버그패치(?) 성격의 revision update 버전이 나온 것 같습니다.


OpenCV 3.3.1 버전은 OpenCV 공식 사이트에는 나타나있지 않고 GitHub 소스 사이트에만 아주 조용히 태그가 그어져서 릴리즈 되고 있습니다. (10/26 추가: 글을 올리고 하루가 지나고 나니까 OpenCV 공식 사이트에도 OpenCV 3.3.1 버전이 올라가 있네요.) OpenCV 기본 모듈과 추가 모듈(extra module) 소스 코드는 아래 링크에서 다운받을 수 있습니다.


https://github.com/opencv/opencv/releases/tag/3.3.1

https://github.com/opencv/opencv_contrib/releases/tag/3.3.1



방금 전에 직접 다운받아서 Visual Studio 2017에서 빌드해보니 큰 문제없이 잘 빌드가 되었습니다. 빌드 방법은 예전에 유투브에 올려놓은 동영상을 참고하세요. (https://youtu.be/IhjUSJT60KI 참고)


참고로 공식 릴리즈 문서는 없어서 확실한 변경점은 확인할 수 없지만 대부분 DNN 관련 패치인 것으로 판단됩니다.

Posted by kkokkal
:

파이썬을 처음 접하고 잘 적응하기 어려웠던 것이 쥬피터 노트북(Jupyter notebook)이었습니다. 아무리 파이썬이 스크립트 언어라고 하더라도, 굳이 몇 줄씩 나눠서 실행을 하면서 그 결과를 보는 것이 얼마나 큰 개발 효율이 있을까 의아했었는데요, 쓰다보니 적응이 되고 알아갈수록 좋은 구석이 많이 있다는 점을 느낄 수 있었습니다. 아래 동영상 강좌도 꽤 좋았습니다.

https://youtu.be/SLPo0o_HArs


그나저나 쥬피터 노트북을 사용하다 보면 소스 코드의 폰트가 맘에 들지 않았는데요, 인터넷을 찾아보니 폰트를 바꾸는 방법이 설명이 되어 있어서 적용해봤습니다. (http://pinkwink.kr/1039 참고)


일단 아래 모양이 쥬피터 노트북 기본 모습입니다.


아마도 Arial 폰트가 아닐까 싶은데요, 글씨도 작고 코드 가독성도 떨어집니다. 이 폰트를 제가 즐겨쓰는 Consolas로 변경하고, 폰트 크기도 14로 변경하려고 합니다.


일단 Windows 환경이라면 C:\Users\<사용자ID>\.jupyter 폴더에 쥬피터 노트북 설정이 있는데요, 그 아래에 custom 이라는 이름의 폴더를 만들고, 그 아래에 custom.css 라는 텍스트 파일을 만듧니다. 그리고 그 파일에 아래와 같이 css 코드를 입력합니다.

.CodeMirror pre {font-family: Consolas; font-size: 14pt; line-height: 140%;}


css 파일 전체 패스명이 c:\Users\<사용자 ID>\.jupyter\custom\custom.css 임을 확인하세요. 그리고 다시 쥬피터 노트북에서 소스 코드를 확인하면 아래와 같이 화면이 나타납니다.


글씨가 큼직하니 보기 좋네요~ 대문자 i랑 소문자 L도 구분이 잘 됩니다.




'Study > Python' 카테고리의 다른 글

Notepad++ 에서 Python 실행하기  (0) 2017.07.31
Posted by kkokkal
:

제가 OpenCV 강의에서 예제 프로그램 실습을 진행할 때, 예전에는 Visual Studio, 특히 Visual C++에서 [Win32 콘솔 응용 프로그램] 형식으로 새 프로젝트를 만들어서 코딩을 했습니다. 특히 stdafx.h 파일을 사용하는 "미리 컴파일된 헤더" 기능을 사용하지 않는 프로젝트를 만들기 위해 응용 프로그램 설정 창에서 "빈 프로젝트" 항목을 선택하여 프로젝트를 만들었는데요...


최근에 Visual Studio 2017 버전이 15.3 이상으로 변경되면서 Win32 콘솔 응용 프로그램 템플릿이 아예 사라져버렸습니다. 대신에 가장 비슷해보이는 [Windows 콘솔 응용 프로그램] 템플릿을 사용하면 stdafx.h 파일을 사용하는 프로젝트를 만들어줘서 난감했었는데요..


인터넷을 찾아보니 Visual Studio 2017 릴리즈 노트에 해당 내용이 적혀있었습니다.

https://www.visualstudio.com/ko-kr/news/releasenotes/vs2017-relnotes


위 링크에서 중간쯤 내려보면 아래와 같은 내용이 적혀있네요.


위에서 맨 마지막에 적혀있듯이 이전의 [Win32 콘솔 응용 프로그램]과 같은 형식으로 새 프로젝트를 만들려면 [Windows 데스크톱 마법사] 항목을 선택하면 됩니다.


예를 들어, Visual Studio 2017에서 [파일] -> [새로 만들기] -> [프로젝트] 메뉴를 선택하고, 새 프로젝트 창에서 [Windows 데스크톱 마법사] 항목을 선택한 후 [확인] 버튼을 클릭합니다.


그러면 아래와 같은 옵션 창이 나타나는데요,


여기서 기본 선택되어 있는 [미리 컴파일된 헤더] 항목의 선택을 해제하고, [빈 프로젝트] 항목을 선택하면 완전히 비어있는 새 프로젝트를 만들 수 있습니다. 그리고나서 [프로젝트] -> [새 항목추가] 메뉴를 선택하여 새 소스 파일 또는 헤더 파일을 추가하여 코딩을 시작하는 것이죠.

음.. 이제 Win32라는 용어도 점차 사라지는 추세인 것 같네요..



Posted by kkokkal
:
딥러닝 공부를 다시 조금씩 시작하려고 합니다. 올해 초에도 텐서플로우를 깔아서 공부를 조금 하려다가 다른 일로 인해 잠시 미뤄놨었는데요, 다시 공부를 해보려고 합니다. 파이썬과 텐서플로우도 새로 설치를 하구요. 인터넷에 무수히 많은 텐서플로우 설치 방법이 설명이 되어 있긴 합니다만, 다들 이전 버전의 경험을 위주로 작성을 해놓은 내용들이 많아서 현재는 틀린 내용들이 많이 있었습니다. 그래서 정말 무수히 많은 설명과 블로그, 페이스북 코멘트를 읽고, 여러 대의 PC에 직접 설치를 해보고 난 후 결론지은 (현재 시점에 알맞는) 설치 방법을 공유합니다.텐서플로우 설치를 위한 일반적인 순서는 아래와 같습니다.

  1. Anaconda 설치
  2. CUDA 설치 (GPU only)
  3. cuDNN 설치 (GPU only)
  4. TensorFlow 설치


이 글에서는 GPU 버전이 아닌 일반 CPU 버전을 설치하는 방법을 설명합니다. CPU 버전 설치를 잘 이해하면 GPU 버전 설치도 그리 어렵지는 않습니다. 이 글 맨 뒤에 GPU 버전 설치를 위한 간단한 코멘트를 남겨두도록 하겠습니다.


1. 아나콘다(Anaconda)를 이용하여 파이썬(Python) 설치하기


텐서플로우를 다루는 메인 랭귀지는 파이썬입니다. 그러므로 텐서플로우를 설치하기에 앞서 컴퓨터에 파이썬 인터프리터를 설치해야 합니다. 파이썬을 설치하는 방법은 크게 두 가지가 있습니다. 하나는 파이썬 자체만을 설치하는 방법인데요, https://www.python.org/downloads/ 사이트에서 파이썬 설치 파일을 다운로드 받을 수 있습니다. 그러나 텐서플로우를 제대로 사용하기 위해서는 파이썬 자체만 있어서는 안되고 numpy나 matplotlib 같은 몇몇 모듈도 추가로 설치를 해야하는데요, 이 작업이 조금 번거로울 수 있습니다. 그래서 파이썬과 자주 사용하는 파이썬 모듈을 포함하여 배포하는 배포판을 사용하는 것이 편리한데요, 아나콘다(Anaconda)가 가장 유명합니다.


아나콘다는 https://www.anaconda.com/download/ 사이트에서 다운로드 받을 수 있습니다. 얼마 전까지만 하더라도 웹사이트 주소가 https://www.continuum.io/downloads/ 였습니다만, 최근에 https://www.anaconda.com/download/ 쪽으로 리다이렉션되고 있습니다. 현재 아나콘다 최신 버전은 4.4.0이고, 이 버전은 내부에 파이썬 3.6을 포함하고 있습니다. (정확하게는 Python 3.6.1입니다.)


[참고]
인터넷에 파이썬 3.6에서는 텐서플로우가 동작하지 않는다는 얘기가 아직도 많이 돌아다니고 있습니다만, 이건 이미 과거의 이야기입니다. 현재 최신 버전의 텐서플로우는 파이썬 3.6버전에서도 잘 동작합니다. 정확하게는 (2017년 6월에 릴리즈된) 텐서플로우 1.2.0 버전부터 파이썬 3.6을 지원한다고 되어 있습니다.


[참고]
인터넷에 파이썬을 먼저 설치하고 아나콘다를 또 설치하는 방법을 설명하는 문서가 많은데요, 잘못된 설치 방법입니다. 아나콘다만 설치하면 파이썬이 포함되어 같이 설치됩니다.



위 그림에서 왼쪽 녹색 사각형의 Download 버튼을 클릭합니다. 혹시라도 아직도 32비트 Windows를 사용하고 있다면 지금이라도 64비트 Windows를 설치하여 사용하기를 권장합니다. 다운로드 버튼을 클릭하면 Anaconda3-4.4.0-Windows-x86_64.exe 파일을 다운로드를 할 것이고, 이 파일을 그대로 실행하여 아나콘다 설치를 진행합니다.



아나콘다를 설치할 때 아나콘다 사용자를 Just Me와 All Users 둘 중 하나를 고를 수가 있는데요, 원하는 형태를 고르시면 됩니다. Just Me를 선택하면 C:\Users\<id>\Anaconda3 위치에 프로그램이 설치되고, All Users를 선택하면 C:\ProgramData\Anaconda3 위치에 설치됩니다. 실제 사용할 때는 큰 차이가 없을 것 같네요.



Advanced Options에서 아나콘다 설치 폴더를 환경변수 PATH에 등록할 것인지를 물어보는데요, 디폴트로는 선택이 해제되어 있습니다. 예전 버전에서는 디폴트로 선택이 되어 있었지만, 최근 버전에서는 디폴트로 선택을 해제하도록 해놓았네요. 개인적으로는 패스 설정되어 있는 것이 훨씬 편해서 Not recommended라고 되어 있음에도 선택을 하고 설치를 진행했습니다. 밑에 항목은 파이썬 3.6 실행을 위한 기본 프로그램으로 아나콘다를 설정할 것인지를 물어보는 것인데요, 저는 따로 파이썬을 설치하여 사용하고 있지 않으므로 디폴트 설정을 그대로 따릅니다.



위 그림은 아나콘다 설치가 끝난 후, cmd 창을 열어서 설치된 python과 conda, pip 버전을 확인한 화면입니다.


[참고]
현재 conda 버전이 4.3.21로 되어 있습니다만, 배포판이 나온 후에 약간의 업데이트가 있습니다. 그리고 나중에 사용할 파이썬 개발 환경인 Spyder 모듈도 설치된 버전과 최신 버전이 다릅니다. 그래서 아나콘다 환경을 최신으로 업데이트하려면 아래 명령어를 차례대로 입력합니다.

C:\> conda update conda
C:\> conda update --all


python 설치가 완료되었으면 이제 본격적인 텐서플로우 설치를 알아보겠습니다.


2. 텐서플로우(TensorFlow) 설치


공식적인 텐서플로우 설치 방법은 텐서플로우 웹사이트에 잘 나와 있습니다.

https://www.tensorflow.org/install/install_windows


여기에서도 순수한 Python만 설치한 상태에서 텐서플로우를 설치하는 방법과 Anaconda 환경에서 텐서플로우를 설치하는 방법을 따로 나눠서 설명을 하고 있습니다.


사실 아나콘다는 numpy 등의 여러 모듈을 포함하여 패키지되어 있는 파이썬이라는 개념 뿐만 아니라 conda 명령어로 가상환경을 구성할 수 있어서도 많이 사용합니다. (파이썬 가상 환경에 대해서는 https://dojang.io/mod/page/view.php?id=1168 링크 글을 참고하세요.) conda 가상 환경을 만들면 다른 버전의 텐서플로우 또는 다른 버전의 파이썬을 사용하는 개발 환경을 따로 만들어서 사용할 수 있고, 혹시나 나중에 텐서플로우를 지우고 싶을 때에도 가상환경만 지우면 깔끔하게 지울 수 있습니다.


다만 개인적으로는 가상환경에 익숙하지 않고, 다른 버전의 파이썬이나 텐서플로우 버전을 설치할 일도 없을 것 같아서 저는 가상환경을 만들지 않고 텐서플로우를 설치했습니다. cmd 창에서 아래 명령어를 입력합니다.


C:\> pip install --ignore-installed --upgrade tensorflow



위 그림을 보면 맨 처음에 tensorflow-1.3.0-cp36-cp36m-win_amd64.whl 파일을 다운로드 받아서 설치하는 것을 확인할 수 있습니다. 이 파일은 https://pypi.python.org/pypi/tensorflow 사이트에서도 확인할 수 있는데요, 제대로 설치를 하고 있는 것으로 보이네요.


설치가 완료되었으면 이제 곧바로 텐서플로우 예제 코드가 잘 동작하는지를 확인해보겠습니다. cmd 창에서 python 명령을 입력해서 간단한 Hello Tensorflow 출력 예제를 입력해보았습니다.


import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))



잘 되네요. :-)  (tf.Session() 명령을 입력할 때 뭔가 긴 메시지가 나타나는데요, 무시하셔도 됩니다.)


이것으로 CPU 버전의 텐서플로우 설치를 완료했습니다. 참 쉽죠?


.
.
.
.
.
.


추가로 GPU 버전의 텐서플로우 설치 방법을 아주 간략히 설명하겠습니다. GPU 버전 텐서플로우를 설치하기 위해서는 위에서 설명한 내용 중에, Python 설치 후와 텐서플로우 설치 사이에 CUDA Toolkit과 cuDNN을 설치해야 합니다.


CUDA Toolkit은 https://developer.nvidia.com/cuda-downloads 에서 다운로드 받을 수 있습니다. 타겟 플랫폼에서 Windows -> x86_x64 -> 10 -> exe(local) 선택하면 설치 파일을 다운로드 할 수 있습니다. CUDA Toolkit 최신 버전은 현재 cuda_8.0.61_win10.exe 이고, 설치는 그리 어렵지 않게 진행이 됩니다. 설치가 완료되면 c:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\ 폴더에 기본적으로 설치됩니다.


cuDNN은 https://developer.nvidia.com/cudnn 사이트를 통해 다운로드 받을 수 있는데요, 로그인을 해야합니다. 아이디가 없으면 회원 가입하고 이것저것 설문조사 응해주고나서 파일을 다운로드 받을 수 있습니다. 저는 [cuDNN v6.0 Library for Windows 10] 항목을 선택하여 cudnn-8.0-windows10-x64-v6.0.zip 파일을 다운로드 받았습니다. 이 압축파일에는 DLL 파일, LIB 파일, 헤더 파일들이 들어있는데요, CUDA가 설치된 폴더, 즉 c:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\ 폴더에 적절하게 압축을 풀어주면 됩니다.


[참고]
인터넷에 cuDNN 6.0을 사용하면 텐서플로우가 동작하지 않는다는 얘기도 있습니다만, 이 또한 이미 과거의 이야기입니다. 현재는 텐서플로우에서 cuDNN 6.0도 지원하고 잘 동작합니다.


GPU 버전의 텐서플로우 설치를 위해서는 아래 명령어를 입력하면 됩니다.


C:\> pip install --ignore-installed --upgrade tensorflow-gpu


Posted by kkokkal
:

Visual Studio 2017을 이용하여 OpenCV 메인 소스와 OpenCV Extra module 소스를 모두 빌드하는 방법을 설명합니다.

더불어 Python 3.x 버전에서 OpenCV 3.3을 사용하는 환경을 구축하는 방법까지 설명합니다.



1. OpenCV 3.3.0 소스 코드 다운로드
   - https://github.com/opencv/opencv/releases
   - https://github.com/opencv/opencv_contrib/releases

2. Anaconda 다운로드 & 설치: https://www.continuum.io/downloads

3. CMake 다운로드 & 설치: https://cmake.org/download/

4. C:\opencv 폴더에 OpenCV 3.3.0 소스 코드 압축 풀기

   - C:\opencv ┬ mybuild
                    ├ opencv-3.3.0
                    └ opencv_contrib-3.3.0

5. CMake를 이용하여 opencv.sln 파일 생성

6. Visual Studio 2017을 이용하여 빌드 (Release & Debug)


Posted by kkokkal
:

OpenCV 3.3 버전이 정식으로 릴리즈되었습니다. 원래 7월 중순으로 스케줄이 잡혀있었습니다만 약간 늦어져서 어제 릴리즈가 되었네요. OpenCV 3.3 버전에 대한 소개는 아래 링크를 참고하세요.

http://opencv.org/opencv-3-3.html


OpenCV 3.3 버전에서 가장 큰 변경점은 dnn(deep neural network) 모듈이 이전에 opencv_contrib 쪽에 있다가 이번에 메인인 opencv 소스쪽으로 옮겨졌다는 것입니다. 그리고 Halide(할라이드)라는 새로운 영상 처리 전용 언어를 처음으로 적용하였고, 다양한 최적화와 기능 향상을 추가했다고 합니다. 좀 더 자세한 변경점은 아래 링크를 참고하시구요..

https://github.com/opencv/opencv/wiki/ChangeLog


위 페이지에 나타난 몇가지 항목에 대해 간략한 번역을 해봤습니다. (번역하지 않은 문장도 있으니 자세한 사항은 원문 링크를 참고하세요.)


  • High-level API has been modified and is even more convenient now.
    고수준 API가 개선되어 사용하기 더 편리해졌습니다.

  • The regression tests have been expanded, some new tests have been added. Now, there are 46 of them.
    회귀 테스트가 확장었고, 몇몇 새로운 테스트가 추가되었습니다. 이제 46개의 테스트가 있습니다.

  • Many bugs have been fixed in Torch and TF loaders, as well as in some processing layers. Now we check that on a certain set of networks the results from OpenCV DNN match or very close to the results from the original frameworks. We also check that the results claimed in the papers for such networks are achievable with OpenCV DNN.
    Torch와 TF 로더(loader)와 몇몇 처리 레이어에 있던 많은 버그가 수정되었습니다. 이제 특정 네트워크에서 OpenCV DNN의 결과와 원본 프레임워크의 결과가 일치하는지를 확인합니다. 또한 특정 논문에서 주장하는 결과를 OpenCV DNN을 통해 달성할 수 있는지를 확인합니다.

  • Performance has been substantially improved. Layer fusion has been implemented and some performance-critical layers have been optimized using AVX, AVX2, SSE and NEON. An external BLAS (OpenBLAS, MKL, ATLAS) is not needed anymore.
    성능이 크게 향상되었습니다. 레이어 융햡이 구현되었으며 몇몇 성능이 중요한 레이어는 AVX, AVX2, SSE, NEON 등을 사용하여 최적화되었습니다. OpenBLAS, MKL, ATLAS 같은 외부 BLAS는 더이상 필요하지 않습니다.

  • New samples in C++ and Python have been added.
    새로운 C++과 Python 예제가 추가되었습니다.

  • The optional Halide backend has been added. It can accelerate OpenCV DNN on GPU when the GPU is fast enough. See Deep Learning in OpenCV for details about the module.
    Halide 코드가 추가되었습니다. 이로써 GPU가 충분히 빠른 경우 GPU에서 OpenCV DNN을 빠르게 동작시킬 수 있습니다. 모듈에 대한 자세한 내용은 "Deep Learning in OpenCV"을 참고하십시오.

  • Upgraded IPPICV from 2015.12 to 2017.2 version brought ~15% speed improvement into core and imgproc modules (measured as geometrical mean over the corresponding performance tests).
    IPPICV가 2015.12 버전에서 2017.2 버전으로 업그레이드되어 core와 imgproc 모듈에서 속도가 15%까지 향상되었습니다.

  • Dynamic dispatching of SSE4.2/AVX/AVX2 code has been implemented. Previously, OpenCV had to be built with SSE4.x/AVX/AVX2 turned on in order to use such optimizations and that made it incompatible with older hardware. Now the OpenCV binaries automatically adapt to the real hardware and make use of new instructions if they are available while retaining compatibility with older hardware. All the existing AVX/AVX2 optimizations in OpenCV have been refactored to use this technology. AVX acceleration of DNN also uses dynamic dispatching.
    SSE4.2/AVX/AVX2 코드의 동적 디스패칭이 구현되었습니다. 이전에는 이러한 최적화를 사용하기 위해 SSE4.x/AVX/AVX2를 켜고 OpenCV를 빌드해야했기 때문에 OpenCV는 이전 하드웨어와 호환되지 않았습니다. 이제 OpenCV 바이너리는 실제 하드웨어에 자동으로 적응하고 구형 하드웨어와의 호환성을 유지하면서 사용 가능한 새로운 명령어를 사용합니다. 기존에 있던 모든 OpenCV AVX/AVX2 최적화 기법은 리펙토링되어 이러한 기술을 사용합니다. DNN을 위한 AVX 가속화도 동적 디스패치를 사용합니다.

  • OpenCV can now be configured and built as C++ 11 library. Pass -DENABLE_CXX11=ON to CMake. On some modern Linux distributions, like the latest Fedora, it’s enabled by default.
    OpenCV는 이제 C++11 라이브러리를 사용하여 구성할 수 있습니다. CMake에서 -DENABLE_CXX11=ON 을 설정하세요. 최신 Fedora같은 최근의 리눅스 배포판에서는 C++11 구성이 기본으로 활성화되어 있습니다.

  • New features for C++ 11 users have been added:
    C++11 사용자를 위한 새로운 기능이 추가되었습니다.

  • Support for hardware-accelerated video encoding/decoding using Intel GPUs through Intel Media SDK has been implemented for Linux (in the form of backends for cv::VideoCapture and cv::VideoWriter).
    리눅스에서 인텔 미디어 SDK를 통해 인텔 GPU를 사용하는 하드웨어 가속 비디오 인코딩/디코딩에 대한 지원이 구현되었습니다.

OpenCV 3.3은 아래 링크에서 다운로드 받을 수 있습니다.

https://github.com/opencv/opencv/releases/tag/3.3.0


위 사이트에서 opencv-3.3.0-vc14.exe 파일은 Windows 환경에서 Visual Studio 2015를 이용하여 미리 빌드한 LIB, DLL 파일을 제공합니다. 그러나 이 DLL 파일은 opencv_contrib 쪽 코드는 포함되어 있지 않기 때문에 opencv_contrib 코드까지 사용하려면 아래 두 소스 코드 압축 파일을 다운로드 받아 직접 빌드해야 합니다.

https://github.com/opencv/opencv/archive/3.3.0.zip

https://github.com/opencv/opencv_contrib/archive/3.3.0.zip


이전에 OpenCV 3.3.0-rc 버전의 경우에는 structured_edge_detection.cpp 파일을 수정해야 정상 빌드가 되었었는데요("OpenCV 3.3.0-rc 버전 릴리즈 & Visual Studio에서 빌드하기" 글 참조), OpenCV 3.3 정식 릴리즈에서는 이 코드가 수정이 되어 있네요 :-)


그렇기때문에 CMake로 적당히 설정하면 잘 빌드됩니다. 실제로도 Visual Studio 2017 버전으로 잘 빌드되는 것을 확인했구요.. 추후 시간이 되면 Visual Studio 2017 버전으로 OpenCV 3.3을 빌드하는 방법을 간략히 정리해보도록 하죠.



Posted by kkokkal
: