[OpenCV] 설치하기-2(OpenCV 설치)

 

저번에는 OpenCV를 돌릴 수 있는 개발환경인 Visual Studio Community 2017를 설치해 보았습니다.

 

이번에는 실제로 OpenCV를 다운로드 받고 개발환경과 연동하는 방법에 대하여 알아보도록 하겠습니다.

 

1) 먼저 https://opencv.org/releases/에 접속하여 OpenCV를 다운로드 받습니다.

저희는 4.1.0버전의 Windows용을 다운받을 것입니다.

 

2) 다운받은 exe파일을 실행하여 압축을 풉니다. 경로는 C:\만 지정하도록 하겠습니다.

 

3) 제어판 -> 시스템 -> 좌측의 "고급 시스템 설정" 클릭 -> 아래쪽의 "환경변수" 클릭 -> 위 아래로 두개가 있는 "새로 만들기" 중 위쪽에 있는 "새로만들기" 클릭 ->

변수이름: OPENCV_DIR

변수 값: C:\opencv\build

입력 후 확인

 

4) "환경 변수" 창에서 "새로 만들기" 위에 리스트에서 "Path"라고 적힌 부분을 찾아서 "편집" 클릭

5) 환경변수 편집 창에서 새로만들기 누른 후

%OPENCV_DIR%\x64\vc15\bin

입력 (만약 윈도우 버전이 낮은 경우 편집을 누르면 한줄로 길게 입력하는 프롬프트가 생성됨. 여기서 뒤에 ;찍고 위의 내용 입력하면 가능)

 

이렇게 하여 OpenCV설치와 환경 변수에 등록하는 것까지 마쳤습니다.

 

다음에는 실제로 Visual Studio와 연동해 보겠습니다.

 

 

Reference: OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝

Jupyter notebook이 자동으로 브라우저를 열어주지 못할 때 대처법

 

bash command가 작동하는 상황(mac os terminal, git bash, etc)에서

크롬브라우저가 깔려있을 때

 

$ export BROWSER="Chrome";jupyter notebook

 

하면 자동으로 크롬 브라우저가 열린다.

 

이후에는

 

$ jupyter notebook

 

만 쳐도 크롬으로 열린다.

[OpenCV] 설치하기-1(Visual Studio 2017 설치)

 

 

OpenCV는 C++에서도 파이썬Python에서도 사용할 수 있지만(기본적으로 두개밖에 사용 안해봄) 사실 파이썬에서 사용하는 것은 C++로 작성된 패키지를 래핑Wrapping해서 사용하는 것이기 때문에, 기본적으로 C++로 진행하겠습니다.

 

C++을 사용하기 위해서 Visual Studio를 깔아야하는데, OpenCV가 VS2017 버전으로 만들어져서, 최신버전은 2019이지만 Visual Studio 2017을 설치해보겠습니다.

 

1) https://visualstudio.microsoft.com/ko/vs/older-downloads/에 접속

 

2) 아래쪽의 2017을 누른 뒤 새로 나타나는 파란색 버튼을 클릭하여 다운로드 받는다. (이 과정에서는 로그인이 필요하다.)

 

3) 눌렀을 때 "죄송합니다. 다운로드 항목을 찾을 수 없습니다.(Sorry, we couldn't find any downloads for you.)"라는 메시지가 나오면 Visual Studio Dev Essentials에 가입되지 않은 상태라 다운로드를 받을 수 없는 상태이다.

 

    이 경우에는 빨간색 쳐진 링크를 누른 뒤

 

    빨간색으로 표시된 파란 버튼을 클릭하면 확인하는 팝업이 하나 뜨게 되고, 거기서 확인(confirm)을 누르면 가입이 된다.

    가입 된 상태에서 다시 위의 주소로 들어가서 2017 다운로드를 누르면 이번에는 제대로 다운로드 페이지로 들어가진다.

 

4) 그러면 아래와 같이 여러 다운로드 항목이 있을 텐데, 여기서 Visual Studio Community 2017 / Korean / EXE를 선택하고 옆에 다운로드를 눌러준다.

5) 이제 다운을 받고 실행을 시키면 설치를 진행한다. 여기서 꼭 설치 중간에 어떤어떤 프로젝트들을 할 것인지 물어보는 창에서(C++로 개발할건지, 안드로이드 개발할건지, Python개발할 건지 등등..) 꼭 "C++를 사용한 데스크톱 개발"항목을 선택하고 진행하여야 한다.

 

6) VS2017이 설치되었다!

 

 

 

Reference: OpenCV 4로 배우는 컴퓨터 비전과 머신 러닝

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

[OpenCV] OpenCV 설치-3(Visual Studio와 연동)  (0) 2019.09.05
[OpenCV] 설치하기-2(OpenCV 설치)  (0) 2019.09.04

로지컬 씽킹(Logical thinking)

 

1970년대 후반에 만들어진 개념으로 어떤 문제를 빠짐없이 쪼개보는 것을 말한다.

 

이렇게 질문을 쪼개면 개개인의 관찰이 힘을 얻게되고 결과적으로

 0) 문제의 해결을 위해 시도한 모든 것들의 완전한 실패가 없어진다.

 1) 질문의 퀄리티 향상 => 개개인의 관찰이 힘을 얻음 => 집단지성의 근간

 2) 가설 설정 가능

 3) 작업계획(누가 언제까지 무엇을) 설정 가능

 4) 결과가 설득적이 된다.

 

그리고 이를 위해서는 말이 최대한 쉬워야 한다.

 

보통 구조화->가설 설정->확신도 평가->검증->정리의 흐름을 가진다.

 

로지컬 씽킹은 가설을 설정한 뒤 그 가설을 검증하는 과정이지만 이와 반대로 분석적 사고는 가설을 설정하지 않은 채 모든 경우의 수를 하나하나 다 확인하는 방법이다.

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

에어컨에서 최저온도가 16'C에서 18'C인 이유  (0) 2019.08.21

[아두이노] 아두이노 통합개발환경(IDE, Integrated Development Environment)(스케치, sketch) 설치방법

 

 

아두이노 통합개발환경을 설치하는 방법은 매우 쉽습니다.

 

1) https://www.arduino.cc/en/Main/Software에 접속합니다.

 

2) 접속하면 아래와 같은 창이 뜰 것입니다.

 

3) 여기서 윈도우즈 8.1이나 10이면 파란색 박스를 통해서 마이크로 소프트 스토어를 통하여 받을 수 있기는 하지만, 정말 시간이 어마어마하게 오래 걸립니다.(다운로드 속도가 엄청나게 느려요)

 

4) 그래서 그냥 빨간색 박스쳐진 링크를 통하여 .exe파일을 다운로드 받습니다. (다른 OS를 사용하신다면 하단의 Mac이나 Linux를 통하여 다운로드 받으시면 됩니다.)

 

5) 도네이션의 경우 기부금을 낼지 안낼지 설정하는 부분인데, 저희는 일단 무료 다운로드를 진행하도록 하겠습니다. 빨간색으로 표시된 글자를 눌러주세요!

 

6) 파일을 다운로드 받은 이후에는 파일을 실행시킨 뒤에 그냥 계속 Next버튼 누르시고 설치하시면 됩니다!

 

7) 중간에 "윈도우 보안"이라면서 어떤 창이 팝업으로 뜨면 "설치"를 누르시면 됩니다. (한 세번정도 뜰 것입니다.)

 

8) 이후엔 바탕화면에 바로가기 버튼이 생성된 것을 보실 수 있으시고, 이 바로가기 버튼으로 아두이노 IDE를 실행하실 수 있습니다!

어원풀이(etymology): Salbutamol(살부타몰)(=Albuterol(알부테롤))[벤토린(Ventolin)] - 속효성 기관지 확장제, 속효성 베타-2 작용제, Short Acting Beta-2 adrenergic receptor Agonist(SABA)

 

Salbutamol: Sal(icyl)but(yl)am(ine)ol(-ol is suffix of alcohol)

albuterol: (s)al(icyl)bu(tyl)ter(tiary)[<-change order of tertiary butyl]ol

 

기관지 평활근에 있는 아드레날린성 수용체인 beta-2 adrenergic receptor에 작용하여 기관지의 확장을 일으키는 약물이다.

SABA계열이므로 특히 MDI(Metered Dose Inhaler)로 많이 쓰인다.

가장 많이 쓰이는 것은 벤토린 흡입기이다.

 

참고로 Albuterol은 Salbutamol과 완전히 같은 성분이다.

인터넷에 찾아보면 '동영상'으로 나와있는 것들이 많은데, 전부 핵심을 바로 짚기 보다는 영상을 다 봐야 이해할 수 있는 것이라서 요약해드리자면,

 

1) 냉매안정성
2) 기계 내부 안정성 (기계 내부 결빙)
3) 기타요소: 적정온도 소요(외부온도의 4~5'C 정도의 냉방), 전력소비 및 사람요소(체온 유지 등)

정도로 요약할 수 있습니다.

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

로지컬 씽킹(Logical thinking)  (0) 2019.09.02

[R/R studio] 가설검정, 이상치, 결측치, PSM, 확률분포

 

통계적 추론(가설검정)

통계적 추론: 통계적 추론은 추정(표본집단->모집단, sample->population, 점추정&구간추정)과 가설검정으로 나눌 수 있다.

 

여기서 추정(estimation)은 위에서 약술한 바와 같이 표본을 이용하여 모집단의 어떤 미지의 값을 추측하는 과정을 추정이라고 한다.

가설검정(testing hypothesis)은 칼 포퍼라는 영국/오스트라의 철학자의 "과학은 반증가능성, 반박가능성, 시험가능성을 가져야 한다."는 반증주의에서 출발한다.

여기서 반증가능성이란 검증하려는 가설이 실험이나 관찰에 의해서 반증될 수 있는 가능성을 뜻한다.

그리고 이 가설검정 또한 표본을 이용하여 모집단에 대한 어떤 주장 또는 가설의 옳고 그름 혹은 채택(Accept) 기각(reject)을 결정하는 과정을 말한다.

 

여기서 "통계적으로 유의하다"라는 뜻은 "확률적으로 단순한 우연에 의한 결과가 아니다"라는 의미를 가질 수 있다는 뜻이다.

(전체 변동 중 에러 대비 이펙트가 얼마나 큰가)

 

가설검정은 다음과 같은 절차를 가진다.

1. 가설검정(귀무가설(null hypothesis, 평상시 알고있던 사실, =로 연결되는 명제, 아무런 변화나 효과가 없는 가설)과 대립가설(alternative hypothesis, 알고자 하는 사실, =/=(not equal)로 연결되는 명제, 차이가 있음을 나타내는 가설, 주장하고자 하는 가설)을 결정)

2. 검정통계량 산출(실제 데이터를 가지고 계산해낸 결과, 이 검정통계량으로 유의확률이 계산된다.)

3. 검정 유의수준 결정(유의수준(alpha): 연구자가 정하는 허용한계, 전체 실험 결과 중 몇번의 오차까지를 허용할 지)

4. 검정 결과 해석(유의확률(p-value)이 유의수준(기각역)을 넘지 못하면 대립가설을 채택하지 않는다(귀무가설을 기각하지 않는다), 아니면 대립가설을 채택(귀무가설을 기각))

 

기본적으로 가설검정은 귀무가설이 참이라는 가정을 깔고 진행하게 된다.

 

보통 통계학에서 statistical~ 이 붙으면 sample에 대해서 진행하는 것이라고 생각할 수 있다.

 

귀무가설에 대하여 채택/기각 및 참/거짓을 표로 나타내면 아래와 같다.

  귀무가설 채택 귀무가설 기각
귀무가설 참 O 잘못된 결론 (1종 오류, alpha)
귀무가설 거짓 잘못된 결론 (2종 오류, beta) O

여기서 1종오류는 사실 없는데(귀무가설 참) 있다고(귀무가설 기각) 하는 오류이고, 2종오류는 사실 있는데(귀무가설 거짓) 없다고(귀무가설 채택) 하는 오류이다.

여기서 1종오류와 2종오류 둘 중 어떤 것이 더 문제일까?

효과가 없는데 있다고 하는 것은 사기행위와 같으니 1종 오류가 더 문제가 크다. 말그대로 1종오류를 범하게되면 통계적으로 사기를 치게 되는 것이다!

그리고 대자연에서 우가우가 하던 시절 호랑이가 있는데 없다고 판단하는 오류를 범했던(2종 오류) 사람들은 전부 잡아먹혀서 2종 오류를 범하는 사람은 거의 없다는 썰도 있다. (믿거나 말거나)

 

그리고 여기서 1종 오류를 범할 확률의 최대 허용 한계를 유의수준이라고 한다.

 

즉, 유의수준(alpha)을 정했을 때, 이 유의수준보다 유의확률(p-value)이 적게 나와야 1종 오류가 발생할 확률이 유의수준보다 떨어지고, 비로소 실험자는 이것을 바탕으로 귀무가설을 기각하고 대립가설을 채택할 수 있게 된다.

 

여기서 유의확률을 제대로 이해하여야 하는데, 유의확률은 "대립가설이 주장하는 바가 맞는 정도"가 아니라 정확하게 "귀무가설이 옳지만, 귀무가설을 기각하고 주장한 대립가설이 1종 오류를 범할 확률이 5% 미만이다."라는 뜻으로 "해당 데이터는 유의미한 데이터이다."라는 뜻이다.

 

그리고 추가적으로 정말 특수한 경우가 아니면 양측검정을 하게 되며, 이 경우 각 단측에 대해서는 유의수준이 반으로 줄어들게 된다.

 

이상치/결측값 처리

사실 데이터 분석에 있어서 대부분의 시간과 에너지는 데이터를 수집하고 전처리하는데 사용하게 된다. 그리고 이 과정에서 필요한 부분이 EDA를 통해 데이터의 이상치(outlier)를 발견하고, 결측치를 확인하여 처리하는 것이다.

 

이상치(outlier)

이상치란 데이터의 전체적인 패턴에서 동떨어진 관측 값을 말한다. 즉, 아주 작은 값이나 아주 큰 값을 말하는데, 보통 y값에 대하여 다른 자료들과 동떨어진 데이터를 이상치(outlier)라고 말한다.

 

영향점((high) leverage point)

영향점이란 이상치와 비슷하게 전체적인 패턴에서 동떨어진 관측 값을 말하지만, 이상치와는 다르게 x축으로 극단적인 값을 가지는 것을 영향점이라고 따로 말한다.

 

그리고 두 수치를 전부 합쳐 influential observations라고 부른다.

 

보통 이상치와 같은 경우 box plot이나, scatter plot을 통해 시각적으로 확인하는 것이 가장 빠르고 확실하다. 혹은 domain knowledge로 말도 안되는 수치들을 확인 가능하다.

특히 단변수 박스 플롯의 경우 이상치를 제대로 파악할 수 없기 때문에 이변수 산점도로 확인해보는 것이 필요하다.

 

이상치는 연구자의 실수(데이터 기록 오류, 단위 오류, 실험 오류, 역코딩)일 때가 많지만, 자연적으로 발생하는 black swan일 수도 있기 때문에 무조건적으로 배제하면 안되고, 사실 숙고가 많이 필요하다.

 

이 이상치는 세가지로 구분이 가능한데, 첫번째는 의도적인 이상치(흡연에 대하여 10대를 대상으로 조사하였을 때), 두번째는 표본 이상치(표본을 잘못 뽑은 경우), 세번째는 자연 이상치(전체 사회인 연봉에 대하여 임원급을 넣는 경우) 등이 있다.

 

 

이제 이상치와 결측값을 어떻게 처리할까에 대한 이슈가 남았다.

여기서는 일단 가장 간단하게 삭제를 할 수 있다. 그러나 이 방법은 데이터 로스를 가져올 수 있다.

두번째로는 대치(imputation)라는 방법이 가능하다.

대치하는 방법으로는 전체 평균을 입력하는 방법, 혹은 통계적으로 해당 변수에 대한 예측 모델을 만들어서 예측(conditional imputation)이 가능하다.

또 다른 방법으로는, 상/하한을 결정한뒤 상/하한을 넘는 데이터에 대해서는 상/하한으로 맞춰주는 방법이 있다.

대치하는 경우 완전히 값이 random한 값을 대치할 수도 있지만, 보통 대부분의 경우 데이터마다 어떤 패턴을 가지고 있을 수 있기 때문에, EDA의 중요성이 강조된다.

이런 패턴이 있는 데이터의 경우 LOCF라 불리는 Last Observation Carried Forward방식, NOCB라 불리는 Next Observation Carried Backward방식, Moving Average방식 등이 있다.

 

결측값은 r studio에서

mice패키지의 md.pattern()함수

상관관계 파악가능한 cor()

VIM패키지의 VIM::aggr()함수

Amelia패키지의 missmap()함수 등으로 빠르게 확인이 가능하다.

 

그리고 이렇게 메꾼 결측치는, 두 세가지 정도의 다른 방법으로 결측치를 메꾼 뒤, sensitivity analysis를 통해 결과값이 일관성이 있다는 것을 보여주어, 대치방법에 민감하지 않다는 것을 보여준다.

 

삭제는 데이터의 손실을 가져오고, 대치는 틀린 값이 들어갈 수 있기에 연구방향에 따라 잘 선택하여야 한다.

 

 

Propensity Score Matching

경향 점수 매칭이라는 한국어 번역 그대로, 두가지 이질적인 데이터 셋에 대하여 경향성이 비슷한 두가지 데이터 셋으로 만들어 주는 것이다.

더 정확히는 공변량(covariate)들의 수준을 맞추어 통제한 후, 특정 독립변수가 종속변수에 미치는 영향의 정도를 제대로 파악할 수 있도록 하는 것이다.

이 경우가 왜 필요하나면, 전향적인 코호트(Cohort) 연구에서는 비슷한 집단을 구성하여 연구가 가능하지만, case-control과 같은 후향적 연구에서는 case가 control에 비해 수가 적어지기 때문에, 비슷한 집단을 만들어 주어야 할 필요가 있기 때문이다.

여기서는 보통 로지스틱 회귀분석을 통하여 대상 case에 해당하는 환자와 가장 비슷한 점수를 나타내는 control 환자를 매칭시킨다.

1:1의 경우가 확실하지만, 그럴 경우 loss되는 환자 데이터가 많아 보통 case하나 당 1~5의 컨트롤을 가져가는 경우가 많다.

MatchIt, optmatch 패키지를 통한 matchit(구분변수~맞춰줄 변수, 방법, data, ratio)함수로 구현이 가능하다.

요새는 IPW(inverse probability weighting)라는 방법으로 control환자 정보의 loss없이 확률의 역수를 각 환자에게 곱해주어 정보를 구하는 방법도 만들어졌다.

 

 

확률분포

확률 분포에 대해서는 추후에 더 자세히 다루는 포스팅이 있으면 링크로 추가.

정규분포는 평균과 분산이라는 2개의 모수를 가지는데, 여기서 평균은 location parameter, 분산은 shape parameter라고 불린다.

베르누이 분포는 이항분포이다.

포아송(poisson) 분포는 '건수(count)'에 대한 분포이지만, 가정사항이 빡세서 잘 활용되지는 않는다. 특히 이 가정사항 중 평균과 분산이 같아야 한다는 굉장히 빡센 조건이 들어가있다. 그래서 negative binomial distribution과 같은 대체 분포를 이용한다.

 

 

데이터 합치기

r에서는 단순 데이터 concat을 지원하는 -bind 함수와, 직접적으로 join을 실행하는 merge 함수가 있다.

같은 갯수의 column을 가지는 데이터를 위아래로 붙이는 함수는 rbind(row-bind)함수로

반대의 경우 좌우로 붙이는 함수는 cbind(column-bind)함수로 구현할 수 있다.

 

참고로 row는 행, column은 열이다.

 

그리고 merge함수의 경우 inner, left, right, full join을 각각 코드로 짜보자면 아래와 같다.

merge(df1, df2, by="기준컬럼", all=FALSE)

merge(df1, df2, by="기준컬럼", all.x=TRUE)

merge(df1, df2, by="기준컬럼", all.y=TRUE)

merge(df1, df2, by="기준컬럼", all=TRUE)

'Software > R' 카테고리의 다른 글

[R/R studio] 기본문법  (0) 2019.08.04

[파이썬(Python)] 기본문법

 

기본적으로 개행시 특수문자가 필요하지 않다.

블록구분은 콜론(:)과 인덴테이션(tab)으로 한다.

if문에서 괄호를 작성하지 않는다.

for문은 이터러블 객체에 in 명령어를 사용하여 사용한다.

한 줄에 여러 명령어를 동시에 사용할 때는 세미콜론(;)으로 연결한다.

주석은 #

논리 합, 논리 곱, NOT 연산은 각각 and, or, not 키워드를 사용한다.(&&, ||, ! 사용 안됨)

=> 판다스(pandas) 패키지에서 매직 인덱싱 할때는 & | ! 사용

[R/R studio] 기본문법

 

기본적으로 여러 언어를 동시다발적으로 사용하다보니, 언어마다 문법의 세부 사항이 달라서 고생하고는 한다.

(한번 써서 에러나거나 기타 등등 이후에 또 고치고 등등...)


그래서 이번에 각 문법별로 정리한 것을 만들어보기로 하였다.

당연히 한번에 다 기억이 나지는 않을테니 언어를 쓸 때마다 하나씩 정리해보기로 하였다.

 

기본적으로 R은 세미콜론(;)을 써서 행 구분하지 않는다.

한줄에 여러 명령어 작성은 세미콜론(;)으로 연결시킨다.

패키지를 불러오는 명령어는 library()

'Software > R' 카테고리의 다른 글

[R/R studio] 가설검정, 이상치, 결측치, PSM, 확률분포  (0) 2019.08.06

+ Recent posts