반응형

드라이버를 설치하는데 꽤 많은 시간을 쏟았다.

생각보다 쉬운 작업이 아니였고 우분투를 처음 접해보는 나로서는 굉장히 까다로운

작업이였다.

 

다양한 방법들을 시도해 보았으나 내가 성공한 방법을 간단하게 정리해두겠다.

 

우선은 윈도우 모드로 들어가 윈도우에 그래픽카드에 관한 드라이버를 설치한다.

(이 과정이 우분투에 드라이버를 설치하는데 영향이 있는지는 모르겠으나

  윈도우에서 드라이버를 설치한 후 우분투에서도 성공하였으므로 이렇게 적어두겠다.)

 

그 다음은 NVIDIA 홈페이지에서 드라이버를 다운받는다.

 

nvidia.com/Download/index.aspx?lang=en-us

 

본인의 그래픽카드에 적합한 드라이버를 다운로드 하는데 이 때 나의 경우 다운로드 된

파일은 .run 파일이였다.

그리고 다운로드된 .run파일을 좌측 <파일>아이콘을 클릭한 후 "홈" 부분에 복사하여 준다.

 

그리고 gedit 텍스트 편집기로 blacklist.conf 파일을 편집해준다.

 

위 과정을 위해 우분투의 메인 화면에서 ctrl + alt + t   를 동시에 눌러 터미널을 실행시킨 후

 

sudo gedit /etc/modprobe.d/blacklist.conf

 

를 입력해준다.

 

그리고 아래의 내용들을 추가해주면 된다.

 

blacklist amd76x_edac      ///  나의 경우 이 부분은 이미 작성되어 있었기에 따로 추가해주지 않았다.

blacklist vga16fb

blacklist nouveau

blacklist rivafb

blacklist nvidiafb

blacklist rivatv

 

작성이 완료되었으면 gedit 프로그램에서 저장버튼(혹은 ctrl+s) 을 누르고 닫아준다.

 

그리고 NVIDIA의 모든 패키지를 삭제해준다.

 

이 과정은 위의 sudo gedit /etc/modprobe..... 를 진행했던 창에서

작성하여 진행하여 주면 된다.

 

sudo apt=get remove --purge nvidia*

(purge 앞에 -가 2개 있음을 주의하자)

 

이 과정까지 완료되었으면 디스플레이 매니저 사용을 중지시켜준다.

NVIDIA 드라이버 설치를 위해서는 종료해야 하며 지금까지 작성하였던 터미널을 사용하면 안된다.

 

GUI와 관계없는 터미널을 생성해 주기 위하여 ctrl + alt + F1  을 눌러준다.

(ctrl + alt + F7 을 누르면 원상태로 돌아온다.)

 

그리고 디스플레이 매니저 사용을 중지시키기 위하여 lightdm을 중지시키는 문장을 작성해준다.

(lightdm은 우분투에 최초로 설치된 디스플레이 매니저이다.)

 

sudo service lightdm stop

 

그리고 위에서 다운로드 된 파일을 실행 가능한 상태로 변경한다.

 

chmod +x NVIDIA_Linux-x86_64-435.21.run

 

마지막으로 run 파일을 실행시킨다.

 

sudo ./NVIDIA_Linux-x86_64-435.21.run

 

위의 코드를 입력하게 되면 여러 창이 나오게 되는데 모두 YES 를 눌러 통과시켜 주면 된다.

 

 

그리고 설치가 완료되었으면 아래 코드를 입력해주어 디스플레이 매니저를 다시 시작하여 준다.

 

sudo service lightdm start

 

마지막으로 그래픽모드로 전환(ctlr + alt + F7) 을 해주면 끝!!

 

 

드라이버가 제대로 설치되었는지는

 

nvidia-smi

 

를 입력해보면 알 수 있을 것이다.

 

 

 

 

 

 

반응형
반응형

문제는 노트북에 우분투를 설치하였는데 와이파이를 잡지 못한다는 것이였다.

(우측 상단의; 인터넷 표시 아이콘을 눌러도 와이파이에 관련된 내용이 나타나지 않았다)

 

원래 데스크탑에 우분투를 설치한 후 랜선을 데탑에 연결하여 계속 사용하고 있었으므로

 

우분투에서 와이파이를 연결할 일이 크게 없었는데 이번에 노트북에 우분투를 설치하면서

 

와이파이를 사용하기 위해서는 따로 드라이버를 설치하여야 한다는 것을 알았다.

 

다양한 방법을 시도해봤고 최종적으로 성공한 방법만 작성해두어야겠다.

 

https://askubuntu.com/questions/1071299/how-to-install-wi-fi-driver-for-realtek-rtl8821ce-on-ubuntu-18-04

(위의 링크를 참고하여 진행하였다.)

 

 

 

 

How to install Wi-Fi driver for Realtek RTL8821CE on Ubuntu 18.04?

I'm trying to install drivers for my Wifi on my HP All-in-one desktop. I've been told to show the output of the command "sudo lshw -C network" so here it is: *-network description: Ethernet interf...

askubuntu.com

 

 

 

 

sudo lshw -c network

우선 내 PC 무선랜의 카드정보를 보기 위하여

$ sudo lshw -c network

 

를 입력하였고 위와 같이 출력되는것을 확인할 수 있었다.

 

아무래도 위에 나오는 *-network 부분이 이더넷 인터페이스로

뭐 랜선을 꽂았을때 관련된 부분인 듯 싶고

 

아래의 *-network UNCLAIMED  부분이 무선인터넷 접속에 관한

부분인 것 같다(확실하진 않다)

 

그리고 아래 UNCLAIMED 된 부분을 보면 Product부분에 RTL8821CE ......  Wireless Network Adapter 을

확인할 수 있었고 그에따라 구글에 RTL8821CE Driver Ubuntu  를 검색하여 다운로드 함으로서

문제를 해결할 수 있었다.

 

과정은 다음의 코드들을 입력하여 진행하였다.

 

$ sudo apt-get install --reinstall git dkms build-essential linux-headers-$(uname -r)

 

$ git clone https://github.com/tomaspinho/rtl8821ce

 

Build software better, together

GitHub is where people build software. More than 40 million people use GitHub to discover, fork, and contribute to over 100 million projects.

github.com

 

$ cd rtl9921ce

 

$ chmod +x dkms-install.sh

 

$ chmod +x dkms-remove.sh

 

$ sudo ./dkms-install.sh

 

 

위의 코드들을 입력하고 난 후 다시 우측 상단의 인터넷 표시 아이콘을 클릭해보니

와이파이 목록들이 뜨면서 연결할 수 있는 상태가 된 것을 확인할 수 있었다.

반응형
반응형

●  히스토그램 작성 순서도

●  cvCreateHist 함수  (히스토그램을 정의하는데 사용하는 함수)

 

CvHistogram* cvCreateHist( int dims, int *sizes, int type, 

                                                     float **range=NULL, int uniform=1)

 

 

-> dims

   히스토그램의 차원을 지정.

   흑백 영상이면 1, 컬러 영상이면 3차원.

 

-> sizes

    히스토그램 차원의 크기를 나타내며 배열로 표시함. 

    1차원 256 흑백영상의 경우 0부터 255까지 256개의 박대를 사용하므로

         int sizes[1] = {256}  으로 나타낼 수 있다.

    3차원 컬러영상의 경우 각각의 태널은 256개의 막대를 사용하므로

         int sizes[3] = {256, 256, 256}  으로 나타낼 수 있다.

 

-> type

    히스토그램 표현 형식을 나타낸다.

    type = CV_HIST_ARRAY이면 다채널 밀집 배열 (0인 원소가 적은 배열)을 나타내고

    type = CV_HIST_SPARSE이면 다채널 희소 배열 (0인 원소가 많은 배열)을 나타낸다.

 

-> ranges

    히스토그램의 x축 범위를 나타낸다.

 

-> uniform

    히스토그램에서 막대 사이의 간격을 일정하게 할 것인지 결정한다.

    uniform ≠ 0 이면 막대의 간격을 일정한 간격으로 한다.

 

 

●  cvCalcHist 함수 (영상으로부터 히스토그램을 계산하는데 사용하는 함수)

 

void cvCalcHist( IplImage** img, CvHistogram* hist);

 

 

->  img

     원 영상을 나타냄

 

->  hist

     히스토그램에 대한 포인터를 나타낸다.

 

 

●  cvGetMinMaxHistValue 함수 (막대에 대한 최대 빈도수와 최소 빈도수를 구함)

 

void cvGetMinMaxHistValue( CvHistogram* hist,

                                                 float* value_min, float* value_max);

 

 

->  hist

     히스토그램을 나타냄

 

->  value_min

     히스토그램의 최소 빈도수를 나타낸다.

 

->  value_max

     히스토그램의 최대 빈도수를 나타낸다.

 

 

●  cvScale 함수 (하나의 배열을 다른 배열로 선형 변환헤 의해 변환하는 함수)

 

void cvScale( CvArr* src, CvArr* dst, double scale=1, double shift=0);

 

 

->  src

      원 영상을 나타낸다.

 

->  dst

      목적 영상을 나타낸다.

 

->  scale

      스케일 파라미터를 나타낸다.

 

->  shift

      이동 파라미터를 나타낸다.

 

         cvScale() 함수는 dst = src * scale + shift 에 의해 변환된다.(cvConvertScale()와 동일)

 

 

●  cvRectangle 함수  (직사각형을 그리기 위한 함수)

 

void cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1 );

 

 

->  img

     직사각형이 그려질 영상을 나타냄

 

->  pt1

     직사각형의 모서리를 나타낸다.

 

->  pt2

     직사각형의 반대편 모서리를 나타낸다.

 

->  color

     직사각형의 선의 색상을 나타낸다.

 

->  thickness

     직사각형의 선의 두께를 나타낸다.

 

          cvRectangle() 함수에서 모서리 좌표 pt1과 pt2를 정할 때 원정이 어디에 위치하느냐는 중요한 문제이다.

          영상 좌표에서 원점은 왼쪽 상단임을 알고있자!

 

 

●  cvGetReal1D 함수  (1차원 히스토그램에서 i번째 막대의 빈고수를 얻기 위한 함수)

 

double cvGetReal1D( CvArr* arr, int idx0 );

 

 

-> arr

     1차원 배열을 나타낸다.

 

->  idx0

     원소의 위치에 대한 인덱스를 나타낸다.

     cvGetReal1D(histo->bins, i) 는 배열 bins 에서 i번째 인덱스에 대한 원소를 반환한다.

 

 

 

●  cvSet 함수  (영상을 주어진 값으로 설정할 때 사용)

 

void cvSet( CvArr* arr, CvScalar valuem CvArr* mask=0 );

 

 

->  arr

     원 영상을 나타낸다.

 

->  value

     채울 값을 지정한다.

 

->  mask

     마스크를 나타낸다.

 

         cvSet(histImage, cvScalarAll(255), 0) 이면 영상 histImage의 픽셀값을 255로 설정한다.

 

         cvScalarAll(double num);

               ->  모든 스칼라의 value들을 num 으로 초기화시켜준다.

 

 

 

●  cvEqualizeHist 함수  (흑백 영상에서 히스토그램 평활화하는데 사용하는 함수)

 

void cvEqualizeHist(CvArr* src, CvArr* dst);

 

 

->  src

     흑백 영상을 나타낸다.

 

->  dst

     목적 영상을 나타낸다.

 

 

 

출처: OpenCV를 이용한 영상처리( 임동훈 지음)


    

반응형

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

히스토그램  (0) 2020.12.29
히스토그램 예제  (0) 2019.08.12
반응형

히스토그램이란 영상의 픽셀값들에 대한 분포를 나타내는 그래프로

영상을 분석하는데 매우 유용하다.

 

https://ttend.tistory.com/570

좌측은 일반적인 도수분포표이고 우측은 도수분포표를 이용하여 나타낸

히스토그램으로 영상처리 작업을 진행할 땐 히스토그램의 x축이 픽셀값,

y축이 빈도수로 나타내어 질 수 있다.

 

또한 픽셀값이 작을수록 영상은 어둡게 나타나고 픽셀값이 증가함에 따라

영상은 밝게 표시되므로 영상의 밝기에 따른 히스토그램은

(좌) 어두운 영상                                               (우) 밝은 영상

위와 같이 나타낼 수 있다.

 

또한 명암대비에 따른 히스토그램을 나타내면

 

(좌) 낮은 명암대비 영상                                 (우) 높은 명암대비 영상

위와 같이 나타낼 수 있고 이를통해 알 수 있듯이 명암대비가 낮은 영상은 픽셀값들이 좁은 영역에 분포되어

영상이 선명하지 않고 명암대비가 높은 영상은 넓은 범위에 걸쳐 골고루 분포되어 영상이 선명함을 알 수 있다.

 

*명암대비 : 상이한 2가지 색이 서로 영향을 미쳐서 그 상이함이 강조되어 지각()되는 현상

 

 

 

반응형

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

히스토그램을 나타내기 위한 OpenCV 함수들  (0) 2020.12.29
히스토그램 예제  (0) 2019.08.12
반응형

Support Vector Machine(SVM)은 결정 경계(Decision Boundary)

즉, 분류를 위한 기준 선을 정의하는 모델로 볼 수 있다.

 

분류를 통해 모든 데이터를 A그룹과 B그룹으로 나누게 되면 새로운 데이터에 대해 이 새로운 데이터가

어느 경계에 속하는지, A그룹인지 B그룹인지를 분류할 수 있게 된다.

(Support Vector Machine에서 Support Vectors는 결정 경계와 가까이 있는 데이터 포인트들을 의미한다.

아직 결정 경계와 데이터 포인트가 어떤건지 잘 모르니 그런가보다 하고 아래 내용을 보자.)

 

 

 

위와 같이 점들이 존재할 때 이를 그룹화시키는 선을 나타내고 그 선을 기준으로 파란그룹, 빨간그룹으로 나뉘게 된다.

하지만 이를 어떠한 기준으로 구분할 것인가?

 

아래 그림을 보자.

 

 

A~F까지 다양한 방법으로 그룹을 나눌 수 있다.

 

그럼 첫번째 의문이 생긴다.

 

 

이들 중 어떤 방법이 좋은 방법인가?

 

 

그룹F가 가장 좋은 방법이라고 볼 수 있다.

기준선에서 빨간, 파란 데이터까지의 거리가 멀수록 좋은 방법이라 볼 수 있다.

 

이를 좀 어렵게 얘기하면 "최적의 결정 경계는 마진을 최대화한다." 라고 말할 수 있다.

 

그럼 여기서 두번째 의문이 생긴다.

 

 

마진이란 무엇인가?

 

 

마진(Margin)은 결정 경계와 서포트 벡터 사이의 거리를 의미한다.

 

 

 

가운데 실선이 바로 앞에서의 기준선이고 이를 결정경계(Decision Boundary) 라고 한다.

 

그리고 결정경계로부터 검은 테두리가 있는 빨간점 1개, 파란점 2개까지의 영역을 두고 점선을 그었다.

여기서 보이는 점선에서부터 기준선까지의 거리가 바로 마진(Margin)이다.

 

그리고 위 그림에서 x축과 y축 2개의 속성을 가진 데이터로 결정경계를 나타내기 위해

총 3개의 데이터 포인트(서포트 벡터)가 필요했다.

 

즉, n개의 속성을 가진 데이터는 최소 n+1개의 서포트 벡터가 존재한다는 것을 알 수 있다.

 

다시 위의 그림을 보자.

 

파란 점 2개(2개의 데이터포인트)를 통해 하나의 직선을 나타낼 수 있다.

그리고 이와 평행하면서 빨간 점과 만나는 선을 긋자.

이 과정을 통해 Margin값을 구할 수 있고 최대의 Margin값을 갖는 결정경계를 우수한 결정경계로 볼 수 있다.

 

이렇게 첫번째 의문도 해결이 되었다.

 

 

그리고 이 과정을 통해 SVM의 장점을 파악할 수 있다.

 

SVM에서 결정경계를 정의하는 것은 결국 서포트 벡터이고 그렇기 때문에 데이터 포인트 중 서포트 벡터만 잘 골라내었다면 그 외에 수많은 데이터 포인트들은 무시될 수 있다. 그래서 매우 빠르다고 한다.

 

 

다음은 이상점, 이상치라고 불리는 Outlier에 대한 내용이다.

 

우선 아웃라이어란 데이터 상의 다른 값들의 분포와 비교했을때 비정상적으로 떨어져있는 관측치이다.

즉 데이터를 취득하는 과정에서 어떠한 문제로 튄 값이 발생한 경우가 이에 해당될 수 있을 것이다.

 

아래 그림에서 초록색 사각형으로 나타낸 데이터들이 아웃라이어 데이터이다.

 

 

그럼 위의 그림에서 Margin값은 어떤 값을 갖는게 좋은 것일까?

 

우선 상단에 보이는 Margin값이 작은 그림을 Hard Margin(하드마진)이라고 한다.

아웃라이어를 허용하지 않도록 기준을 까다롭게 세운 것이다. 그리고 이는 오버피팅(Over Fitting)을 일으킬 수 있다.

 

***  오버피팅(Over fitting)이란?  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ****

**                                                                                                                                            **

**  데이터들을 표현하기 위해 모든 데이터들을 참고하여 나타내는 것으로 볼 수 있다.                                  **

**  예를 들어 1, 2, 3, 4, 5 이렇게 총 5개의 데이터가 있다고 보자. 이 데이터들의 평균은 3이고 중앙값도 3이다.  **

**  다음으로 1, 2, 3, 4, 100 이렇게 데이터가 바뀌었다고 보자. 이제 평균은 22, 중앙값은 여전히 3이다.             **

**  여기서 100이 아웃라이어에 해당하게 되고 아웃라이어를 고려하게 되면 평균값이 22가 되어버려                **

**  이 데이터들을 표현하기가 어려워진다.                                                                                          **

**  즉 이렇게 아웃라이어가 발생하게 되면 어느정도 이를 무시하고 추세를 나타내어줄 수 있어야 하는데           **

**  오버피팅은 이러한 아웃라이어 데이터들을 모두 계산에 포함시켜 데이터들에 영향을 주게 되는 것을 말한다.  **

**                                                                                                                                              **

*** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ***

 

 

그리고 위의 그림 중 하단에 나타난 그림은 아웃라이어들이 마진 안에 어느정도 포함되도록 여유롭게 기준을 잡았다.

이를 소프트 마진(Soft Margin)이라고 하고 이러한 경우 서포트 벡터와 결정 경계 사이의 거리가 멀어지게 되고

이는 언더피팅(UnderFitting) 문제가 발생할 수 있다.

 

 ** Under Fitting은 모델이 너무 간단하게 표현되어 데이터들의 분류 정확도가 떨어지는 것을 말한다.

 

따라서 Hard Margin같이 아웃라이어를 모두 포함시켜서 데이터들에 영향을 주는 Margin값도 아닌,

그렇다고 너무 유한 범위로 데이터 분류 정확도를 떨어뜨리는 Soft Margin값도 아닌

SVM이 어느정도 Outlier을 무시하고 최적의 구분선을 찾는 (세상에서 제일 어려운 말이라는)"적당한" 값을

사용해야 한다.

 

 

다음은 커널에 대한 이해이다.

 

지금까지는 선형으로 결정 경계(Decision Boundary)를 그을 수 있는 형태의 데이터 시트를 예시로 진행하였다.

그런데 만약 SVM이 선형으로 분리할 수 없는 데이터 세트가 있다면 어떻게 해야 할까?

아래 그림을 보자.

 

이는 결정 경계 직선을 어떻게 그려도 빨간 점들과 파란 점들을 구분하기 어려운 데이터 분포이다.

그리고 이러한 상황에서는 차원을 바꿔줌으로서 구분선을 나타낼 수 있게 된다.

 

위의 그림은 x축과 y축으로 표현되는 2차원 데이터들이다.

그럼 z = x^2 + y^2 라는 식을 통해 x와 z축 상에서 이 데이터들을 나타내어보자.

 

빨간색으로 나타내어진 데이터들과 파란색으로 나타내어진 데이터들 모두 원형인 모습을 띄고 있으므로

파란색 점들의 데이터들은 어느정도 일정한 z값을 갖게 될 것이고 빨간색 점들 역시 어느정도 일정한 z값을

갖게 될 것임을 예측할 수 있다.

 

즉 x축과 z축을 통해 위의 그림과 같이 표현될 수 있고 이렇게 표현되어진 데이터들은 다시 선형으로

구분되어질 수 있게 되었다.

 

이렇듯 저차원 공간(Low Dimensional Space)을 고차원 공간(High Dimensional Space)으로 매핑해주는 작업을

커널 트릭(Kernel Trick)이라고 한다.

 

그럼 이제 사이킷 런(sklearn) SVM의 중요한 파라미터인 kernel, C, Gamma에 대해 알아보자.

 

우선 sklearn이란 파이썬에서 가장 유명한 머신러닝 라이브러리 중 하나로 분류, 회귀, 군집화, 의사결정 트리 등의

다양한 머신러닝 알고리즘을 적용할 수 있는 함수들을 제공한다.

 

sklearn의 파라미터 중 첫번째 kernel은 linear, polynomial, sigmoid, rbf 등의 kernel을 선택할 수 있다.

(기본값은 rbf로 설정된다.)

 

자세한 내용은 아래 링크를 확인해보면 정보가 많다.

scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html

 

kernel은 decision boundary 즉 결정 경계를 선형으로 할지, 다항식형으로 할지 결정하는 파라미터이다.

(linear은 gamma값의 영향을 받지 않는다. poly, sigmoid, rbf 의 kernel 방식에서 gamma가 사용된다.)

 

앞에서 2차원의 데이터를 3차원으로 변경하여 나타내는 Kernel은 poly(다항식)방식이다.

 

그 외 sigmoid, rbf 값은 추가적인 공부가 필요하다.

 

 

그 다음으로 알아볼 파라미터는 C이다.

C: Control tradeoff between sooth decision boundary and classfying training points correctly

 

 

 

위의 그림에서 초록색 구분선은 C가 큰 Decision boundary이고, 노란색 구분선은 C가 작은 Decision Boundary이다.

C가 크면 training point들을 정확히 구분하는 반면 C가 작으면 smmoth한 Decision Boundary를 그린다.

 

이는 앞에서 언급했던 Hard Margin, Soft Margin과 같은 얘기로

C가 크면 Margin이 작아져 Hard Margin 형태를 갖고( 아웃라이어를 모두 포함)

C가 작으면 Soft Margin 형태를 갖는다. ( 아웃라이어는 버림)

 

 

 

 

마지막으로 알아볼 파라미터 감마(Gamma).

 

Gamma는 결정 경계를 얼마나 유연하게 그을 것인지 정해준다.

Gamma 값을 높이면 학습 데이터에 많이 의존해서 결정 경계를 구불구불 긋게 되고 이는 위에서의 Hard Margin과 같이

오버피팅을 초래할 수 있다.

 

반대로 Gamma 값을 낮추면 학습 데이터에 크게 의존하지 않고 결정 경계를 직선에 가깝게 긋게 되고

이는 Soft Margin과 같이 언더피팅을 유발할 수 있다.

 

 

 

 

 

위의 사진은 Gamma가 1인 값일때를 나타낸 것이다.

 

그리고 비교를 위해 아래에 Gamma를 아주 높인 Gamma=10 인 경우와

Gamma를 많이 낮워 0.1의 값을 지정하였을때를 나타낸다.

 

 

 

 

이렇게 Support Vector Machine(SVM)에 대해 간단하게 알아봤다.

 

 

그리고 내용은 아래 블로그들을 참고하여 작성하였다.

 

 

 

bkshin.tistory.com/entry/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-2%EC%84%9C%ED%8F%AC%ED%8A%B8-%EB%B2%A1%ED%84%B0-%EB%A8%B8%EC%8B%A0-SVM

 

머신러닝 - 2. 서포트 벡터 머신 (SVM) 개념

서포트 벡터 머신(SVM, Support Vector Machine)이란 주어진 데이터가 어느 카테고리에 속할지 판단하는 이진 선형 분류 모델입니다. (Reference1) 본 포스트는 Udacity의 SVM 챕터를 정리한 것입니다. 아래 그�

bkshin.tistory.com

 

hleecaster.com/ml-svm-concept/

 

서포트 벡터 머신(Support Vector Machine) 쉽게 이해하기 - 아무튼 워라밸

서포트 벡터 머신은 분류 과제에 사용할 수 있는 강력한 머신러닝 지도학습 모델이다. 일단 이 SVM의 개념만 최대한 쉽게 설명해본다. 결정 경계, 하드 마진과 소프트 마진, 커널, C, 감마 등의 개�

hleecaster.com

 

반응형
반응형

Windows에서 가상환경 만들기

 

가상환경 구축을 위해 우선 윈도우 cmd창을 연다.

 

그리고 아래 내용을 입력한다.

 

>pip install virtualenv

 

그리고 본인이 원하는 경로로 이동한 후 가상환경을 만든다.

 

>cd C:\virtualenv

 

C:\virtualenv>python -m venv 가상환경이름

 

C:\virtualenv>dir   을 진행하면 폴더가 생긴것을 확인할 수 있다.

 

C:\virtualenv>cd 가상환경이름

C:\virtualenv\가상환경이름>Scipts\activate.bat

 

그럼 cmd창이 초기화되면서 아래와 같이 보이게 될것이다.

 

(가상환경이름) (base) C:\virtualenv\가상환경이름>

 

 

이 상태로 pip을 통해 패키지를 설치하면 C:\virtualenv\가상환경이름\Lib\site-packages 안에 패키지가

저장되게 된다.

 

그럼 기본적인 예로 numpy Package를 설치하여보자.

 

(가상환경이름) (base) C:\virtualenv\가상환경이름>pip install numpy

 

 

그럼 C:\virtualenv\가상환경이름\Lib\site-packages  경로에 뭐가 이것저것 생긴것을 확인할 수 있다.

 

 

 

아나콘다 가상환경 만들기

 

본인이 아나콘다를 다운받은 디렉터리로 이동한다.

 

C:\Users\name\anaconda3>

 

C:\Users\name\Anaconda3\Scripts\conda.exe create --name 가상환경이름

 

 

 

만약 가상환경에 특정 파이썬 버전을 설치하고자 한다면

 

C:\Users\name\Anaconda3\Scripts\conda.exe create --name 가상환경이름 python=3.6

 

위와 같이 입력하면 파이썬 3.6 버전이 설치되게 된다.

 

그럼 C:\Users\name\anaconda3\envs 경로로 이동해보자.

 

생성한 가상환경이 보일 것이다.

 

그럼 생성한 가상환경은 어떻게 삭제할까?

 

>conda env list  를 입력하면 생성한 가상환경이 보일 것이다.

 

그럼 Scripts 디렉터리로 이동한 후 conda.exe env remove -n 가상환경이름   을 진행한다.

 

 

 

 

 

가상환경을 만든 상태에서

 

>conda activate 가상환경이름

 

을 진행하면 아래와 같이 들어갈 수 있게 된다.

 

 

가상환경에서 나오고자 한다면

 

>deactivate

 

 

 

 

그럼 파이참에서 가상환경을 적용하여 프로젝트를 만들어보자.

 

위의 과정을 진행하면 아래와 같이 Python Interpreter을 선택하는 창이 뜨게 되는데

가상환경을 만든 경로인 \anaconda3\envs\CFRP 의 경로로 이동하면 python.exe 가 존재하고 있다.

 

 

 

 

모든 프로젝트에 적용을 선택하고 OK를 누른다.

 

 

반응형
반응형

우분투를 듀얼부팅으로 설치하였다가 가상환경으로 설치해주기 위해 기존에 우분투가 설치되어 있던

파티션을 삭제해 주었다.

 

https://jimnong.tistory.com/677

 

우분투 삭제 방법(듀얼부팅에서 윈도우만 남기기)

우분투 리눅스 다운로드 방법(Desktop 버전) 우분투 리눅스 설치용 USB 만드는 법(윈도우에서) 우분투 리눅스 설치용 USB 만드는 법(Ubuntu 16.04 에서) 우분투 리눅스 듀얼부팅 설치방법 정리(윈도우10 기준) 에..

jimnong.tistory.com

위의 블로그 내용에서 1-1 과정을 진행하여 해당 파티션을 삭제해주고 가장 위에 보이는 캡쳐화면과 같이

해당 파티션이 "할당되지 않음"으로 표시되는 것을 확인할 수 있었다.

 

하지만 위와 같이 C드라이브에 대해 "볼륨확장"이 진행되지 않아 할당되지 않은 파티션을

C드라이브로 추가하지 못하는 상황이 발생.

 

https://www.diskpart.com/download-home.html

 

Download Magic Free Partition Manager Software - AOMEI Partition Assistant Standard

Thanks for Downloading AOMEI Partition Assistant Standard Please wait, your download is processing Want to make a backup of your important data before or after partitioning your hard disk? Try our award-winning FREE backup software - AOMEI Backupper Standa

www.diskpart.com

위의 링크에서

AOMEI Partition Assistant Standard Edition 을 다운로드 받아서 실행시키자.

 

다운받아 실행시키면 위와 같은 창이 뜨는걸 확인할 수 있다.

 

"할당되지 않음" 으로 표시되던 파티션을 우클릭하여 Merge Partition을 클릭하여

C드라이브와 병합시킬 수 있도록 해준다.

 

여기까지 진행하였다고 아직 파티션이 합쳐진 것은 아니다.

우측 상단의 Apply 를 클릭하여 적용시켜 준다.

 

반응형
반응형

Intel의 Realsense D435i 카메라를 ROS에서 실행시키는 과정이다.

 

카메라를 PC에 연결시킨다.

이 때, USB3.0 포트를 사용하여 연결을 진행한다.

 

가장 먼저 카메라가 잘 작동하는지 확인해보기 위해 Realsense-Viewer 프로그램을 통해 실행상태를 확인해본다.

 

* Realsense Driver 설치

# server's public key 등록
sudo apt-key adv --keyserver keys.gnupg.net --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE || sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE

# 서버추가(Ubuntu 18.04)
sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo bionic main" -u

# 라이브러리 설치
sudo apt-get install librealsense2-dkms
sudo apt-get install librealsense2-utils

# Debug Package, Developer 설치(선택사항)
sudo apt-get install librealsense2-dev
sudo apt-get install librealsense2-dbg

# ROS Package 설치
sudo apt-get install ros-$$ROS_VER-realsense2-camera

# realsense-viewer 실행
realsense-viewer

 

 

여기까지 진행하면 아래와같은 화면이 출력되고 카메라가 제대로 연결되었음을 확인할 수 있다.

 

그럼 이제 realsense-viewer을 종료하고 다음 코드를 실행한다.

 

roslaunch realsense2_camera rs_camera.launch filters:=pointcloud

 

실행 결과 현재

control_transfer returned error, index: 768, error: Resource temporarily unavailable, number: 61

위의 문구가 출력되고 있다.

 

문제가 발생한 것 같은데 자세한 원인은 더 찾아봐야 한다.

 

 

여기까지 진행되었으면 rviz  를 입력하여 실행시킨다.

 

 

PointCloud2 를 Add 시켜준 후 Topic에 경로를 지정해준다.

그래도 아직 상단부분에 Global Status 부분에 에러가 발생한 것을 확인할 수 있다.

 

 

그럼 위와 같은 방식으로 Axes 를 추가해준다.

 

마지막으로 Global Options 에서 Fixed Frame을 Map 이 아닌 camera_color_frame으로 변경하면

3차원 거리정보의 Point Cloud가 보이게 된다.

반응형

'ROS' 카테고리의 다른 글

VINS-MONO  (0) 2021.03.09
Realsense D435i Rtabmap  (0) 2021.03.09
RPLIDAR A3 실행(Hector SLAM In ROS)  (0) 2021.02.02
Ubuntu에서 ROS를 통해 Intel Realsense D435i 사용하기  (1) 2021.01.06
ROS IP주소를 이용한 다른pc의 캠(CAM) 사용  (0) 2019.09.16

+ Recent posts