목록전체 글 (52)
0과 1 사이

이전에 잘 동작하던 프로그램이 갑자기 핵심 이미지가 세개인 수어를 인식할 때 매우 버벅거리는 문제가 생겼다. 이에 따라 코드 개선에 도전해봤다. 참고로 우리가 개발중인 손마리 프로그램은 detect한 결과들을 리스트에 저장한 뒤, 해당 리스트를 통해 최종 단어를 출력해주는 프로그램이다. 예를 들면 '쓰러지다1'과 '쓰러지다2'가 차례로 인식된 경우, ['쓰러지다1', '쓰러지다2'] 처럼 리스트에 결과를 저장한 뒤 '쓰러지다'를 출력하도록 코딩하는 것이다. 여기서는 이미지가 1,2로 두개로 나뉘어져있는 경우만 나와있지만 변비1,변비2,변비3 처럼 이미지가 세개인 단어들도 여럿 있다. 그렇다면 리스트에 결과를 저장하는 것은 어떻게 구현할까? 원래의 코드는 아래처럼 효율이 좀 떨어지고 직관적이지 않은 코드였..
pyqt를 잘 몰라서.. 의외로 이 파트가 어려웠다. ui는 간단하게 구현하기 위해 pyqt를 이용하였고 환자의 수어를 번역하여 출력하는 yolo 창만 남겨두고 최대한 단순화했다. 또한 내 노트북 상으로는 실행은 잘됐는데, 팀원 노트북에서는 실행도 되지 않았다. 다른 것들은 제외하고 pyqt로 darknet을 이용해 번역한 이미지를 가져오는 방법에 대해 설명해보겠다. 아래는 ui를 실행시키는 sonmari.py 코드이다. 핵심은 3중 쓰레드 마지막 줄에 보면 sonmari_video.drawing을 실행시키도록 되어있는데, self를 전달하여 해당 윈도우 객체를 전달해주는것이다. width = darknet.network_width(network) height = darknet.network_height..

이 파트는 어렵지 않다. 우선 파이썬 딕셔너리(밑의 코드 내에서는 continuous) 내에 단어에 따른 핵심클래스를 모두 정의해둔다. 바로 이전의 결과를 before_result에 저장한다.(단, 결과가 null이면 저장하지 않을것.) 현재의 결과는 result에 저장되고, before_result와 result를 비교해 미리 정의된 딕셔너리 내에서 대응되는 단어를 가져온다. 핵심동작이 1개인 단어도 있고 2개인 단어도 있다. 핵심동작이 1개인 경우, 실행속도가 너무 빨라 단어가 0.1초만에 출력되고 지나가버린다. 따라서 핵심동작 1개인 수화는 15번 프레임동안 출력되게 했다. 또한 2개인 수화의 경우 딕셔너리 안의 value값과 비교한후, 대응되는 단어를 가져와 출력한다. draw.text는 한글을 ..

커스텀 데이터를 이용해 YOLO를 트레이닝 하는 것은 인터넷에도 많이 나와있다. https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects AlexeyAB/darknet YOLOv4 / Scaled-YOLOv4 / YOLO - Neural Networks for Object Detection (Windows and Linux version of Darknet ) - AlexeyAB/darknet github.com 위 링크를 많이 참고했다. YOLO는 학습시킬 트레이닝 이미지와 그에 대한 라벨링 파일(txt), 테스트 이미지만 있다면 쉽게 딥러닝을 트레이닝 시킬 수 있는 오픈소스이다. 우선은 라벨링이 필수적이다. 이미지 데..

안녕. 오랜만이다. 이전에 조사했던 내용을 새로 포스팅하려한다. 구글에 '수어 번역'을 검색하면 내 블로그가 제일 먼저 나온다. 꾸준하게 저 글만큼은 방문하는 사람이 정말 많다. 그러나... 나도 아직 주니어이다. ㅜ 저 프로젝트 또한 내 인생의 첫 개발프로젝트였다. 더군다나 문서화에 익숙지 않다보니 사람들이 한번 방문은 해보지만, 그냥 다시 나가는 듯 하여.... 혹여나 일년전의 나처럼 헤맬 누군가가 있을까봐 문서화를 좀 더 열심히 해보기로 했다. 반겨주시길!!^^ 기존의 수어 번역 CNN 오픈소스 EvilPort2 github.com/EvilPort2/Sign-Language GitHub - EvilPort2/Sign-Language: A very simple CNN project. A very si..

취업준비 하던 어느날 인턴 서류 합격 메일이 왔다 두근 두근 금토일 하루 중에 코딩테스트를 보라는 내용 오늘의집 포인트도 준다고 한다 신나서 당장 봤다 자세히 쓰면 안되겠지만 문제가 어렵진 않았다. 4문제 3시간이었고 시간도 넉넉했다. sql도 포함되어 있었다. 복잡한 알고리즘 문제가 출제되진 않았다. 4문제를 모두 풀었고 완벽히 해결된 문제는 3문제. 1문제는 딱 하나의 테스트케이스만 통과하지 못했다. 거의 99% 푼 셈이다. 다만 1번 문제를 복잡한 코드로 풀었던 것 같다. 나름 붙었기를 기대하며 메일을 봤는데... 불합격 ㅜㅜ. 아마도 지원자들이 모두 잘 풀었을 것 같고 코드도 확인해봤을 것 같다. 코딩테스트를 더 열심히 준비해야겠다..ㅎㅎ 1.28 불합격통보를 받고나서 2-3일쯤 뒤 30000원의..
https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 아주 어려운 문제였다.. ㅠㅠ 일단 이해하지 못한 포인트가 있었다. 자기자신의 몸과 부딪히면 게임이 끝난다는데, 무슨 말이지..? 그리고 뱀의 길이가 늘어나는 것을 어떻게 처리해야하나 고민스러웠다. 아직 이해하지 못했으나 일단 내가 작성한 코드만 올려본다. 내가 짠 코드 def new_direction(original_direct, change_direct, i, j): #원래 방향과 회전 방향에 따라 ..
https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 모든 스테이지에 대한 실패율을 계산하고 각 번호를 실패율의 내림차순으로 정렬하는 문제이다 실패율까지 잘 계산했는데... 그러나 실패율의 내림차순으로 리스트를 출력하는 방법을 잘 모르겠더라. 원래 코드 def solution(N, stages): rate_list = [] #실패율 리스트 stages.sort() #오름차순 정렬 for i in range(1,N+..