본문 바로가기

전체 글

(49)
ML(Machine Learning) 학습 파이프라인 구축기 배경3차원 모델링 자동화 프로젝트에서 3가지 테스크에 대한 문제 해결이 필요했다.첫번째는 이미지에서 Object Detection을 수행해야 했고 두번째는 그래프에서 Edge Classification을 세번째는 두 개의 그래프에서 Graph Similarity를 수행해야 했다.각 테스크 별로 여러 모델을 사용할 수 있겠지만 초기에 전체 프로세스를 만드는 과정에서 Object Detction에는 YOLO 모델, Edge Classification에는 GCN을 이용해 만든 SD-GCN(Shape Dimension - Graph Covolution Network) 그리고 Graph Similarity에는 마찬가지로 GCN을 이용한 GMN 모델을 사용하였다.이러한 상황에서 각각의 테스크 그리고 그 안에서도 모..
2025-05 Algorithm Baekjoon - 용액(2467) mid 값을 (left + right)//2 로 한 것 과 left = mid+1, right = mid-1로 한 것 그리고 whlie left 가장 먼저 mid 값을 (left+right)//2 로 했기 때문에 2,4와 같은 상황에서 mid값이 3이 되어 3,4로 갔고 idx 3일 때 상한이 아닌 하한이 갱신되는 상황이라고 생각해보자. 그렇다면 while 루프를 돌아도 3,4가 되서 무한루프에 빠져버리게 된다. 그래서 이를 방지하기 위해 left = mid +1 ,right = mid -1 이라는 조건이 추가되었다. 물론 탐색이고 mid에 해당하는 값에 대해 체크를 했기 때문에 +1, -1을 해도 빠지는게 없게 된다. 그리고 이러한 +1, -1 조건이 있기 때문에 l..
LLM을 활용한 코드리뷰 자동화 개인 프로젝트를 진행하다 보면 코드 리뷰에 대한 갈망이 생긴다. 객관적인 시각으로 한번 봐야 내가 놓치고 있는 부분이나 실수를 발견할 수 있어서 LLM을 활용하여 개인 프로젝트 레파지토리에 push나 pull request(pull request를 추가할 수 있지만 혼자 하는 프로젝트이기 때문에 pr을 올리지는 않아서 push 로만 한정하였다.)를 올릴 때마다 코멘트로 해당 commit에 대한 피드백을 받을 수 있도록 리뷰 시스템을 개발하였다. 자동 코드 리뷰 시스템을 구축하는데 많은 방법이 있겠지만 나는 Github Actions와 OpenAI API를 사용하였고 크게 바꾸어야 할 부분은 3가지이고 다음과 같다. 1. .yml 파일 생성github 서버는 레포지토리 안에 .github/workflo..
문자열 처리 1. 백슬래시와 쌍따음표문자열에 쌍따음표("), 백슬래시(\), 따음표(')등이 들어가면 처리가 다소 혼란스러워진다. 또한 JSON에서 백슬래시(\)와 쌍따음표(")가 들어가는 경우 처리가 안되기도 한다.대원칙은 간단하다. 백슬래시(\)와 쌍따음표(")를 문자열에 포함시키고 싶으면 앞에 백슬래시(\)를 붙혀서 이스케이프 처리를 하면 된다. \ -> \\" -> \"특히나 JSON에서는 문자열은 항상 쌍따음표(")로 감싸지기 때문에 쌍따음표와 백슬래시의 사용에 백슬래시를 앞에다 붙혀줘야 한다. 특히나 메모장, Word등에서 보이는 텍스트는 렌더링이 된것이기 때문에 이를 python 과 같은 코드로 가져올 경우에 달라지는 것을 확인 할 수 있다. 2. 백슬래시(\) 심화그렇다면 아래 4가지의 차이를 살펴보..
Computer Vision Basic 컴퓨터 비전에서 딥러닝을 이용하게 됨으로써 다양한 도메인에서 객체 검출, 이미지 분류등을 손쉽게 할 수 있게 되었다. 진입장벽이 낮아졌다고도 볼 수 있는데 비전과 딥러닝 분야에 뛰어나신 분들이 코드와 모델을 공유하고 사용하기 쉽게 만들어 배포했기 때문이다.그런데 때때로는 만들어진 모델만을 사용하는 것에서 더 나아가 모델이 뱉은 아웃풋을 이용하거나 딥러닝 모델 외의 전통적인 컴퓨터비전의 기술들을 사용해야 될때가 발생한다. 그때마다 기본에 충실하여 컴퓨터 비전의 전통적인 방법들을 좀 더 심도있고 차근차근 공부할 필요를 느껴 컴퓨터비전의 기본내용을 정리하는 포스팅을 하기로 결정하였다. 다크 프로그래머님이라는 컴퓨터비전, 영상처리에 관련하여 포스팅을 완벽하게 해주신 분의 것을 참고하여 공부를 하였고 그 외에 여..
내적과 외적의 활용 업무 중에 내적과 외적이 쓰이는 코드를 보았다. 관련하여 계산이 간단한것도 알겠고 수식적으로 유도하는게 왜 그런지는 이해 하였지만 기하학적으로 왜그런지 이해 하지 못했다. 그래서 기하학적으로 해당 공식들을 증명하는 시간을 가졌다.  1. 내적이 활용된 식. 아래 그림과 같이 파란색의 직선 두개 사이 밴드에 검은 선이 포함(접해도 된다) 되는지 판단할 때, 내적이 사용되었다. 사용된 로직은 아래 그림과 같다. 아래 그림처럼 직선에 수직인 벡터를 구한후, 밴드를 이루는 두 직선에서 각각 한점씩을 수직인 벡터와 내적을 하면 값을 두개를 얻는데 그중 작은 값이 lower bound가 되고 큰 값이 upper bound가 된다는 로직이다. 처음에는 직관적으로 이게 왜 성립하는지 이해가 가지 않았다. 그러나 벡터에..
2025-04 Algorithm Baekjoon - 다각형의 면적(2166)신발끈 정리를 이용하여 면적을 구하면 되는 문제. 점이 정렬이 되어 있지 않다고 할때는 Convex Hull 에서 쓰이는 정렬 공식을 이용하여 점을 정렬해야 하지만 이 문제에서는 입력 점이 정렬되어 있어서 한층 쉬웠다. 전체 코드import sysimport mathN = int(sys.stdin.readline())node_l = []for _ in range(N): node_l.append(list(map(int, sys.stdin.readline().split())))center_x = sum([x[0] for x in node_l])/Ncenter_y = sum([x[1] for x in node_l])/Ndef cal_angle(cri, poin..
2025-03 Algorithm Beakjoon - 별자리 만들기(4386번)지난번에 풀었던 2887 문제의 쉬운 버전, 최소 신장 트리(MST)를 프림 알고리즘으로 구해주면 되는 문제.지난번과 달리 Edge의 개수를 정렬로 최적화 할 필요가 없었고 그냥 N개의 Node에 대하여 서로 다른 점을 잇는 N*(N-1)/2 개의 Edge를 구해주고 해당 Edge를 프림 알고리즘을 통해 MST를 구해주면 된다.한붓 그리기와 헷갈리지 않아야 한다. 이론상 특정 한 점 A에서 다른 모든 점과 연결한 것이 MST를 구성할 수도 있다. 또한 참고로 immutable한지 mutable 한지에 따라서 "="으로 할당 했을 때, 복사(깊은, 얕은)가 되는지 참조가 되는지에 대해 정리해 보면 좋을 거 같다. 아래의 코드에서 hq = edge_l[0]는 참조..