본문 바로가기

전체 글14

GNU/GCC/G++ 컴파일러 GNC 컴파일러란? 공개 소프트웨어 프로젝트인 개인이나 단체에 구속 되지 않는 자유 형식을 띄는 GNU Project의 일환으로 제작 된 컴파일러 GCC 컴파일러란? GCC란 GNU Compiler Collection의 약자로 C언어만 지원하는 GNU C Compiler에서 발전하여 C++ 언어도 컴파일 가능하도록 지원함 G++(GNU C++ Compiler) C++언어용 컴파일러, GNU C++ Compiler의 약자, .C 파일과 .CPP 파일 모두 C++ 언어로 컴파일 Compile Process 소스 코드의 컴파일 과정은 위와 같은 과정을 거치면서 변환됨 .c → .s → .o → .out Preprocessor(전처리기) a.i 코드 작성 시 #으로 시작하는 전처리기 구문을 처리하게 됨. 단순 .. 2023. 1. 27.
C 기본 함수 파일디스크립터(File Descriptor) - 리눅스와 유닉스에서 시스템 관리를 위해 파일로 처리하여 관리함 시스템에서 프로세스가 파일에 접근하기 위한 방법으로 파일 디스크립터(File Descriptor)를 핸들로 사용 ex) 파일 open 시 파일 디스크립터는 0~N까지 순차적으로 숫자를 부여 받음, 프로세스가 메모리에서 실행을 시작할 때 기본적으로 할당됨 기본 할당 파일 디스크립터 0 : 표준 입력(Standard Input) / STDIN_FILENO 1 : 표준 출력(Standard Output) / STDOUT_FILENO 2 : 표준 에러(Stantdard Error) / STDERR_FILENO 파일 디스크립터 생성 시 기본 할당 파일 디스크립터를 제외하고 3번 부터 차례대로 할당 받음 .. 2022. 11. 22.
CAN CAN(Controller Area Network)은 차량 내 전자 제어 장치(ECU) 사이의 안전한 데이터 교환을 위해 이용되는 시리얼 통신 기술 DLC CAN 데이터 길이 코드(Data Length Code, DLC)는 CAN에서 4비트로 구성, 0에서 8까지 9개의 데이터 필드가 가능 -> 8Byte DLC CANFD 9에서 15까지 DLC의 남은 값이 CAN FD에 이용 -> 64Byte 참고 - vector사 CAN 소개 https://elearning.vector.com/mod/page/view.php?id=1885 2022. 9. 16.
시리얼 통신 RS-232 1. RS-232란 EIA에서 표준으로 제정한 통신 규격 직력 방식의 인터페이스 중 하나 RS232는 직렬 통신, 한 번에 한비트의 정보를 전달 USB to RS-232 Communication 2. RS-232 구성 필수핀 (TxD, RxD, GND) - TxD(Transmit Data) : 비동기식 직렬통신 장치가 외부 장치로 정보를 보낼 때 직렬통신 데이터가 나오는 신호선 - RXD(Receive Data) : 외부 장치에서 들어오는 직렬통신 데이터를 입력 받는 신호선 - GND(Ground) : 양단 전위차를 주기 위한 기준 값 3. 전송 전압 일반적으로 -12V(논리 0), +12V(논리 1)의 전압을 사용 다른 MCU와 TTL 레벨과 다르게 1과 0을 전송하기 위해 12V를 사용 대부분 MCU.. 2022. 6. 20.
심층 신경망 심층 신경망(Deep Neural Network)이란? - 실제 학습데이터들은 입력벡터의 차원이 크고 개수가 몇 만개 이상이므로 복잡한 신경망 네트워크가 필요 - 다층 신경망을 여러 겹의 계층으로 쌓아서 학습 모델을 구현한 것 - 딥러닝 알고리즘 과적합(Overfitting) - 과적합은 분류 모델이 훈련 데이터의 각 샘플에 너무 가깝게 맞춰지는 현상 - 과적합이 발생할 경우, 훈련 데이터에 대해 정확도가 100%에 가깝게 수렴하지만 새로운 데이터에 대한 분류 성능이 떨어짐 과소적합(Underfitting) - 훈련 데이터에 대해 학습이 부족하여 데이터의 다양성을 반영하지 못하는 분류 모델이 선택되는 현상 ※ 과적합은 Layer 수가 너무 많거나 변수가 복잡해서 발생 Batch - 1 epoch 의미 :.. 2022. 2. 20.
[jetson nano] 젯슨나노 GPIO 이용 서보 모터 구동 젯슨나노 보드(B01)의 GPIO를 이용해 서보 모터 구동을 해보겠습니다. 젯슨 나노 보드에 PWM generator가 가능해서 PIN 설정한 뒤, PWM 신호로 서보모터를 구동해보겠습니다. 필요한 것 서보모터 (SG-90사용) M-F 점퍼선 (Male-Female Jumper Wires) PWM이란 Pulse Width Modulation의 약자로 일정한 주기 내에서 Duty비를 변화(펄스폭 조절)시켜서 평균 전압을 제어하는 방법입니다. 일반적으로 MCU 내부의 내장 타이머 카운트를 이용해 제어합니다. PWM을 이용하면 디지털신호로 아날로그 신호와 유사한 효과를 나타낼 수 있고, PWM 출력을 통해 조명의 밝기 제어, 모터의 속도 제어 등에 이용됩니다. Duty 비(Duty ratio)는 주기 당 펄스.. 2022. 2. 15.
[Jetson nano] 젯슨나노 GPIO 이용 LED 출력 젯슨나노는 Nvidia의 GPU 연산이 가능한 싱글보드입니다. 구입 목적은 CUDA를 활용하여 이미지 프로세싱과 딥러닝을 수행하기 위해서 구입하였습니다. 제가 구매한 젯슨나노 키트는 메모리가 4G인 B01을 구매하였습니다. (메모리 2G인 버전도 있지만 해당 모델은 메모리가 상당히 적은 것 같습니다) 초기 OS 설치와 jetpack설치, 환경설정은 다른 사이트에 많으니 참고하시면 될 것 같습니다. 저는 젯슨나노 보드를 이용해 개발 목표인 싱글보드상에서 딥러닝처리, 최적화와 표지판 딥러닝 학습 등 이미지 처리와 관련된 활동들을 정리하겠습니다. 우선 젯슨 나노 GPIO를 이용해 LED On/Off, 서보모터 제어를 진행해보겠습니다. 필요한 것 브레드보드 Led 200옴 저항 M-F 점퍼선 (Male-Fema.. 2022. 2. 14.
다층 인공 신경망 다층 신경망의 구성 - 입력층(input layer) - 출력층(output layer) - 은닉충(hidden layer) 입력값의 특성을 파악하여 목표한 출력을 내도록 하는 역할 은닉층에 부여된 가중치에 따라 출력값의 패턴이 결정 은닉충 多 -> 분류성능 상승, 하지만 과적합(overfitting)에 빠질 위험이 있어 일반화 성능은 감소할 수 있음 전방향 연산에 의해 획득된 에러를 앞으로 되돌려 가중치를 갱신하는 오류역전파 알고리즘(error backpropagation algorithm)을 사용하여 다층 신경망 구성 원-핫 인코딩(One-Hot Encoding) - 표현하고 싶은 클래스만 1로 표시하고, 나머지는 0으로 표시하는 방법 - 클래스 정보를 표현하는 방법 - 추론시 사용 소프트맥스 함수(.. 2022. 2. 12.
퍼셉트론 퍼셉트론 - 로젠블라트가 제안한 단일 신경망 구조의 인공신경망 - 생물학적 신경망과 유사점을 가짐 - 다수의 입력을 받아서 하나의 신호를 출력 - 입력 값들은 각 입력마다 다른 가중치(weight)를 각각 곱한 뒤 바이어스 값과 더함 - 더해진 총합은 활성화 함수(Activation Function)에 적용 활성화 수준 계산 - 활성화된 값은 출력값으로 연결 인공신경망을 학습시킨다는 것은 입력 값에 곱해지는 가중치를 반복적으로 조정하여 학습한다는 것 가중치는 입력 값과 목표 값이 주어지면 목표 값을 만족시키기 위한 학습 과정에서 결정 y = activationfunction(X × W + b) 활성화 함수 - 임계치 값에 따른 활성화를 결정 계단함수(step function) : 입력이 0 이상일 경우 .. 2022. 2. 12.