160919_Installing-Ubuntu-alongside-other-pre-installed-OS.pdf


Windows와 Mac OS X에서 듀얼 부팅으로 Ubuntu를 설치하는 가이드입니다.



Posted by 헬벨

댓글을 달아 주세요

Windows 사용자는 여기로: http://hellbell.tistory.com/entry/Sublime-Text-3-Latex-Plugin-설치-in-Windows-7

OS X El Capitan을 사용함.


가정: MacTex은 이미 설치됨

MacTex: https://tug.org/mactex/ 에서 다운로드


1. Sublime text 3 를 설치한다. (http://www.sublimetext.com/3)

2. Sublime text 3 를 켜고, Package Control 을 설치한다. (패키지 컨트롤은 plugin들을 쉽게 설치할 수 있게 도와주는 애드온임)

설치 방법 : ctrl + ` 눌러서 console 창 띄우고 아래 링크에 있는 내용 복사하여 붙여넣고 엔터.

(https://packagecontrol.io/installation)

3. 이제 command+shift+p 를 누르고 “install ” 입력하고 엔터 -> latextools 입력하고 선택하여 설치.

4. 메뉴의 preferences -> package settings -> latextools -> reconfigure latextools and migrate settings. 으로 설정 완료.

5. 메뉴의 tools -> build system -> LaTex 선택하여 빌드 세팅 완료. 시험삼아 아무 tex파일이나 켜서 command + b (빌드 단축키)로 빌드해보자.

(여기까지는 Windows의 방법과 똑같다.)

6. Skim PDF viewer 설치 (http://skim-app.sourceforge.net)

6-1. 다운로드된 파일이라고 Skim이 열리지 않을 경우, finder에서 skim앱을 control + click하여 drop down 메뉴를 띄우고, 열기를 눌러 실행한다.

7. Skim을 실행하고, Preference -> sync tab으로 이동.

  • Check for file changes을 체크해제
  • Preset type은 Custom을 선택
  • Command에 /Applications/Sublime Text.app/Contents/SharedSupport/bin/subl 를 입력
  • Arguments에  "%file":%line 를 입력
8. 끝.
9. Forward search는 Sublime text에서 command+b 명령으로 빌드하면, skim viewer가 뜨면서 자동으로 현재 line이 강조 표시된다.
Inverse search는 skim앱에서 되돌아가 가고픈 부분을 command+shift+click하면 Sublime text로 돌아간다. 


Posted by 헬벨

댓글을 달아 주세요

  1. 윤군 2016.07.09 16:55  댓글주소  수정/삭제  댓글쓰기

    잘 보고있습니다. 매번 까먹어서 또 왔습니다. ㅋㅋ

OpenCV를 Visual studio 환경에서 debugging할 때는 ImageWatch라는 tool을 사용하면 편리하다.

파이썬에는 ImageWatch가 없어 아쉽지만,,

프로그램 중간 중간의 결과물을 logging해서 볼 수 있는 visual-logging 이라는 툴이 있어 설치해보았다.


예제 코드

from logging import FileHandler

from vlogging import VisualRecord


import cv2

import logging


cv_image = cv2.imread('lenna.jpg')

logger = logging.getLogger("demo")

fh = FileHandler('test.html', mode="w")


logger.setLevel(logging.DEBUG)

logger.addHandler(fh)


logger.debug(VisualRecord(

    "Hello from OpenCV", cv_image, "This is openCV image", fmt="png"))


lenna.jpg를 읽어온 후, logger에 글과 image를 추가하면 html 형식으로 저장이 된다.




Posted by 헬벨

댓글을 달아 주세요

요즘 개발 언어로 주로 MATLAB과 C++(OpenCV)를 사용하는데 

아무래도 MATLAB의 편의성때문에 MATLAB을 이용한 개발을 더 선호한다. 

하지만 MATLAB은 성능 한계가 있고 강력한 OpenCV 라이브러리를 사용할 수 없다는 아쉬움이 있다.

그러던 중 Python은 스크립트 언어로 컴파일의 애로사항이 적으며 OpenCV 라이브러리가 제공된다고 하여 이 기회에 설치하고 익혀보려고한다.


파이썬과 OpenCV 라이브러리를 사용하는 방법은 여러가지가 있다. 

여기서는 Windows 환경과 Visual studio를 IDE로 사용하는 방법을 정리해보겠다. (Python + Sublime Text 의 조합도 좋다고 한다.)

(내 환경: Windows 8.1 64bit, Visual studio 2013)

(OpenCV를 사용해야하므로 Python은 2.7버전을 사용함) 




(이하 설치 방법에 대한 설명. 설치 과정에서 삽질을 좀 하는 바람에 기억이 정확하지 않을 수 있음..)


파이썬 설치방법은 두 가지가 있는 듯 하다.


첫째로, python (https://www.python.org/download/releases/2.7/)에서 설치 파일을 다운 받아 설치하는 방법이 있다.

이 방법은 python의 필수 패키지 (여기서는 pip, numpy, opencv 등)을 직접 설치해줘야 한다.

처음엔 나도 이 방법으로 시도했는데 numpy 를 설치할 때 build 에러가 나서 포기하고 두번째 방법으로 넘어갔다.



두번째 방법은 python + pre-built packages의 통합팩인 python distribution을 설치하는 것이다.

이러한 distribution은 WinPython, Anaconda, Enthought Canopy 등이 있는데, 주변에서 canopy (1.5.2 버전)를 추천받아 설치하였다. 

Enthought Canopy는 매우 쉽고 편리하다는 장점이 있는데, 무료 버전과 유료 버전이 존재한다.

Numpy나 SciPy 같은 기본 package(100+개)는 무료 버전에서도 이용할 수 있으나

OpenCV 같은 package들은 유료 버전(200+개 패키지 제공)에서만 사용할 수 있다.

하지만 잘 읽어보니 학생 계정(@*.ac.kr과 같은)으로 로그인하면 유료 버전을 사용할 수 있는 licence를 제공한다.!

따라서 회원 가입을 학교 메일 계정으로 한 후 설치를 진행하였다.

다른 distribution들은 설치를 안해봐서 모르겠는데, Canopy는 GUI로 패키지를 설치할 수 있어 편리했다. 

NumPy와 OpenCV를 설치하였다. (OpenCV는 2.4.9 버전)



이제 파이썬 설치가 끝났으니 Visual Studio를 켜보자.

Visual Studio에서 Python을 사용할 수 있게 해주는 PTVS에 대한 설명은 https://pytools.codeplex.com/ 에서 참고하도록 하자.

File -> New project -> Python Application 을 선택하여 Python 프로젝트를 생성한다.

Tool -> Option -> Python tools -> Environment options 을 열고, Enthought Canopy 2.7이 default environment로 되어있음을 확인한다.

Tool -> Python Tools -> Python Environment 를 선택하여 Refresh DB를 눌러준다. 



Refreshing DB가 끝나면 설치도 대강 마무리되었다고 할 수 있다.



OpenCV 예제를 돌려보자.


import cv2

from matplotlib import pyplot as plt


img = cv2.imread('img.jpg')


plt.imshow(img)

plt.title('Image')

plt.show()






Posted by 헬벨

댓글을 달아 주세요

  1. 덕후형 2015.06.03 23:34 신고  댓글주소  수정/삭제  댓글쓰기

    왠지 익숙한 사진인데?ㅋㅋ

MATLAB code: 

toy_example_intersection_area.m


Object detection과 같은 과제를 수행할 때 algorithm의 성능을 평가하기 위해 IOU (intersection over union)이라는 지표를 사용한다.

일반적으로 2D image에서 사용되는 IOU는 다음과 같이 구한다.


붉은색 상자(A1): 실제 물체의 bounding box (ground truth) 

파란색 상자(A2): object detection 결과 bounding box

노란색 점선: overlapped area


A1 = [x1  y1  x2  y2] % [xmin, ymin, xmax, ymax]

A2 = [x1' y1' x2' y2']

S(A1) = area of red box = (x2-x1) * (y2-y1)

S(A2) = area of blue box = (x2'-x1') * (y2'-y1')

A_Inter = intersection area of two boxes = ( min(x2,x2') - max(x1,x1') ) * ( min(y2,y2') - max(y1,y1') ) 

A_Union = union area of two boxes = A1 + A2 - A_inter


IOU = (A_Inter) / (A_Union)


PASCAL VOC 기준으로 IOU > 0.5 인 경우에 detection이 성공했다고 할 수 있다.

% 사족으로 IOU > 0.5 라는 것은 두 박스의 크기가 동일하다고 할 때, intersection area가 2/3 이상이 겹쳐야 한다는 뜻으로, 꽤 엄격한 기준이다.



위 방법은 사각형의 rotation을 고려하지 않는다. 

좀 더 일반적인 경우로, 사각형의 rotation이 존재할 때 겹치는 영역의 면적을 구하는 방법을 알아보자.


ㅇㅇ            

(A) Two overlapping boxes                                                 (B) Intersecting Edge Points


            

(C)  Inside Box points                                                            (D) Intersection Polygon


(B) Intersecting Edge Points 구하기 (marker: o)

두 사각형의 변(edge)들의 intersecting point를 구한다.

[xi, zi] = polyxpoly(gt_x, gt_z, this_x, this_z);


(C) Inside Box Points 구하기 (marker: *)

in_gt   = inpolygon(gt_x(1:4),gt_z(1:4), this_x,this_z);

in_this = inpolygon(this_x(1:4),this_z(1:4), gt_x,gt_z);

xi = [xi; gt_x(in_gt)'; this_x(in_this)'];

zi = [zi; gt_z(in_gt)'; this_z(in_this)'];


(D) (B)~(C)에서 구한 points 의 convex hull을 구하고, 내부 area를 구한다. (intersection area: inside green lines)

cv = convhull(double(xi), double(zi));

xi = xi(cv);

zi = zi(cv);

xz_area = polyarea(xi, zi);



Posted by 헬벨

댓글을 달아 주세요

  1. Agile- 2015.05.15 11:42 신고  댓글주소  수정/삭제  댓글쓰기

    성실하군염 ㅋ 나도 블로그로 정리해야겠다.

  2. jj 2018.02.22 09:32  댓글주소  수정/삭제  댓글쓰기

    감사합니다.

    다만 한가지 버그가 있는데

    사각형이 겹치지 않을 상태에서 변이 일치 하게 되면 오류가 뜹니다.

  3. fdsafaf 2019.01.16 13:46  댓글주소  수정/삭제  댓글쓰기

    초보 인공지능 개발자입니다 정말 감사합니다

VS 2013 project

kinect_pcl_test.zip


목적: Kinect v2 SDK로 Kinect device로부터 RGBD frame 입력을 받아온 후, PCL을 이용하여 point cloud를 생성하고 (.pcd) file로 저장.


준비물: 

Visual Studio 2013

Kinect v2 SDK

PCL 1.7.2

OpenCV 2.4.10



첨부한 VS 2013 project는 속성 파일 (KinectSDK2.props, PCL.props) 을 포함하고 있다. 

Include directory와 library directory의 path를 세팅해줘야 한다.

시스템 환경 변수 설정


 PCL_ROOT (생성)

 C:\Program Files\PCL 1.7.2

 Path (추가)

 ;%PCL_ROOT%\bin

 ;%PCL_ROOT%\3rdParty\FLANN\bin
 ;%PCL_ROOT%\3rdParty\VTK\bin
 KINECTSDK20_DIR C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\
 OPENCV_DIR

 Your OpenCV Install DIR

 OPENCV_VER

 Your OpenCV VER (currently 2410)








Posted by 헬벨

댓글을 달아 주세요

  1. tigger 2015.08.19 20:32  댓글주소  수정/삭제  댓글쓰기

    궁금한게 하나 있습니다.

    PCL은 키넥트로 부터 받은 정보들을 OpenNI를 통해 뿌려주게 되는데

    일반적으로 kinect sdk 와 openni는 서로 충돌을 일으켜서 드라이버를 설치하지 않는 이상

    둘이 충돌을 일으키잖아요. 어떻게 sdk와 pcl 을 같이 사용하시는 건가요??

    • 헬벨 2015.09.12 20:20 신고  댓글주소  수정/삭제

      제가 kinect sdk와 pcl을 많이 써보지는 않아서 제대로 답변드릴 수 있을지 모르겠는데요, 위 글의 예제는 kinect sdk로 point cloud정보들을 kinect sdk의 data type으로 입력받은 후, PCL의 data type에 맞게 수정해주는 과정을 포함하고 있습니다.
      따라서 kinect sdk -> openNI로 연결이 되는 것은 아니구요..

  2. 2016.05.09 14:06  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • 헬벨 2016.06.06 21:37 신고  댓글주소  수정/삭제

      안녕하세요. 제가 한달간 자리를 비워서 이제야 답글을 드리네요.
      pcl 라이브러리는 pre-built 버전을 다운받아서 VS의 환경 설정을 하는식으로 사용했습니다.
      VS의 환경 설정은 게시글의 링크나 제가 첨부한 환경설정 파일을 참고하시면 될 듯 합니다.
      잘 해결하시길 바랍니다!

  3. 2018.04.01 02:14  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

준비물: visual studio 2013, Opencv 2.4.10


참고 사이트 (http://www.buildinsider.net/small/kinectv2cpp) - 구글 번역 추천

visual studio 샘플 다운로드 (https://github.com/UnaNancyOwen/Kinect2Sample)



Posted by 헬벨

댓글을 달아 주세요

연구실 과제용 연구용으로 Kinect v2를 구매하여 내 데스크탑에 설치해 보았다.


우선 requirement는 http://www.microsoft.com/en-us/download/details.aspx?id=44561에 나와있듯이 다음과 같다.


Supported Operating System

Embedded 8 Standard, Windows 8, Windows 8.1


    • Recommended Hardware Configuration
      • 64-bit (x64) processor
      • 4 GB Memory (or more)
      • Physical dual-core 3.1 GHz (2 logical cores per physical) or faster processor
      • USB 3.0 controller dedicated to the Kinect for Windows v2 sensor*
      • DX11 capable graphics adapter**
      • A Microsoft Kinect v2 sensor, which includes a power hub and USB cabling

      * If you're adding USB 3.0 functionality to your exisiting PC through a USB 3.0 host controller adapter, please ensure that it is a Windows 8 compliant device and that it supports Gen-2. See the release notes for additional information regarding USB 3.0 compatibility.
      ** For the current list of good known adapters click here 

    • Software Requirements
      • Visual Studio 2012 or Visual Studio 2013


여기서 좀 크리티컬한 부분이 Windows 8 이상 OS가 필요한것과 USB 3.0 이 필요하다는 정도가 있다.

MS kinect forum쪽 글을 봐도 Windows 7에서 지원해줄 생각은 그닥 없는 것 같아서 일단 Windows 8.1을 설치하고 키넥트를 설치해보았다.


Kinect v2 SDK를 설치하여 구동시켜보려 했으나!

안타깝게도 장치를 인식하지 못하였다.


현재 사용중인 메인보드는 ASUS P8H67 로, 

  • USB Ports
    ASMedia® USB 3.0 controller : 
    2 x USB 3.0 port(s) (2 at back panel, blue)
    Intel® H67(B3) chipset : 
    12 x USB 2.0 port(s) (6 at back panel, black, 6 at mid-board)

USB 3.0 컨트롤러가 있다길래 당연히 키넥트가 구동이 될 것이라 생각했지만,


해당 현상에 대해 구글 검색을 해본 결과 (https://social.msdn.microsoft.com/Forums/en-US/bb379e8b-4258-40d6-92e4-56dd95d7b0bb/confirmed-list-of-usb-30-pcie-cardslaptopsconfigurations-which-work-for-kinect-v2-during?forum=kinectv2sdk),


Confirmed not working:

  • Controller with ASMedia ASM 104x chipset
  • HooToo HT-PC002 (VIA based chipset)
  • Texas Instruments USB3 chipset on my HP Z420
  • Anker USB 3.0 PCI-E
  • Etron usb 3.0 Extensible host controller
  • IOGEAR GEU302 2-port USB 3.0 ExpressCard(with external power)


아니 이게 무슨소리요 MS양반...

ASMedia 칩셋의 USB 3.0은 지원하지 않는단다.. (Intel이나 Renesas 계열은 된다고 한다)


그래서 확인된 외장 USB 3.0 어댑터를 구매하기로 결정,

가격이 저렴한 Transcend TS-PDU3 USB3.0 Expansion Card 를 구매하여 설치하였다.

결과는 Renesas USB 3.0을 성공적으로 인식하였다.


(SDK browser의 여러 demo를 돌려본 결과들)



그런데 이상한 부분이, Configuration verifier를 실행해본 결과 USB를 제대로 인식하지 못하며, Kinect sensor로 들어오는 입력 또한 30FPS가 아닌 20FPS 근처로 다소의 프레임 드랍이 발생하는 것을 볼 수 있었다.




이 문제에 대해 좀 검색을 해보니, PCI-ex가 kinect에서 원하는 bandwidth인 5Gbps를 원활히 제공하지 못할 수도 있다고 한다.

이를 해결해 보기 위해 여러 PCI 슬롯을 바꿔감 USB 3.0 카드를 설치하여 작업해보았으나 동일한 결과를 얻을 수 밖에 없었다.

아무래도 메인보드에서 제공하는 bandwidth가 낮아서 해결이 힘들 것 같다.


고생하면서 설치했지만 frame drop때문에 실험이 힘들어질 수도 있겠다고 깨달았다. 

연구실에 사양이 더 좋은 실험 컴퓨터에 windows 8.1을 설치하고 키넥트를 구동해보던지 해봐야 할듯 하다. 



Posted by 헬벨

댓글을 달아 주세요

  1. 덕후형 2014.12.26 01:26 신고  댓글주소  수정/삭제  댓글쓰기

    윈도 8 깔던게 이거 때문이었군ㅋㅋ
    키넥트로 저렇게 인식되는거 신기하네

  2. 헬벨 2014.12.26 14:28 신고  댓글주소  수정/삭제  댓글쓰기

    설치에 모든 힘을 빼고 막상 지금은 안돌리고 있는중 ㅋㅋ
    기본 SDK인데 꽤 빠른 속도로 저렇게 3d 구조를 뽑아주더라고-

  3. jakeoung 2015.03.25 14:33  댓글주소  수정/삭제  댓글쓰기

    안녕하세요, 혹시 bandwidth 문제를 해결하셨나요?

    저도 지금 설치 때문에 모든 힘이 소진되고 있네요 ㅠ_ㅠ

    • 헬벨 2015.04.09 08:53 신고  댓글주소  수정/삭제

      댓글을 늦게 봐서 답변이 늦었네요.
      저도 계속 frame rate에 drop이 생겨서 bandwidth 문제를 해결하려고 찾아보았는데요, 결국은 해결 못하고 연구실에서 연구용으로 서피스 프로 3를 구매하였습니다.
      도움 못드려 죄송하네요 ㅠ

  4. kinect 어려워 ㅠㅠ 2015.08.26 17:06  댓글주소  수정/삭제  댓글쓰기

    저도 글쓴분과 마찬가지의 문제로 같은 usb3.0 제품을 구입하여 kinect를 연결하였는데요. kinect configuration verifire에서 usb controller 빼고는 다 정상인데요. 몸이랑 얼굴 tracking을 못하네요. fps는 항상 30으로 꾸준한데도 말이죠. 도데체 어느부분에서 잘못된것인지 혹시 아신다면 조언 부탁드립니다!!

  5. ccs 2016.02.26 12:06  댓글주소  수정/삭제  댓글쓰기

    구입을 혹시 어디서 하셨는지 궁금하네요..

  6. 감사합니다 2016.04.18 12:01  댓글주소  수정/삭제  댓글쓰기

    저도 키넥트를 연결했는데 인식을 못 해서 골치아팠는데 덕분에 해결했습니다. 감사합니다.

너무 잘 정리되어있음

http://stackoverflow.com/questions/11550021/converting-a-mat-file-from-matlab-into-cvmat-matrix-in-opencv


단점이 있다면 2D matrix 만이 변환이 가능하다는 것.

나중에 3D 이상의 matrix 변환이 필요할 경우 openCV의 mat container가 3D 이상의 matrix를 어떻게 생성하고 저장하는 지 공부하여 소스 코드를 수정할지도 모름.

Posted by 헬벨

댓글을 달아 주세요

Segmentation 성능이 우수하고 빠르다고 알려져 있고는 SLIC 수퍼픽셀 알고리즘 

논문(TPAMI 2012), 프로젝트 페이지




소스 코드가 사용하기 쉽게 제공되는 편이지만, 직접 visual studio나 MATLAB 등에서 이용하려면 약간의 수정이 필요하다.


visual studio 2012 프로젝트, 혹은 MATLAB에서 execute file로 사용 가능하도록 수정하였다.



사용방법은 execute argument로 

// argv[1]: image file name

// argv[2]: k

// argv[3]: m

// argv[4]: save superpixel path

를 입력하면 된다.


예시: >>SLIC_console.exe sampleimage.jpg 200 20 c:/superpixelsavepath/

순서대로 superpixel을 수행할 이미지, K(superpixel 수), M(compactness factor), superpixel 결과를 저장할 경로 이다.





Posted by 헬벨

댓글을 달아 주세요

  1. 헬벨 2014.07.22 10:55 신고  댓글주소  수정/삭제  댓글쓰기

    http://www.vlfeat.org/overview/slic.html
    EPFL일때 눈치챘어야 하는데 VLFEAT에 들어가있음...

  2. KJJ 2015.01.20 11:47  댓글주소  수정/삭제  댓글쓰기

    감사합니다. 꾸벅

  3. 2016.12.26 16:18  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

  4. 헬벨 2017.01.02 23:58 신고  댓글주소  수정/삭제  댓글쓰기

    네 가능합니다. superpixel 결과의 map이 각 segment의 id를 갖도록 출력되는 것으로 기억하는데요.
    segment 의 id에 해당하는 영역을 random color로 칠해주면 될 것 같습니다:)