목록[AI] (68)
개발자로 후회없는 삶 살기
서론 MMdetection을 이용해서 convnext 백본 cascade rcnn 모델 학습 파이프라인을 제작하는 과정을 공유합니다. 본론 - mmdetection/configs에 config 파일 만들기 python tools/train.py \ ${CONFIG_FILE} \ [optional arguments] 학습을 할 때 config 파일을 인자로 주기 때문에 config 파일을 커스터마이징하면 원하는 동작을 수행할 수 있습니다. faster_rcnn r50의 config 파일입니다. faster_rcnn은 위 4개의 파일로 학습을 진행하며 각 파일을 수정하면 됩니다. 주의사항 🚨 faster_rcnn r101 같은 경우는 r50의 config를 베이스로 재정의할 수 있습니다. 재정의를 할 경우 ..
서론 객체 탐지 레벨 2 미션에서 배운 것을 기록합니다. 이번주는 EDA와 데이터 클리닝에 집중했습니다. 본론 - 객체 탐지의 데이터 클리닝 레벨 1 미션에서 크게 느낀 것은 데이터 클리닝의 중요성입니다. 라벨링 오류 수정 배경 제거 위 항목 등이 이미지 분류 문제에서 하면 좋은 클리닝 기법들이었습니다. 🚨 객체 탐지에서 좋은 데이터란? 정확한 Localization 라벨링 규칙의 일관성 분류 문제에서 좋은 데이터는 명확했습니다. 정답이면 T, 거짓이면 F로 제대로 라벨링 되어 있으면 되는 것이었습니다. 하지만, 탐지 영역에서 좋은 데이터가 무엇일까 모르겠던 찰나, 팀원들과 토의를 통해 위처럼 정의할 수 있었습니다. ✅ 객체 탐지에서 데이터 클리닝 팀 전원이 데이터를 열어서 데이터에 대한 의견을 제시하고..
서론 레벨 1이 끝나고 레벨 2를 맞이해야 할 단계입니다. 이 과정에서 느끼고 배운 점을 기술합니다. 본론 - 복잡한 MLOps MLOps는 생각보다 훨씬 할 게 많은 것 같습니다. 위 그림은 데이터 분야에 들어온 순간부터 수도 없이 많이 봐온 AI 서비스 구축에 대한 것인데 큼직큼직한 제목 뒤에 고려해야 할 점들이 복잡하게 얽혀 있습니다. 예상 트래픽 서버의 GPU, CPU 메모리 성능 인프라 규모 서빙 방식 실험 관리 학습, 서빙 시점의 데이터 검증 학습 자동화 모니터링 위 예시들은 모두 MLOps를 구축할 때 반드시 필요한 것들이며 각 항목에서도 회사의 상황, 서비스의 규모, 사용 대상에 따라 달라질 수 있습니다. ✅ 변성윤 멘토님 : 라이브러리를 익히는 것보다 방법론에 초점을 둬라 위 말씀이 혼란..
서론레벨 1 프로젝트 기간 동안 느낀점을 회고합니다. 본론- 프로젝트 마무리와 함께 정리 시작23.12.21 레벨 1프로젝트를 마무리하고 최종 순위가 발표되었습니다. 수고했기도 하고 아쉽기도한 상태에서 그 동안 달려가느라 정리하지 못했던 항목들을 정리해야겠다는 생각을 하였습니다. 대부분 협업, 느낀점 관련한 것들로 다음과 같습니다. 1. 발생한 이슈 정리2. gpu 풀, 클라이언트-서버 형식의 GPU 서버 활용 개선 방안3. 랩업 리포트4. 완디비 팀 프로젝트 개선 방안5. 레벨 1 ML 프로젝트 진행 방식에 대한 고찰6. 프로젝트 릴리즈7. 코드 리팩토링8. 느낀점 정리생각보다 많은 분량에 줄일까도 고민했지만, 그만큼 알차고 배운게 많은 프로젝트라고 되새기며 팀원들과 고민거리들을 공유하였습니다. 특히 ..
서론albumentation를 사용해야하는 이유와 다양한 활용 방법을 알아봅니다. 본론- albumentation 장점albumentation 토치 비전보다 빠르고 종류도 많고 탐지나 세그먼트 데이터에도 증강을 적용할 수 있습니다. def _transforms(self): return A.Compose([ A.RandomResizedCrop(height=150, width=300, scale=(0.3, 1.0)), A.Resize(100, 100), ToTensorV2() ])또한 사용 방법도 토치 비전과 동일해서 기존 코드에 바로 적용할 수 있습니다. A.Compose로 토치 비전과 동일하게 증강을 적용하기 위한 객체를 생성합니다. image = Imag..
서론 CV 마스크 분류 프로젝트를 시작하였습니다. 그 과정에서 겪었던 마음 가짐과 배움을 정리해 봅니다. 본론 - 내 지식을 모두와 공유하는 긍정적인 마인드 해당 프로젝트의 운영진 및 개발자 분들은 커뮤니티 활동을 통해 적극적인 소통을 강조합니다. 대신 이슈나 오류가 발생했을 경우 도움을 요청하는 것 외에 본인이 적용한 방법론, 논리적 추론 등 문제를 해결한 방법에 대해 공유하는 것을 재차 강조합니다. 저는 지금까지 개인 공부를 위해 블로깅을 해 왔고, 다시 한 번 정리하면서 복습하는 효과를 얻고 새롭게 알게 되는 것들도 있었습니다. 하지만 제가 아는 지식들이 사실인지는 증명할 수 없었습니다. 부스트코스는 이러한 쟁점을 극복하기 위해 지식을 공유하여 사실로 만들라는 취지로 성공 케이스를 공유하라고 하는 ..
서론Multi Node Single GPU 환경에서 GPU를 효율적으로 사용하기 위해서 GPU 풀을 구현해봅니다. Spring 쓰레드 풀과 같은 개념으로 GPU를 미리 할당 받아서 모아 두어 효율적으로 사용하기 위한 목적으로 볼 수 있습니다. 본론- 구현 목적다수의 GPU로 모델 학습을 돌리다보면 GPU를 100% 효율적으로 사용하기 어려울 수 있고, 프로젝트 종료 후에 실제 학습을 돌린 시간을 보면 절반도 안되는 경우가 있습니다. 그 이유는 누군가는 모델을 안 돌리고 있을 수 있고, 누군가는 모델을 돌리고 싶지만 현재 자신의 GPU를 돌리고 있어서 다른 실험을 할 수 없을 수 있습니다. 이렇게 되면 GPU utilization이 떨어집니다. 따라서 6개의 GPU의 사용성을 올리기 위해서 개개인의 GPU..
서론 이번주는 새로운 이벤트가 많은 주였습니다. 기록하는 마음으로 회고합니다. 본론 - 확률 분포를 모델링하라 5주 차에 들어서기까지 다양한 강의와 과제를 하고 확률 분포를 모델링한다는 문장을 셀 수도 없이 많이 들었지만 정확히 그게 어떠한 의미, 메커니즘인지 이해를 못 했었습니다. 마치 경사하강법을 처음 배울 때 최소값을 가지는 최적의 W를 찾아서 기울기를 따라 이동한다고 하긴 하는데 Cost 함수의 X, y축이 무엇인지 모르고 도대체 어떻게 최솟값을 찾아가는지 추상적으로만 알고 있던 상황과 비슷했습니다. 하지만 이번에 배운 Hourglass 모델을 통해 확률 분포를 모델링하고 정규분포가 되도록 모델링하고 두 분포의 KL 발산을 최소화한다는 것에 다시 한 번 생각해 보게 되었습니다. 저는 항상 공부를 ..