본문 바로가기

프로그래밍/종합설계 딥러닝 프로젝트

(11)
오픈소스 merge 성공(딥러닝) 먼저 아래는 FCAF3D 오픈소스 링크 입니다. 간략히 설명하자면 이 논문은 컴퓨터 비전에서 권위있는 학회중 하나인 ECCV 2022(European Conference on Computer Vision)에 채택될 만큼 좋은 3D Detection 모델입니다. https://github.com/SamsungLabs/fcaf3d GitHub - SamsungLabs/fcaf3d: [ECCV2022] FCAF3D: Fully Convolutional Anchor-Free 3D Object Detection [ECCV2022] FCAF3D: Fully Convolutional Anchor-Free 3D Object Detection - GitHub - SamsungLabs/fcaf3d: [ECCV2022] F..
로봇팔로 귤 수확하기(스마트팜)_번외편 이번 포스팅은 사과말고 다른 과일도 가능한지 테스트 하기위해 딥러닝 모델로 귤을 감지하고 수확하는 추가 실험입니다. 다시 말하자면 사과는 정육면체와 비슷해서 3D Detection에 유리하진 않았는지 다른 과일에 대해서도 Robust한지 알아보는 실험입니다. 사과와 귤 귤은 부피로 따지면 평균적으로 사과의 반보다 작기때문에 더 정밀한 검출이 요구됩니다. 따라서 복셀사이즈를 또 반으로 줄여서 0.25cm가 되게 하고 모델의 구조는 실험적인 결과로 3단계로 했을때가 가장 좋았기때문에 3단구조로 하여 실험을 진행하였습니다. Train 데이터는 59개 이며 Validation 데이터는 40개로 구성하였습니다. 실험 결과 같은 물체를 감지 했다고 해도 기울기 정도에 따라 IOU에 영향을 미치기 때문에 0.5AP에..
로봇팔을 이용한 사과 자동수확(스마트팜) 최종 딥러닝 프로젝트 지금까지 설계했던 전체 시스템을 시연해보고 결과에 대해서 리뷰하도록 하겠습니다. End-To-End 시스템 로봇팔과 연결된 가운데 모니터는 Realsense의 SDK 화면이고 pointcloud(ply) 파일을 생성하고 저장과 동시에 자동으로 서버 컴퓨터에 전송이 됩니다. 오른쪽에 서버 컴퓨터에서는 훈련된 모델에 직전 전송된 데이터를 입력하여 결과를 생성합니다. 그 결과는 곧바로 로봇팔로 전송되어 로봇팔은 사과를 수확합니다. 이제 동영상으로 보시겠습니다. 데모 영상 데이터를 전송해주는 부분을 제외하고 나머지 과정들을 모두 자동화하였습니다. 좀더 자세히 결과를 분석해보겠습니다. 아래는 수확하기 전 상태에 대해 자세히 설명한 사진들 입니다. 로봇팔에서 얻은 사과 데이터(pointcloud) 수확하기 직전 모..
로봇팔로 3D Detection한 사과 수확 설계 이제 3D Detection을 완료한 사과에 대해 로봇팔로 자동으로 수확하는 시스템을 설계하겠습니다. 전체 시스템 구조도 이전 포스팅까지는 생성한 사과 데이터를 구조변경(modified)한 FCAF3D 딥러닝 모델을 통해 학습시키고 테스트 까지 완료했습니다. 여기에 3번째 단계로 로봇 컨트롤 부분이 추가됐습니다. 오늘은 이 부분에 대해서 자세히 리뷰하겠습니다. 로봇팔은 Yahboom사 jetson nano 제품을 사용하였습니다. 센서 교체(2D -> 3D) 왼쪽에 로봇팔에 부착된 2D 카메라 센서를 제거하고 pointcloud를 얻기 위해 3D Realsense 카메라로 부착하였습니다. 로봇팔(jetson nano) OS에 Realsense SDK 설치 로봇팔에서 Realsense 카메라를 사용하기위해 ..
같은 물체에 여러개의 바운딩 박스가 생기는 문제 현재 문제점 많은 사과를 디텍션 하기위해 score_threshold(점수가 높을수록 사과일 확률이 높음)를 낮추었을때 같은 물체에 대해 많은 bounding box가 생기는 문제점이 발생 하였습니다. 그렇다고 score_threshold를 높이면 전체 사과 AP가 급감하고 또 대부분의 물체는 바운딩 박스가 한 개만 남지만 어떤 물체는 여전히 한개이상 박스들이 생겼습니다. 해결방안 score_threshold만으로는 해결이 안되기 때문에 새로운 알고리즘을 구상하였습니다. 사진과 같이 설명하면 아래와 같습니다. 거리에 기반해서 그룹핑 알고리즘을 디자인하고 적용하였습니다. 코드는 아래와 같습니다. import warnings import numpy as np from math import * sphere_t..
딥러닝 3D Detection으로 사과 검출하기(FCAF3D) 자 드디어 전에 포스팅했던 방법으로 만든 사과 데이터를 우리 딥러닝 모델로 훈련시켜 봅시다. 데이터 만드는 과정을 요약한 사진입니다. 그리고 여러번의 실험 결과를 통해 딥러닝 모델 구조를 3단구조로 변형하는것이 실험결과가 가장 좋다는것을 알게되었습니다. 구조도로 보시면 사진과 같습니다, 저는 총 250개의 사과 데이터를 만들었고 그중 130개는 Train용 데이터셋 나머지 120개는 Validation 데이터셋으로 나누었습니다. 130개의 Train 데이터셋은 50개의 Kinect V2 데이터와 80개의 Realsense 데이터로 구성하였고 120개의 Validation 데이터셋은 50개의 Kinect V2 데이터와 70개의 Realsense 데이터로 구성하였습니다. 훈련은 총 12 epoch을 진행하였..
작은 물체 낮은 검출률 문제(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:/..