본문 바로가기
반응형

분류 전체보기83

ROS catkin 빌드 후 패키지를 못찾는 문제 echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc 2023. 6. 6.
[Linux] 기초/기본 명령 사용법 날짜와 시간 date 명령은 다음과 같이 현재 날짜와 시간을 출력한다. glory@glory-VirtualBox:~$ date 2023. 04. 01. (토) 11:27:06 KST 시스템 정보 hostname명령을 입력하면 내가 사용하고 있는 호스트 이름을 확인할 수 있다. uname명령을 입력하면 현재 사용하고 있는 운영체제를 확인할 수 있다. glory@glory-VirtualBox:~$ hostname glory-VirtualBox glory@glory-VirtualBox:~$ uname Linux glory@glory-VirtualBox:~$ uname -a Linux glory-VirtualBox 5.19.0-35-generic #36~22.04.1-Ubuntu SMP PREEMPT_DYNAM.. 2023. 4. 1.
[Linux] 리눅스 명령 사용 리눅스 터미널 동작시키기 리눅스에서 명령을 사용하려면 터미널을 동작시켜야 한다. 우분투 환경에서 터미널에 접근하기 위해서는 두가지 방법이 있다. 먼저 GUI가 익숙한 사용자들을 위해 왼쪽 하단의 앱표시를 누른다. 앱표시를 누르고나면 위와 같은 화면으로 바뀌는데 여기에서 터미널을 선택하면 된다. 또 다른 방법으로는 Ctrl + Alt + T를 누르는 방법이 있다. 앞으로 우분투 리눅스를 사용할 때 매우 자주 사용하므로 외워두는 것을 추천한다. 다음과 같이 터미널이 잘 나오는 것을 확인할 수 있다. 명령 행 편집 방법 명령어를 이용하여 리눅스를 사용하면 편집 방법을 알아두면 좋다. 1. 문자 지우기 리눅스의 명령 행에서 문자를 지울 때는 Backspace나 Delete 키를 사용한다. 리눅스에 따라 둘 중 .. 2023. 4. 1.
[Linux] 유닉스 / 리눅스 시스템 구조 유닉스 시스템 구조 운영체제는 컴퓨터의 하드웨어 자원을 운영 관리하고 프로그램을 실행할 수 있는 환경을 제공하는 소프트웨어이다. 일반적으로 이러한 소프트웨어의 핵심부분을 커널이라고 하는데 이는 상대적으로 작고 운영체제의 핵심 역할을 하기 때문이다. 커널과 시스템 호출 커널(kernel)은 하드웨어를 운영 관리하여 프로세스, 파일, 메모리, 통신, 주변 장치 등을 관리하는 서비스를 제공한다. 커널이 제공하는 각 서비스에 대해 다음과 같이 요약 정리할 수 있다. 프로세스 관리 여러개의 프로그램이 실행될 수 있도록 프로세스들을 CPU 스케줄링하여 마치 그들이 동시에 수행되는 것처럼 보이 는 효과를 낸다. 파일 관리 디스크와 같은 저장장치 상에 파일 시스템을 구성하여 파일을 관리한다. 메모리 관리 메인 메모리가.. 2023. 3. 30.
[Linux] 유닉스 / 리눅스 특징 유닉스와 리눅스 유닉스(Unix)는 1970년대 초에 미국 AT&T 벨 연구소에서 켄 톰슨(Ken Thompson), 데니스 리치(Dennis Ritchie) 등에 의해 다중 사용자 운영체제로 개발되었으며 그 이후로 지속적으로 발전해 오고 있다. 리눅스(Linux)는 1990년대 초에 리누스 토르발즈(Linus Torbalds)에 의해 pc를 위한 운영체제인 리눅스(Linux)가 개발됨으로써 보다 광범위하게 사용되게 되었다. 리눅스는 유닉스 기반의 운영체제로 개발되어 강력한 소프트웨어로 자리잡고 있다. 특히 서버용 pc에서 높은 점유율을 갖고 있는 운영체제이다. 유닉스의 설계 철학 단순성 이식성 개방성 단순성 유닉스는 운영체제 자체를 가능한 한 단순화시켜 최소한도로 필요한 기능만 제공하도록 하였다. 또한.. 2023. 3. 29.
[파이썬 딥러닝] 활성화 함수 계층 구현하기 ReLU 계층 활성화 함수로 사용되는 ReLU 수식은 다음과 같습니다. x에 대한 y의 미분은 다음과 같습니다. 순전파 때의 입력인 x가 0보다 크면 역전파는 상류의 값을 그대로 하류로 흘립니다. 반면, 순전파 때 x가 0 이하면 역전파 때는 하류로 신호를 보내지 않습니다.(0을 보냅니다.) 계산 그래프로는 다음과 같습니다. class Relu: def __init__(self): self.mask = None def forward(self, x): self.mask = (x 2023. 3. 29.
[파이썬 딥러닝]순전파와 역전파 기초 덧셈 노드의 순전파와 역전파 순전파는 우리가 알고 있는 덧셈입니다. 위 그림을 보면 덧셈노드를 통해 더하게 됩니다. 따라서 순전파를 통과하면 z = x + y라는 식이 나옵니다. 이 식을 편미분을 하게되면 z를 x에 대해 미분해도 y를 통해 미분해도 모두 1이 됩니다. 따라서 역전파때 상류에서 전해진 미분값을 그대로 하류로 흘리게 됩니다. 곱셈 노드의 순전파와 역전파 곱셈 노드도 순전파는 덧셈 노드와 크게 다르지 않습니다. 우리가 알고 있던 곱셈입니다. z = xy라는 식을 미분하면 z를 x에 대해 미분 했을대 y가 되고 z를 y에 대해 미분 했을때 x가 남게 됩니다. 따라서 곰셈의 역잔파에서는 입력 신호를 바꾼 값을 곱하여 흘려 보내줍니다. 때문에 곱셈의 역전파는 순방향 입력 신호의 값이 필요합니다. .. 2023. 3. 28.
[파이썬 딥러닝] 학습 알고리즘 구현 신경망 학습 절차 전제 신경망에는 적응 가능한 가중치와 편향이 있고, 이 가중치와 편향을 훈련 데이터에 적응하도록 조정하는 과정을 '학습'이라고 합니다. 신경망 학습은 다음과 같이 4단계로 수행합니다. 1단계 - 미니배치 훈련 데이터 중 일부를 무작위로 가져옵니다. 이렇게 선별한 데이터를 미니배치라 하며, 그 미니배치의 손실 함수 값을 줄이는 것이 목표입니다. 2단계 - 기울기 산출 미내배치의 손실 함수 값을 줄이기 위해 각 가중치 매개변수의 기울기를 구합니다. 기울기는 손실 함수의 값을 가장 적게 하는 방향을 제시합니다. 3단계 - 매개변수 갱신 가중치 매개변수를 기울기 방향으로 아주 조금 갱신합니다. 4단계 - 반복 1 ~ 3단계를 반복합니다. 이것이 신경망 학습이 이뤄지는 순서입니다. 이는 경사 하.. 2023. 3. 24.
[파이썬 딥러닝] 수치 미분 미분 미분이란? 한순간의 변화량을 표시한 것 수식 파이썬으로 구현한 미분 def numerical_diff(f, x): h = 1e-50 return (f(x + h) - f(x)) / h 그러나 이 방식은 반올림 오차 문제를 일으킵니다. 반올림 오차는 작은 값이 생략되어 최종 계산 결과에 오차를 생기게 합니다. import numpy as np np.float32(1e-50) [출력] 0.0 위와 같이 작은 값을 넣어 0으로되어 버리는 오차를 말합니다. 이를 개선하기 위해서 두가지 방법이 있습니다. 첫째로는 h를 10 ^ -4를 사용하여 컴퓨터로 계산하는데 문제가 되지 않도록 하는 방법입니다. 둘째로는 차분을 이용하는 방법입니다. 차분 '진정한 미분'은 x 위치의 함수의 기울기에 해당하지만, 이번 구현.. 2023. 3. 22.
[파이썬 딥러닝] 신경망 학습 학습 학습이란? 훈련 데이터로부터 가중치 매개변수의 최적값을 자동으로 획득하는 것을 뜻한다. 훈련 데이터와 시험 데이터 기계 학습 문제는 데이터를 훈련 데이터(train data)와 시험 데이터(test data)로 나눠 학습과 실험을 수행하는 것이 일반적입니다. 우선 훈련 데이터만 사용하여 학습하면서 최적의 매개변수를 찾습니다. 그런 다음 시험 데이터를 사용하여 앞서 훈련한 모델의 실력을 평가하는 것입니다. 훈련 데이터와 시험 데이터를 나누는 이유는 우리가 원하는 모델은 범용적으로 사용할 수 있는 모델이기 때문입니다. 이 범용 능력을 제대로 평가하기 위해 훈련 데이터와 시험 데이터를 분리하는 것이죠. 범용 능력은 아직 보지 못한 데이터로도 문제를 올바르게 풀어내는 능력입니다. 이 범용 능력을 획득하는 .. 2023. 3. 16.
[파이썬 딥러닝] 신경망 퍼셉트론에서 신경망으로 신경망을 그림으로 나타내면 가장 왼쪽 Input(입력층), 중간 Hidden(은닝층), 오른쪽 Output(출력층)이라고 합니다. 은닉층의 뉴런은 사람 눈에는 보이지 않는습니다. 퍼셉트론 복습 X1과 X2라는 두 신호를 입력받아 Y를 출력하는 퍼셉트론입니다. 이 퍼셉트론을 수식으로 나타내면 다음과 같습니다. 여기서 b는 편향을 나타내는 매개변수로, 뉴런이 얼마나 쉽게 활성화되느냐를 제어합니다. 한편, w1과 w2는 각 신호의 가중치를 나타내는 매개변수로, 각 신호의 영향력을 제어합니다. 위의 네트워크에는 편향 b가 보이지 않는데 편향 b를 명시한다면 다음과 같습니다. 활성화 함수 활성화 함수란 입력 신호의 총합이 활성화를 일으키는지를 정하는 역할입니다. 시그모이드 함수 신경망에서 .. 2023. 3. 14.
[C++] const 정리 const란? const란 변수의 값을 상수임을 지정하고 프로그래머가 수정하지 못하도록 컴파일러에게 지시하는 키워드 const를 사용하게 되면 다음과 같이 값을 수정하려고 할 때 오류를 발생시킨다. 수정하면 안되는 상수를 수정하는 것이므로 오류가 발생하게 된다. 이를 잘 사용하게 되면 실수로 수정하여 프로그램을 망치는 일을 방지할 수 있다. 포인터와 const 포인터 변수에도 const 키워드를 사용할 수 있다. 포인터 변수에 const를 사용하게 되면 위와 같이 *연산자를 사용해 간접참조를 하여 값을 변환하려고 할 때 오류를 발생시킨다. 하지만 여기서 const는 const int*가 아닌 const int에 적용되기 때문에 주소 값은 변경이 가능하다. 상수 포인터 상수 포인터를 사용하면 const가 .. 2023. 3. 7.
개요 목적 몸이 불편 하여 휠체어를 이용해야 하는 경우 스스로 움직이기 쉽지가 않다. 타인의 도움 없이 전동 휠체어를 사용할 수 있지만 이 또한 이용 불가능 한 경우가 대 다수다. 때문에 손과 발을 움직의 불편을 겪는 사람들이 타인의 도움 없이 휠체어를 스스로 움직일 수 있도록 얼굴의 방향으로 제어하도록 한다. 방법 라즈베리파이의 웹캠을 통해 얼굴의 랜드마크를 추출 하여 랜드마크의 이동에 따라 휠체어의 방향을 계산하고 시리얼 통신을 통해 ATmega128에 전달하여 ATmega에서 휠체어의 모터 제어를 한다. 사용 부품 라즈베리파이4 (1) ATmege128 (1) 삼성 웹캠 (1) 회고 그 동안 프로젝트를 진행하며 기록한 적이 없었다. 이번에 기록을 하기로 마음 먹은 이유는 진행한 프로젝트에서 내 기억의 한.. 2023. 2. 13.
[파이썬 딥러닝] 퍼셉트론 퍼셉트론은 신경망의 기원이 되는 알고리즘 퍼셉트론이란? 퍼셉트론은 다수의 신호를 입력으로 받아 하나의 신호(전류나 강물처험 흐름)를 출력합니다. 퍼셉트론의 신호는 0과 1의 두 가지 값만 가집니다. 그림의 원을 뉴런 혹은 노드라고 부릅니다. 입력 신호가 뉴런에 보내질 때는 각각 고유한 가중치가 곱해지고 뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1을 출력합니다. 이때 그 한계값을 임계값(Θ)이라고 합니다. 위 그림을 보면 입력 x1과 입력 x2가 들어온 후 각각의 가중치 w1과 w2와 곱해진 후 출력 y가 됩니다. 이때 y값이 일정 한계(Θ)를 넘어서면 1이 출력되고 넘지 못하면 0이 됩니다. 논리 회로 AND 게이트 AND게이트를 퍼셉트론으로 표현하면 위의 진리표대로 작동하도록 하는 w1.. 2022. 12. 21.
[알고리즘c++] 삽입 정렬(Insertion Sort) 삽입 정렬 요약 카드를 정렬하는 방법과 유사하다 새로운 카드를 기존의 정렬된 카드 사이 올바른 자리를 찾아서 삽입하는 방식이다. 새로 삽입될 카드의 수 만큼 반복하여 정렬 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하며, 자신의 위치를 찾아서 삽입하여 정렬을 완성하는 알고리즘 매 순서 마다 해당 원소를 삽입할 수 있는 위치를 찾아 해당 위치에 넣는다. 삽입 정렬 알고리즘 두 번째 자료부터 시작하여 앞의 자료들과 비교하여 삽입할 위치를 지정한 후 삽입 즉, 두 번째 자료는 첫 번째 자료, 세 번째 자료는 두 번째와 첫 번째 자료, 네 번째 자료는 세 번째, 번째, 첫 번째 자료와 비교한 후 자료가 삽입될 위치를 찾는다. 자료가 삽입될 위치를 찾았다면 그 위치에 자료를 삽입하기.. 2022. 11. 21.
관심 영역(ROI) ROI란? 영상이나 동영상의 내가 관심 있는 부분을 뜻한다. 영상이나 동영상을 처리 할때 관심영역을 지정하는 것은 매우 중요하다. 관심 영역의 부분만 원하는 처리를 하기 위해서이다. 관심 영역(ROI)를 활용하여 국기 그리기 관심 영역을 설정하여 해당 ROI의 픽셀 값을 변경해 주면 국기를 그릴 수 있다. 간단한 예제를 통해서 국기를 그려보겠다. import numpy as np, cv2 img = np.zeros((500, 700, 3), np.uint8) cv2.imshow("img", img) cv2.waitKey() cv2.destroyAllWindows() 위 소스를 입력하면 zero 함수를 사용했기 때문에 가로 700 세로 500의 3채널 영상을 얻을 수 있다. 이 검은색 영상을 세로를 3등분.. 2022. 11. 16.
논리(비트) 연산 논리(비트) 연산 함수 함수 설명 cv2.bitwise_and(src1, src2[ , dst [ , mask]]) >> dst 설명 : 두 행렬의 원소 간 혹은 행열 원소와 스칼라 간의 비트별 논리곱(AND) 연산을 수행한다. cv2.bitwise_or(src1, src2[ , dst [ , mask]]) >> dst 설명 : 두 행렬의 원소 간 혹은 행열 원소와 스칼라 간의 비트별 논리합(OR) 연산을 수행한다. cv2.bitwise_xor(src1, src2[ , dst [ , mask]]) >> dst 설명 : 두 행렬의 원소 간 혹은 행열 원소와 스칼라 간의 비트별 배타적 논리합(XOR) 연산을 수행한다. cv2.bitwise_not(src[ , dst [ , mask]]) >> dst 설명 :.. 2022. 11. 16.
OpenCV 채널 처리 함수 채널 처리 함수 함수 설명 cv2.merge(mv[ , dst]) >> dst 설명 : 여러 개의 단일채널 배열을 다채널 배열로 합성한다. 인수 설명 mv 합성될 입력 배열 혹은 벡터, 합성될 단일채널 배열들의 크기와 깊이(depth)가 동일해야 함. dst 입력 배열과 같은 크기와 같은 깊이의 출력 배열 cv2.split(m[ , mv] >> mv 설명 : 다채널 배열을 여러 개의 단일채널 배열로 분리한다. 인수 설명 m 입력되는 다채널 배열 mv 분리되어 반환되는 단일채널 배열들의 벡터 *merge와 split은 위에서 설명한 것과 같이 채널을 합치거나 나누어 주는 opencv함수이다. cv2.spilt()을 예를 들면 BGR채널을 B채널, G채널, R채널로 각각 나누어 반환한다. cv2.merge는.. 2022. 11. 3.
반응형