[프로젝트 회고]스마트폰으로 알약 인식 앱 만들기(어플 이게머약)
·
My Projects
프로젝트 개요● 4인 팀을 구성해 약 2주간 진행한 팀 프로젝트다. 주제는 알약 이미지 객체 탐지 — 스마트폰으로 알약을 촬영하면 YOLO 모델이 약을 인식하고, 식약처 API를 통해 효능·복용법·주의사항을 보여주는 앱을 만드는 것이었다. ● 단순히 모델 학습으로 끝내는 게 아니라, 실제로 사용자가 쓸 수 있는 앱까지 완성하는 것을 목표로 잡았다. 결과적으로 mAP@0.5 0.9914, F1 Score 0.9948의 모델을 학습시키고, FastAPI 서버와 Flutter 앱을 연결해 실제로 동작하는 서비스를 완성했다. GitHub Link 시연영상 - Youtube Link 내 역할 : PM도 하고 개발도 하고● 프로젝트에서 PM을 맡았다. 처음엔 일정 관리와 업무 분배에 집중했지만, 실제론 매일 직접 ..
[TIL] #18 2026-04-30
·
TIL
상황 : 데이터셋 병합시 ID불일치상황원본 데이터(56종)와 추가 데이터를 합쳐서 EDA를 돌렸는데, 예상한 클래스 수는 98개인데 실제로는 143개가 나왔다. txt 파일 기준으로 세면 143개, json 기준으로 세면 98개라 처음엔 집계 방식 문제인 줄 알았다. 원인● build_global_class_map(모든 JSON 파일을 돌면서 category_id → yolo_class_id 전역 매핑을 만드는 함수)이 category_id를 클래스 식별 기준으로 쓰고 있었음-> 같은 약(예: 놀텍정)이 원본 데이터에선 category_id = 5, 추가 데이터에선 category_id = 200423처럼 서로 다른 ID를 가지고 있었다. 결과적으로 같은 약이 두 개의 다른 클래스로 카운트되어 143개가..
[TIL] #17 2026-04-28
·
TIL
상황1상황 설명YOLO 모델이 약을 인식하면 클래스명("놀텍정 10mg")으로 식약처 API를 조회하도록 했는데, "울트라셋이알서방정"만 결과가 나오고 나머지는 전부 "정보를 찾을 수 없습니다"가 떴다. 원인식약처 API DB에는 약품명이 "놀텍정10밀리그램(일라프라졸)"처럼 용량을 한글로 저장하고 있었다. YOLO 클래스명은 "놀텍정 10mg"처럼 영문 단위를 쓰기 때문에 검색어 자체가 DB 형식과 달라서 매칭이 안 됐던 것이다 .. 해결정규식으로 용량 패턴(10mg, 800mg 등)을 감지해서 검색 전에 한글로 변환하도록 했다.DOSAGE_PATTERN = re.compile(r"\s*(\d+(?:\.\d+)?)\s*(mg|mcg|g|ml)\b", re.IGNORECASE)UNIT_KO = {"mg..
[TIL] #16 2026-04-23
·
TIL
상황 1. ModuleNotFoundError - No module named 'src'Colab에서 tests/detr_test/detr_test.py를 실행했더니 아래 에러가 발생했다. src 폴더가 분명히 있는데 왜 못 찾는지 고민해보았다 .. 원인Python은 스크립트를 실행할 때 해당 파일이 있는 디렉토리를 기준으로 모듈을 탐색한다고 한다. detr_test.py는 tests/detr_test/ 안에 있어서 Python 입장에서는 거기서부터 탐색을 시작하기 때문에 프로젝트 루트의 src 폴더가 보이지 않았던 것이다. 해결파일 상단에 아래 코드를 추가해서 프로젝트 루트를 sys.path에 직접 등록했다.from pathlib import Pathimport sysPROJECT_ROOT = Path..
[TIL] #15 2026-04-22
·
TIL
상황1 : uv sync가 torch cu128을 CPU 버전으로 덮어쓰는 문제 uv run python 으로 학습 스크립트를 실행할 때마다 아래 에러가 반복됐다.RuntimeError: operator torchvision::nms does not exist처음엔 torchvision을 재설치하면 해결됐지만, 다시 uv run을 하면 또 같은 에러가 났다. 원인uv run은 실행 전에 자동으로 uv sync를 돌린다. 문제는 pyproject.toml에 torch/torchvision이 [project.dependencies]에 없었고, [tool.uv.sources]의 설정도 잘못된 형식(url)을 쓰고 있었다 ! # 잘못된 설정 — url은 직접 wheel 파일 경로용이라 index URL엔 동작 ..
[프로그래머스] 124 나라의 숫자
·
Algorithm
문제 풀이from collections import dequedef solution(n): #리스트 앞쪽에 넣기 위해서 deque 선언 res = deque() def recur_124(n) : quo = n // 3 rem = n % 3 #재귀함수 내부에서 res 사용위해 nonlocal nonlocal res #재귀함수 종료 조건 : 3으로 나누다가 몫이 0일때 if n == 0 : return ''.join(res) if rem == 1 : res.appendleft('1') return recur_124(quo) elif rem =..