전체 글 46

[Git] 협업을 위한 git 기초 사용법 commit, push

Git(깃)은 주로 소프트웨어 개발에서 사용되는 분산 버전 관리 시스템입니다. Git은 프로젝트 파일의 변경 사항을 추적하고 프로젝트의 변경 사항을 모두 기록함으로써 코드의 버전 히스토리를 관리하기 때문에 필요할 때 이전 버전으로 되돌아갈 수 있다는 장점이 있습니다. 뿐만 아니라 여러 개발자가 각각의 서로 다른 작업이나 기능 개발을 독립적으로 진행할 수 있는 브랜치(branch) 기능을 제공하여 별도의 기능을 개발할 수 있으며, 병합(Merge)를 통해 각각의 변경 사항을 통합할 수 있습니다. 이러한 기능 덕에 대부분의 개발자들은 git을 활용하며 이를 다루는 능력은 개발자에게 있어서 가히 필수적인 능력이라고 할 수 있습니다.  그럼 이 git을 어떻게 사용하는지 git의 구조와 함께 살펴보도록 합시다...

Git 2024.09.04

[OpenCV] 히스토그램 평활화(Histogram Equalization)

오늘은 히스토그램 평활화(Histogram Equalization)에 대해서 포스팅하도록 하겠습니다. 히스토그램 평활화는 히스토그램이 평평하게 되도록 영상을 조작해 영상의 명암 대비를 높이는 기법입니다. 영상의 명암 대비가 높아지면 영상에 있는 물체를 더 잘 식별할 수 있게 됩니다. 이름만 봐도 알 수 있듯이 히스토그램 평활화를 이해하기 위해서는 먼저 히스토그램에 대한 지식이 필요합니다.  히스토그램(Histogram) 히스토그램은 0, 1, 2, ... , L-1의 명암단계 각각에 대해 화소의 발생 빈도를 나타내는 1차원 배열입니다. 아래 그림은 크기가 4 x 4이고 명암단계가 L = 8인 영상에 대한 히스토그램을 막대 그래프로 표현한 예시입니다.   OpenCV에서도 영상의 히스토그램을 구해주는 함수..

Perception/OpenCV 2024.05.06

[Object Detection] RetinaNet: Focal Loss for Dense Object Detection

RetinaNet은 2017년도 FaceBook AI Research 팀에 의해 개발되었으며 YOLOv3보다 먼저 나온 모델입니다. 당시 One-stage detector는 빠른 detect 속도는 인정받았지만 Faster R-CNN보다 detection 정확도는 떨어진다는 인식이 있었습니다. RetinaNet은 One-stage detector의 빠른 detection 속도의 장점을 가지면서 (SSD나 YOLO보다는 떨어짐) One-stage detector의 detection 성능 저하 문제를 개선시켰습니다. 특히 다른 One-stage detector보다 작은 Object에 대한 detection 성능이 뛰어났는데, 이렇게 detect 성능을 높인 RetinaNet의 2가지 특징이 바로 Focal ..

카테고리 없음 2024.04.16

[Object Detection] YOLOv3: An Incremental Improvement

저번 포스팅에 이어서 이번에는 Yolov3에 대해서 살펴보도록 하겠습니다. 위 그림은 v1부터 v3까지 YOLO를 버전 별로 비교한 표입니다. YOLOv2의 경우 YOLOv1의 detection 성능을 높이기 위해서 그 당시의 다양한 기술들을 도입해 많은 변화가 있었다는 것을 표만 봐도 알 수 있습니다. 이에 비해 YOLOv3는 YOLOv2와 비교해 향상된 Backbone(Feature Extractor), FPN(Feature Pyramid Network) 기법의 적용만으로, 큰 변화는 주지 않고 성능과 속도를 올렸습니다. 그럼 거두절미하고 YOLOv3에 대해서 설명하도록 하겠습니다. Prediction Across Scales YOLOv2와 비교해 달라진 YOLOv3의 가장 큰 특징은 바로 FPN(F..

[Object Detection] YOLOv2 (YOLO9000:Better, Faster, Stronger)

이전 포스팅에서 설명한 YOLOv1은 inference 속도는 빠르지만 크기가 작은 object는 잘 detect하지 못하고 새로운 형태의 Bounding Box의 경우 정확히 예측하지 못하는 등 detection 성능이 떨어진다는 큰 단점이 있었습니다. YOLOv2는 그 당시 나왔던 여러 기술들을 합쳐 YOLOv1에 비해 수행 시간과 성능 모두 개선시킨 모델입니다. 이번 포스팅에서는 YOLOv2와 함께 성능을 향상시킨 방법들에 대해서 YOLOv1과 비교하면서 설명하도록 하겠습니다. 성능 향상 방법 1. Batch Normalization 배치 정규화는 다른 regularization의 필요성을 없애고 학습하는 과정 자체를 전체적으로 안정화하여 학습 속도를 가속 시키는 역할을 합니다. YOLOv2는 모든..

[Object Detection] YOLOv1 (You Only Look Once:Unified, Real-Time Object Detection)

이번 포스팅부터는 one-stage detector에 해당하는 YOLO를 버전별로 설명하도록 하겠습니다. YOLO는 현재 (2024년 3월 19일 기준) 9번째 버전까지 나올 만큼 자주 사용되고 활발히 개발되면서 실시간 Object Detection의 대명사로 자리잡게 되었습니다. YOLOv1의 구조 및 동작 방식 YOLOv1의 전체적인 모델 구조는 다음과 같습니다. YOLOv1의 모델은 GoogLeNet으로부터 많은 영감을 받았으며 이를 일부 수정하여 DarkNet이라는 독자적인 Convolutional Network을 만들어 사용했습니다. 24개의 Convolutional Layer(Conv Layer)와 2개의 Fully-Connected Layer(FC Layer)로 연결된 구조이며, Google..

[ROS2] ros2 topic list로 떠야할 topic이 뜨지 않는 error(+ daemon의 역할)

가끔 여러 topic을 publish하고 subscribe하는 노드나 런치 파일을 실행시켰음에도, ros2 topic list를 확인해보면 나와야할 topic은 나오지 않고 아래와 같은 2가지 기본 topic만 나오는 경우가 있습니다. /parameter_events /rosout 이는 현재 사용가능한 topic이 저 2가지 밖에 없다는 뜻으로 다른 topic을 활용하는 노드나 런치 파일은 제대로 실행되지 않을 것입니다. Solution 해결 방법은 간단합니다. 바로 터미널 창에 ros2 daemon stop와 ros2 daemon start를 순서대로 입력 후 다시 노드나 런치파일을 실행시키면 ros2 topic list에 사용가능한 topic이 제대로 잘 뜨는 것을 확인할 수 있습니다. $ ros2 ..

ROS2 2023.08.27

[Nav2] Nav2 주요 개념 정리

본격적으로 Nav2의 구성에 대해서 하나씩 살펴보기 앞서 Nav2의 주요 개념들에 대해서 정리하도록 하겠습니다. ROS2 Action Server(액션 서버) 액션 서버는 네비게이션(Navigation)과 같이 긴 작업을 수행하는 로봇 동작을 제어하는 핵심 개념입니다. 장시간 작업 상황에서 액션 서버는 클라이언트로부터 다른 프로세스나 스레드에서 장기간 실행되는 작업 요청을 수락하고 실행이 완료되면 최종 결과를 반환하며 해당 상태를 종료합니다. 작업이 완료될때까지 안정성을 위해 액션 서버는 클라이언트에게 feedback을 제공하는데, 이는 목표 지점까지의 각도, 성공 여부 등이 될 수 있습니다. 이러한 피드백과 최종 결과는 클라이언트에 callback을 등록함으로써 동시에 얻을 수 있습니다. Nav2에서 ..

Nav2 2023.08.25

[칼만 필터] 01 - 평균 필터

개요 일상생활을 하다보면 이론과 현실이 다른 경우가 꽤 많이 존재합니다. 회로에 10V의 전압을 가해줘도 전압계에서는 정확히 10V로 표시되지 않으며, 로봇에게 20도만큼 회전하도록 명령해도 수치적으로 정확히 그만큼 회전하지는 않습니다. 로봇에 사용되는 센서의 경우 이론 상으로는 측정값들이 정직하게 들어와야하는 반면 실제 환경에서는 여러 요인에 의해 측정값에 잡음이 포함된 값이 측정되고 사용됩니다. 때문에 시뮬레이션 상에서는 로봇이 원하는 대로 동작했던 알고리즘이 실제 환경에서는 제대로 동작하지 않고 오류가 날 수 있습니다. 따라서 실제 환경에서는 필수적으로 이 잡음을 제거해줄 방법이 필요합니다. 칼만 필터는 측정값의 잡음을 잘 제거해줄 뿐만 아니라 실제로 측정할 수 없는 물리량도 추정할 수 있게 해주는..