본문 바로가기

전체 글

(147)
작은 물체 낮은 검출률 문제(small object's low precision problem) 제가 만든 사과 데이터로 모델을 학습 시키기 전에 작은 물체에 대한 낮은 AP 문제를 해결해야 했습니다. 참고로 작은 물체는 큰 물체에 비해 pointcloud 수 자체도 너무 적기 때문에 3D Detection 난이도가 굉장히 높습니다. 따라서 이 문제를 해결하는것이 이번 프로젝트에서 가장 중요했던 부분이였습니다. 저는 컵을 검출할 정도면 사과도 충분히 검출가능하다고 생각했기 때문에 컵에 대해서 포커스하였고 컵의 정확도를 높이기 위해 원인을 분석하고 솔루션을 적용해 보았습니다. 문제 원인 상대적으로 너무 적은 데이터량​ : 큰물체(의자 등)에 비해 작은물체(컵 등)는 데이터 비율이 상대적으로 적었습니다. 구조적인 문제 : ​이 모델의 feature size는 8cm 16cm 32cm 64cm 총 4단계..
Pointcloud 사과 데이터 SUNRGBD형태로 만드는법 오늘은 커스텀 데이터인 사과 데이터에서 pointcloud 추출과 SUNRGBD형태로 만드는 법에 대해서 포스팅하겠습니다. 목표: 아래형식으로 커스텀 데이터 만들기 RealSense로 작업하는 법을 알기만하면 Kinect V2도 거의 비슷하기 때문에 쉽게 배울수 있습니다. Intel realsense sdk 실행합니다. export file 을 클릭하면 ply파일과 jpg파일이 생성됩니다. 이때 jpg파일은 image폴더에 저장하면 4개중에 1개를 만들었습니다. 이제 추출한 ply파일에 대해 라벨링(정답)을 해주어야 하고 pointcloud 또한 추출해서 bin(binary)파일로 변환해야 최종적으로 모델을 학습시킬수 있습니다. 3D 라벨링을 쉽게 해주는툴로 labelCloud가 있습니다. https:/..
error: can't find main(String[]) method in class 솔루션 main함수를 못찾겠다는 자바 에러입니다. 솔루션 public static void main(String[] args)함수(클래스 전체)를 코드 맨위로 옮겨주세요. eclipse에선 그냥 밑에 있어도 됐는데 터미널에서 하려면 이렇게 해야 되네요. 감사합니다.
SUNRGBD 데이터셋으로 FCAF3D(딥러닝)모델 학습하기 SUNRGBD 데이터란? 4개의 서로 다른 센서로 캡처되며 PASCAL VOC와 비슷한 규모로 10,000개의 RGB-D (D는 Depth 정보)이미지를 포함합니다. 전체 데이터 세트는 조밀하게 주석이 달려 있으며 정확한 객체 방향이 있는 146,617개의 2D 사각형과 58,657개의 3D 바운딩 박스, 장면에 대한 3D 공간 레이아웃 및 범주를 포함합니다. 이 데이터 세트를 사용하면 검출작업을 위해 데이터가 많이 필요한 알고리즘을 훈련하고, 직접적이고 의미 있는 3D 매트릭을 사용하여 평가하고, 소규모 테스트 세트에 대한 과적합(overfitting)을 방지할수 있습니다. 그래서 실내 딥러닝 3D Detection 을 할때 가장 많이 사용되는 데이터셋중 하나입니다. 오늘은 이 데이터셋을 다루는 법을 ..
Java, C로 Thread(쓰레드) 구현하기 이번 포스팅에선 우분투 환경에서 Java와 C로 쓰레드를 구현해 보겠습니다. 쓰레드란? 쓰레드란 간단히 말하면 작업단위 입니다. 예전 컴퓨터에서는 작업단위가 프로세스 였으나 현대에는 한 프로세스 안에 또 여러개의 쓰레드를 동시에 돌릴수 있습니다. 사실 완벽히 동시(simultaneous)는 아니고 마치 동시에 작동하는 것처럼(concurrent) 보이는 것입니다. 예시로 형광등은 사실 1초에 100번정도 깜빡거리는데 사람의 눈은 그냥 켜져있는것 처럼보이는것과 같은 원리 입니다. 흔히 프로그램을 짤때 main()함수의 한 흐름이 있는데요. 또다른 쓰레드를 만들지 않는다면 이 프로그램은 단일 쓰레드 프로그램입니다. 하지만 성능 향상을 위해 한개 이상 쓰레드를 만드는 경우 다중 쓰레드 프로그램이 되고 운영체제..
Bilateral Filter 직접 구현하기(python) Bilateral Filter란 이번 포스팅에서는 가우시안 노이즈가 낀 사진을 필터링해주는 Bilateral Filter를 opencv를 사용하지 않고 python으로 직접 구현해 보는것 위주로 다루겠습니다. Bilateral Filter는 기존 Gaussian Filter와는 다르게 단순히 가우시안 분포(거리에 따라 가중치가 작아짐)로 사진을 복원하는것이 아니라 현재 관심있는 구역의 상태에 따라 동적으로 반영하여 계속 달라지는 필터로 사진을 복원합니다. 예를 들어 원본이 256 * 256 Gray 사진이라면 Gaussian Filter는 Filter가 딱 한개면 되는것에 비해 Bilateral Filter는 무려 약 65536개 만큼 필터를 개별 맞춤 제작해주어야 합니다. 그렇기 때문에 시간이 오래 걸..
라인 트레이서 프로젝트 현대 가장 중요한 기술중 하나인 자율주행 시스템을 임베디드 디바이스를 사용하여 가볍게 구현해보는 프로젝트입니다. 그 내용은 아두이노를 사용하여 센서로 선을 인식하고 자율주행을 할수있는 모형 자동차를 만드는 것입니다. C언어를 사용하였고 스케치 프로그램으로 Arduino IDE를 사용하였습니다. #include Servo servoLeft,servoRight; long now = 0; //현재 시간을 저장할 변수 long w = 0; //blinking 함수를 위해 2초시간 재는용 변수 long t[2] = {0}; // 시간을 저장할 배열 long periodOfTime = 0; // 시간간격을 저장할 변수 int i = 0; // Stop함수 호출횟수 int led_L = 6; // 왼쪽 방향등 6번 ..
FCAF3D(딥러닝 모델) 논문 리뷰 및 분석 사과를 3D로 감지하기 위해서 딥러닝 모델을 선정하였는데 SUNRGBD(벤치마크) 데이터셋에서 2022년 1월까지 가장 성능이 좋았고(state of the art) 복셀을 이용한 방식으로 pointcloud만으로 빠르게 객체를 감지하는 등 강점이 있는 모델이라 최종선정 하였습니다. (선정과정에서 10편이상의 논문을 보고 다른 모델들도 돌려보았지만 사과에 대한 이 모델의 성능이 월등히 좋았습니다.) 참고로 SUNRGBD 데이터셋은 3D Detection의 정확도를 평가할수 있는 척도로서 이용되는 데이터셋으로 총 만개이상의 실내 물체에 대한 데이터이고 가장 유명한 데이터셋중 하나입니다. 이것에 대해 다음 포스팅에서 자세히 설명하겠습니다. 논문의 출처는 다음과 같습니다. FCAF3D: Fully Convol..