[데브코스 자율주행 TIL] 주말 (11/04 ~ 11/05)

happy_quokka·2023년 11월 5일
0
post-thumbnail

2023.11.04 & 05 주말 TIL 🫠

차선 인식 프로젝트를 하는 동안 못 들었던 opencv 강의를 들었다!
다음주부터 오프라인 프로젝트를 진행하는데 그 전에 자이카를 사용하지 않고 할 수 있는 것들은 다 해놓고 싶다. 그러다보니 갑자기 할게 많아졌다ㅠㅠ 환경 설정도 해야하고 오프라인 프로젝트 코드도 정리하고 ROS와 같이 사용할 수 있도록 만들어야하고... 머리가 복잡하다..ㅎㅎ 저번 오프라인 실습 때는 vmware를 사용했는데 그걸 다 밀고 아에 ubuntu 환경을 만들어버려서 그때 환경들이 다 사라졌다ㅠ 그걸 오늘 깨달아버렸다... 급히 ROS를 다시 깔았다. ROS를 한지 시간이 좀 지나니 ROS를 어떻게 했는지 가물가물하다. 오프라인 전에 복습을 해야겠다.
목요일부터 오프라인 시작이니 월화수 열심히 준비해야겠다!!!!!


📝 배운 내용

HOG 알고리즘

  • 그레디언트 방향 정보를 특징 벡터로 사용
  • 알고리즘 순서
    1. 입력 영상에서 부분 영상 추출 (200x100)
    2. resize (64x128)
    3. 8x8크기의 셀로 나누고 각 셀에서 그레디언트 (크기 & 방향) 계산 (가로 8개, 세로 16개)
    4. 그레디언트 정보를 바탕으로 9개 방향 성산(180°/20°)에 대해 히스토그램 계산
    5. 블록 히스토그램 구하기 (4개의 셀을 하나의 블록으로 지정) -> 각 블록의 히스토그램 bin개수는 4x9=36개
    6. 특징벡터 : 7x15x36
  • 후에 svm을 사용하여 분류 가능

OpenCV DNN

Net 클래스

  • Net readNet() : Net 객체 생성, 네트워크 불러오기
  • Mat blobFromImage() : 네트워크 입력 blob 만들기
  • setInput() : 네트워크 입력 설정
  • forward() : 네트워크 순방향 실행(추론)

OpenCV와 GPU

CUDA

  • 예전에 버전으로 애먹었던 기억이 새록새록....
  • GPU를 사용할 수 있도록하는 GPCPU 기술
  • Mat 대신 GpuMat 클래스 사용
  • opencv 3.3부터 cuda보단 openCV 사용 권장

OpenCL

  • 개방형 범용 병렬 컴퓨팅 프레임워크
  • Mat 대신 UMat을 사용하면 다른 함수들은 그대로 사용해도 된다.
  • 수행시간이 확! 짧아진다.
  • Mat 객체와 UMat 객체를 같이 사용하면 안된다!

😵 어려웠던 점

환경 설정

  • 현재 opencv는 프로젝트 안에 thirdparty 폴더에 빌드하여 사용하고 있다.
  • 그렇다면 python, ros, torch, tensorflow는 어디에 설치해야하는가...?
  • thirdparty 안에 빌드해야하는지, 현재 환경에 바로 설치해야하는지..?
  • 내 결론은... pytorch, tensorflow는 라이브러리이니까 thirdparty에 빌드하고, ros와 python은 라이브러리 형식은 아니니까 바로 설치하기로 하였다.
  • 사실 아직 정답은 모르겠고... ros, python, tensorflow까지 설치했다. 내일 pytorch도 설치할 예정이다.
  • 버전이 꼬이고 잘못 설치될까봐 너무 무섭다ㅠㅠ 조심해야지...아니면 일단 오프라인 프로젝트 끝나고 설치할까ㅠㅠ(그럴 생각도 하고 있다)

python, C++ 혼란

  • 강의가... 어떤건 python이고 어떤건 c++이다.
  • 결국 c++로 구현해야하겠지만 조금 혼란스러웠다...
  • cmake 사용법을 익히는게... 급선무인가...

0개의 댓글