반응형

Career 20

Super 주니어 개발자

개발자 컨퍼런스라는 것을 처음으로 신청해서 참여했습니다. 입사하고 1년이 다 되어가는데, 취업을 열심히 준비할 때의 '개발자'와 지금 생각하는 '개발자'가 다르게 느껴습니다. 나태해진 건지 무뎌진 건지 모르겠지만 어떠한 동기가 필요했고 개발자 컨퍼런스만한게 없지 않을까 생각했습니다. 멋진 사람들을 보면 그렇게 되고 싶은 생각이 듭니다. 총 9명의 개발자가 9가지의 이야기를 들려주었습니다. 주니어 개발자로서 갖추어야 하는 마음과 태도를 충분하게 배울 수 있었습니다. 정말 저에게 필요했던 것을 찾은 기분이었습니다. 제가 가져온 키워드는 자동화, 코드리뷰, 회고 이렇게 3가지 였습니다. 자동화는 업무 능률을 향상시키고 노력 대비 좋은 성과를 낼 수 있다고 생각했습니다. 코드리뷰는 업무의 이해를 돕고 근본적인 ..

Career/Conference 2022.07.31

HashiCorp Strategy Day

회사에서 클라우드 환경으로 MSA를 전개하면서 클라우드 인프라에 대해서 알아야 할 필요가 있었습니다. 해외에 MSA 전개를 시작하면서 클라우드 인프라에 대해서 공부하게 될 기회가 생겼습니다. 마침 PM님께서 하시코프에서 진행하는 멀티/하이브리드 크라우드 운영 전략에 대해서 발표가 있다고 해서 참석하게 되었습니다. 7월 19일, 화요일, 서울 코엑스의 Grand Ballroom에서 진행되었습니다. Agenda는 Terraform, Vault, Consul, Nomad 솔루션을 차례대로 다루었습니다. 키노트는 하시코프의 부사장인 James Conway가 해주었습니다. 하시코프는 코드형 인프라(IaC : Infrastructure as Code)를 통해서 멀티 클라우드 인프라를 자동화할 수 있다고 했습니다. ..

Career/Conference 2022.07.31

개인 프로젝트 : 개선

1. 속도 - '개인 프로젝트 : 테스트' 편에서 보았듯이 영상이 다소 느리게 보여짐을 볼 수 있었습니다. 속도를 향상 시키기 위해서 2가지를 생각해 보았습니다. 1) 얕은 망 사용 - 적용했던 CNN 망의 깊이는 10 layers이었습니다. Hyper parameter tuning을 성능 평가를 했을 때, layer의 개수는 성능에 그다지 큰 영향을 미치지 않았습니다. 따라서 layer의 개수를 줄인다면 영상의 처리 속도를 향상시킬 수 있습니다. 2. 정확도 - 문제 : '일반 운전 행동'과 '졸음을 깨기 위한 행동'을 구분하긴 하지만, 때때로 구분이 잘 안되었습니다. 테스트 과정에서 분명히 '졸음을 깨기 위한 행동'으로 오른손을 뒷목으로 가져가지만, Dissimilarity는 그대로 인 것을 확인할 ..

개인 프로젝트 : 테스트

1. 테스트 아버지가 운전하시는 모습을 촬영하여 테스트 데이터로 사용했습니다. Dissimilarity가 0.7 이하로 내려가면 경고음이 울리도록 설정해 놓았습니다. 2. 개선 점 - 영상을 처리하는데 다소 시간이 걸려서 실시간으로 다소 부족하다고 생각합니다. 따라서 영상 처리 속도를 높이기 위한 방법을 생각해 보았습니다. 이 내용은 다음 포스트 '개인 프로젝트 : 개선' 편에서 확인하실 수 있습니다.

개인 프로젝트 : 문제 해결

1. Loss 값 증가 - 문제 : Loss 값이 갑자기 증가하는 현상 관찰 - 해결 : Adam Opimizer의 문제 해결 * 'Loss increases after some epoch'이라는 문장으로 검색 시도 * 문제 해결 사이트 1 * 문제 해결 사이트 2 * 문제 조사 : 제가 사용했던 Adam optimizer은 stability issue를 가지고 있습니다. 왜냐하면, 분모로 제곱평균제곱근(RMS : Root Mean Square)를 사용하고 있기 때문입니다. 제곱평균제곱근은 이전의 gradients에 영향을 받기 때문에 gradients이 0에 가까워 지면, 분모는 엄청 작아지게 됩니다. 분자에 비해 분모가 엄청나게 작아지면 loss값이 갑자기 커져버리는 현상이 발생합니다. 그래서 Ada..

개인 프로젝트 : 개발

1. 학습시키는 알고리즘 1) 데이터 묶기 - 경로 저장 : Dictionary를 만들어서 'drowsy', 'normal'를 key로 설정하고 drowsy 이미지 경로와 normal 이미지 경로를 value로 저장합니다. - 데이터 분할 : Drowsy와 normal 이미지 데이터를 train : validation = 0.8 : 0.2로 분할합니다. - 묶음 : [normal, normal, normal, drowsy, normal, normal, normal, drowsy, ...] 형식으로 리스트에 이미지들의 경로를 저장힙니다. 즉, (A, A), (A, B)가 짝을 이루어 차례대로 정렬됩니다. - 데이터 가져오기 : Image와 numpy를 통해 이미지 경로에서 이미지 데이터를 가져옵니다. - ..

개인 프로젝트 : 전처리

1. 유의미하지 않은 features 제거 1) 문제 - 같은 행동을 취하고 있는 두 이미지의 Euclidean distance가 2.3, 그리고 다른 행동을 취하고 있는 두 이미지의 Euclean distance가 2.4로 전혀 구별하지 못했습니다. 2) 해결 - Coursera 강의에서 배운 meaningful features가 생각이 났습니다. 그래서 구글에 meaningful feature extraction라는 키워드로 검색을 진행했습니다. - 검색 결과, 저의 이미지에는 쓸모 없는 부분이 너무 많다는 사실을 알 수 있었습니다. 아래의 예시를 보면, 아버지가 행동하고 있는 범위는 사진의 절반 만으로도 충분히 볼 수 있습니다. 가운데를 기준으로 오른쪽은 실제로 쓸모 없는 부분입니다. - 따라서 유..

개인 프로젝트 : 데이터 수집

데이터 형태 운전자의 행동을 관찰할 수 있는 영상 예시 1차 데이터 수집 촬영 상황 - 야간에 촬영한 어두운 사진 - 주간에 촬영한 밝은 사진 - 비오는 날 촬영한 우중충한 사진 - 터널 안 - 터널 밖으로 나오는 순간(갑자기 밝아짐) 운전자의 행동 - 일반 주행 모습 - 졸음을 깨기 위한 행동 모습 촬영 위치 - 룸미러 오른쪽 - 차량 계기판 - 차량 계기판 위쪽 선반 촬영 방식 - 동영상으로 촬영 - 촬영 상황 3가지 (야간, 주간, 비오는 날 + 터널 지역 적용)에 촬영 위치 3가지를 적용하여 총 9가지 상황에서 10분 씩 3번 촬영 테스트 결과 - 어두운 상황에서 일반 카메라로 인식이 어려워서 주간 영상을 활용하기로 결정 * 해결 방법 : 이미지 처리, 야간 카메라 사용 - 계기판 위 선반에서 촬..

개인 프로젝트 : 설계

가장 먼저 사용자인 아버지의 요구분석을 했습니다. 1. 뒷목을 마사지 행동 인식 2. 행동 인식 후, 경고음 저는 이 과정에서 개인화라는 요소를 넣고 싶었습니다. 아버지의 뒷목 마사지 사진만 넣어서 학습시키면 문제해결이 너무 쉬웠습니다. 그리고 일반화가 되지 않았습니다. 왜냐하면, 사람들 마다 졸음을 깨기 위한 행동이 다르기 때문입니다. A라는 사람은 코를 만질 수도 있고, B라는 사람은 관자놀이를 마사지할 수 있기 때문입니다. 그래서 사용자의 행동을 자동으로 수집하여 학습하고, 최종적으로 개인화 행동 인식이 되도록 만들고 싶었습니다. 이를 위한 방법은 다음과 같습니다. 모델 초기에 사용자는 자신의 졸음을 깨기 위한 행동을 몇 장 촬영하여 데이터를 넣어 줍니다. 이는 핸드폰의 지문 인식을 위해 초기에 자..

개인 프로젝트 : 시작

프로젝트 명 : 행동 기반 졸음운전 인식 동기 : 아버지의 일을 도와 함께 일하던 어느 날, 차에서 조시는 모습을 보았습니다. 이러한 일이 몇 번 있었고 그 모습을 관찰한 결과, 아버지는 졸음이 오기 전에 높은 확률로 뒷목을 마사지 하셨습니다. 따라서 '뒷목 마사지 -> 졸음'이라는 과정이 발생한다는 것을 알았고, 아버지에게 도움이 되는 프로그램을 개발하고 싶어서 이 프로젝트를 시작했습니다. 뿐만 아니라, 저의 개발 역량의 성장을 도모할 것 같아서 시작했습니다. 차별성 : 행동 기반 인식을 통한 효과적인 졸음 상태 탈출 이미 많은 졸음운전 알고리즘이 논문과 오픈소스로 나와있습니다. 대부분은 눈의 상태를 이용한 인식 방법입니다. 예를 들어, 1초에 45frame인 카메라를 통해 1초 안에 눈을 감고 있는 ..

반응형