python

    [Python] Tensorflow 공부를 시작하며

    Tensorflow 공부를 시작하기에 앞서 위키북스의 "시작하세요! 텐서플로 2.0 프로그래밍"이라는 책을 사용하여 공부했음을 명시한다. Tensorflow(텐서 플로우)란 "tensor가 흐른다"라는 뜻을 지닌다. 여기서 tensor는 값을 지닌 벡터와 행렬을 뜻한다. 따라서 Tensorflow란 벡터와 행렬 등을 이용한 계산을 통해 원하는 결과값을 도출해내는 것이다. 우리는 이 tensorflow를 이용하여 인공지능을 만들어볼 것이다. Tensorflow를 초기화하는 방법 Tensorflow를 초기화하는 방법에는 크게 두 가지로 Xavier나 He 초기화를 사용한다. 이 초기화 방식들은 랜덤하지만 어느 정도 규칙성이 있는 범위 내에서 난수를 지정한다. 난수를 생성하는 방법은 아래와 같다. 균일 분포 ..

    [Python] OpenCV로 만든 자율주행 코드 리뷰

    지금부터 본격적으로 나와 내 동료가 작성한 코드의 리뷰를 시작하겠다. 참고 잘 따라온다면 우리가 짠 코드와 그 당시 생각들을 엿볼 수 있을 것이다. OpenCV 자율주행 코드 리뷰 # LaneDetector_16.py 우리의 코드 중 가장 기본이 되는 뼈대 코드이다. 나와 내 동료는 각자 다른 방식으로 접근했다. 나는 열악한 환경을 고려하여 정확도가 조금 떨어지더라도 빠른 OpenCV를 채택하였고, 내 동료는 정확도가 중요하다고 생각하여 딥러닝을 선택하였다. 결국, OpenCV를 자율주행에 쓰는 것으로 채택했다. import numpy as np import cv2 import time from Steering import * from Preprocessing import * from StopDetect..

    [Python] OpenCV로 자율주행을 끝내며 - 회고록

    자율주행을 마치며 약 6개월 동안 자율주행을 개발하기 위해 달려왔다. 가장 먼저 고민한 것은 역시 정확도를 올리기 위해 딥러닝을 사용할 것인가, 더 빠르게 인식하고 최적화를 위해 OpenCV를 사용할 것인가였다. 여기에서 모노 카메라와 CPU만을 사용해서 자율주행을 구현해야 한다는 점이 마음에 걸렸다. 그래서 OpenCV를 채택하게 되었다. OpenCV로 콘을 인식하기란 어려운 일이었다. 특히 전처리 과정이 어려웠는데, 콘과 색상이 비슷한 배경이 너무 많았다. 노란색은 풀, 꽃 등의 색들이 같이 인식되어 노이즈가 발생했고, 파란색은 너무 어두웠다. 빨간색은 그나마 괜찮았다. 이러한 시행착오들을 해결하기 위해 많은 노력을 기울였다. 항상 인터넷을 보고 이럴 때는 어떻게 대처해야 하는지 알아보곤 했었는데, ..

    [Python] OpenCV로 자율주행 만들기(Threshold_#04)

    달라진 점 이전 포스팅까지는 색과 관련없이 오로지 오른쪽, 왼쪽의 가상 차선에 따라 점을 분류했었다. 하지만 주최측의 규정이 바뀜에 따라 기존 알고리즘에서 색상으로 분류하는 알고리즘으로 수정하게 되었다. 가상의 차선을 바탕으로 콘을 구분하는 코드가 궁금하다면 이전 포스팅을 참조하기 바란다. [Python] OpenCV로 자율주행 만들기(Threshold_03) 이전 포스팅과의 차이점 먼저 이전 포스팅을 보고 싶다면 아래 링크를 참조하기 바란다. [Python] OpenCV로 자율주행 만들기(Threshold_02) 성과물 : 먼저 OpenCV를 활용하여 만든 지금까지의 자율주행 성 codezaram.tistory.com # 업데이트된 부분 색상에 따른 좌, 우 차선 분류 알고리즘 제작 콘의 색상인 빨간색..

    [Python] OpenCV로 자율주행 만들기(Threshold_#03)

    이전 포스팅과의 차이점 먼저 이전 포스팅을 보고 싶다면 아래 링크를 참조하기 바란다. [Python] OpenCV로 자율주행 만들기(Threshold_02) 성과물 : 먼저 OpenCV를 활용하여 만든 지금까지의 자율주행 성과물을 보여주겠다. 실로 대단하였다. 위의 이 영상은 자율주행을 시연하기 전 콘을 인식하여 가상의 차선을 그어본 것이다. 이것 codezaram.tistory.com 위의 포스팅과 다르게 콘의 규정이 바뀌었다. 원래는 색상에 관계없이 좌우 차선에 가까운 점들을 모아서 왼쪽 점 집합, 오른쪽 점 집합을 만들었다. 하지만 이제는 오른쪽 콘은 노란색, 왼쪽 콘은 파란색, 정지선은 빨간색 순으로 콘들을 색깔로 구분해야 한다. 내가 개발한 코드는 전처리를 거쳐 이미지를 가공한 후 이미지에서 콘..

    [Python] OpenCV로 자율주행 만들기(Threshold_#02)

    성과물 : 먼저 OpenCV를 활용하여 만든 지금까지의 자율주행 성과물을 보여주겠다. 실로 대단하였다. 위의 이 영상은 자율주행을 시연하기 전 콘을 인식하여 가상의 차선을 그어본 것이다. 이것의 원리는 먼저 가상의 선을 미리 그어둔 후 거기에 가까운 점들을 추출하여 왼쪽 콘들, 오른쪽 콘들로 나눈다. 그 후, 이 콘들을 사용하여 다시 가상의 차선을 만들었다. 요약하자면 다음과 같다. 임의의 가상의 차선 긋기 while(true): 가상의 차선을 바탕으로 콘 인식하기 콘들을 바탕으로 다시 가상의 차선 긋기(linear regression) 하지만 아직 많은 콘들을 뽑아내지 못한다는 단점이 있었다. 이러한 단점을 보완하기 위해 먼저 콘들을 추출하는 부분을 이미지화해보았다. 콘을 추출한 곳은 흰색 네모 박스가..