포트폴리오.docx

박건우 포트폴리오

AI 소프트웨어 및 시스템 통합

HKUST Computer Engineering / Big Data Technology 부전공
SSAFY 15기 / rbtree0303@gmail.com

대표 경험확인된 결과상세
ABCD 음성 AI재현율 0.66 -> 0.96 / 시간당 오탐 6.5회 -> 0.5회2 - 3쪽
Pilgrimage 데이터 배치실패 작업을 재시작하는 6단계 배치와 API 통합 테스트 33개4쪽
MergeFeat RAG82문항 기준 HitRate@3 51.2% -> 76.8%5쪽

1. EyEar 웨어러블 기기 개발

2024 - 2025 / 3인 졸업 프로젝트 / 하드웨어 설계 및 제어 소프트웨어

수어 영상과 음성을 AI 서버로 보내고 번역 결과를 표시하는 안경형 기기. 부품 선정과 회로 설계, 입출력 제어를 맡아 시제품을 제작.

EyEar 안경형 번역 기기. 카메라와 마이크로 입력을 수집하고 AI 서버의 번역 결과를 화면에 표시. 직접 담당: Raspberry Pi Zero 2 W 기반 회로와 배선, IMX219 카메라와 GC9107 화면 제어, 음성 녹음, Wi-Fi 통신, Python 프로그램 통합. 팀 통합 결과: 입력 수집부터 번역 결과 표시까지 시연 완료. 사진: 졸업 프로젝트 최종 보고서 Figure 30.
사진 기반 재구성

1.1. 설계 결정과 검증

안경 프레임에 맞춰 화면을 1.3인치에서 0.96인치로 교체. 음성 입력은 USB 마이크로 변경하고 카메라 촬영, 녹음, 화면 출력을 개별 점검한 뒤 서버 통신을 연결.

팀 통합 시험에서 수어 영상 처리 시간은 약 2.58초로 측정. 1초 목표에는 미달. 모델 학습은 팀원이 담당. 본인은 웨어러블 제작과 제어 프로그램, 입출력 검증을 담당.

수상: ECE Best FYP/T Award 2024-2025 2nd Runner-Up
FYP/T Industry Day Best Poster Award

1

2. ABCD 음성 AI의 오탐 개선

2026.07 - 08 / Wakeword 개발 및 모델 적용
보드게임 카페에서 규칙 질의와 게임 턴 종료를 호출하는 음성 인터페이스

평가 항목개선 전개선 후측정 범위
재현율0.66
33/50
0.96
48/50
팀원 5명이 각각 10회 호출
시간당 오탐6.5회0.5회시연 환경에서 1시간씩 2회 측정

최종 설정: Threshold 0.7 / Evidence Window Frame 2

2.1. 판정 기준 조정과 오탐 데이터 수집

호출어를 말하지 않아도 음성 기능이 반복 실행되는 현상 발생. 판정 임계값을 높이면 정상 호출까지 놓쳐, 실제 오탐 음성을 추가 학습에 사용하기로 결정.

판정 기준 조정과 오탐 데이터 수집 / 오탐 관찰 · 음성 및 로그 확인 → 판정 기준 조정 · 임계값과 판정 프레임 → 사용자 피드백 · 호출 의도 확인 → 추가 학습 · 오탐 음성을 반영

감지 시 D-Bus 알림으로 호출 의도를 확인. 사용자가 오탐으로 표시한 음성과 로그를 저장하고 Hard Negative로 학습에 반영. 시간당 오탐 1회 이하를 기준으로 반복 검증.

2.2. 모델 입력을 장치 환경에 맞춰 수정

ONNX 모델의 입력 형상을 확인해 raw PCM 대신 [batch, 16, 96] 임베딩이 필요함을 확인. USB 마이크의 44.1kHz 스테레오 입력을 16kHz 모노 PCM16으로 바꾸고 openWakeWord 전처리를 연결.

질의 시작과 턴 종료를 구분하는 ONNX 모델 2개를 적용. 특징 버퍼와 VAD 상태가 동시에 수정되지 않도록 단일 추론 워커가 추론과 초기화를 전담하도록 구성.

2.3. 실행 검증과 평가 범위

녹음 파일을 재생하는 오프라인 리플레이와 고정 스모크 테스트 8개로 프레임 처리, 모델 매핑, 판정 로직을 확인. 모델 해시와 매니페스트가 배포 기준에 맞지 않으면 서비스 이벤트 발행을 차단하도록 구성.

성능 수치는 시연 환경과 팀원 호출 시험 기준. 추가 데이터도 시연장과 유사한 환경에 집중. 환경별 일반화 성능은 정량 검증 미실시.

2

3. ABCD 장치 제어와 시스템 통합

2026.07 - 08 / 팀장 및 PM / 임베디드 개발과 모듈 통합

Jetson Nano의 음성 기능, Raspberry Pi의 캐비닛 제어, EC2 서버를 MQTT로 연결. 모듈의 실행 순서와 거래 상태를 맞추는 역할을 담당.

음성 제어와 캐비닛 제어 / 호출어 감지 · Wakeword → 마이크 입력 중단 · Wakeword → 질의 녹음과 답변 · QnA 및 TTS → 호출 감지 재시작 · Wakeword → 카드 인식 · RFID → 거래 확인 · 서버와 MQTT → 문 제어 · Bluetooth 명령 → 센서 확인 · 열림과 닫힘 → 다음 단계 · step 진행

3.1. 마이크 점유 충돌 해결

Wakeword와 QnA 동시 실행 시 한쪽의 마이크 입력 불가. systemd 로그와 오디오 경로를 대조해 ALSA 직접 접근과 PulseAudio의 장치 유지 동작이 충돌하는 지점을 확인.

모든 모듈의 입력 경로를 PulseAudio로 통일. MQTT로 시작, 중단, 상태를 전달하고 QnA 종료 후 Wakeword를 다시 켜도록 실행 순서를 정리해 음성 질의 흐름을 연결.

3.2. 거래 순서와 문 상태를 확인하는 캐비닛 제어

설계 기준직접 구현한 제어 규칙
거래와 명령 순서C++17 상태 머신에서 transactionId와 step을 확인해 중복 및 순서가 맞지 않는 요청 차단.
실제 문 상태열림과 닫힘 센서 이벤트를 확인한 후 서버 상태 갱신. 다음 잠금장치는 문 닫힘 확인 후 제어.
연결 및 매핑 오류FAULT로 전환해 추가 동작 차단. 부팅 시 모든 문이 닫혔는지 확인한 뒤 RFID 입력 허용.

3.3. 구현 범위와 팀 의사결정

CR-100EMUR RFID용 C SDK와 C++ 및 Python API, MQTT 모의 서버를 개발. 파서 테스트와 장비 없는 반납 흐름 재현 환경을 준비. Arduino 펌웨어와 캐비닛 조립은 개발 지원.

팀장으로 Jira 일정과 MQTT 규격을 조율. Bluetooth 관리 기능을 크게 병합한 뒤 통합 부담이 증가하여 병합을 되돌림. 단일 거래와 작은 상태 머신으로 재구성. 이후 모의 서버를 활용해 기능별 통합을 진행.

3

4. Pilgrimage 데이터 처리와 서비스 개발

2026.06.01 - 06.26 / 풀스택 개발 / SSAFY 1학기 프로젝트 우수상
드라마 촬영지 탐색과 여행 일정 편집 서비스

4.1. 실패 작업을 재시작하는 데이터 수집 배치

외부 게시물 수집을 6단계 Spring Batch로 구성. 단계별 결과를 staging 상태로 저장하고, 같은 ingestKey의 실패 작업은 완료 단계 이후부터 다시 처리하도록 설계.

6단계 데이터 수집 배치 / 발견 · 게시물 목록 → 파싱 · 본문과 메타데이터 → 작품 매칭 · TMDB 후보 비교 → 좌표화 · 주소 후보 확인 → 이미지 처리 · WebP 및 S3 → 요약 · 태그와 요약문

작품 후보의 기준 점수와 상위 두 후보의 점수 차를 함께 확인. 모호한 주소와 작품은 검수 상태로 유지. 외부 API는 호출 속도와 재시도 간격을 제어하고, 이미지는 SHA-256 기반 S3 키로 중복 업로드를 축소.

4.2. VLM 태그의 오류 분석과 추가 학습

배치 완료 후 관련 콘텐츠가 검색 상위에 나타나지 않아 원문, 생성 태그, 적재 데이터, 검색 결과를 대조. 실패 문항을 바탕으로 Qwen 3.5 4B를 LoRA로 추가 학습하고 질의, 정답 문서, 핵심 태그로 구성한 검수셋에서 평가.

추가 학습 후 검수셋 측정값: nDCG@10 0.86 / Recall@10 0.91

4.3. 화면과 API의 데이터 일치

Vue 3와 Pinia로 지도와 전역 일정 편집기를 구현. 로그인 상태에 따라 로컬 및 서버 저장소를 교체하고, 동기화가 끝난 항목은 로컬에서 제거해 재시도 중복을 축소.

여행 계획 API에서 소유권, 날짜, 시간, 일정 ID를 검증. 세부 일정의 삭제, 수정, 추가는 전체 입력을 확인한 뒤 한 트랜잭션으로 처리.

4.4. 테스트와 구현 근거

검증 범위대표 테스트
여행 계획 통합 테스트 33개권한 없는 계획 수정 차단, 일정 ID 중복 거부, 여행 기간을 벗어난 일정 거부.
배치 테스트 28개점수가 같은 모호한 작품 후보 거부, 같은 이미지의 S3 키 일치, 입력 순서에 따른 수집 키 안정성 확인.

FastAPI Mock API와 GitHub Actions 기반 빌드 및 SSH 배포를 구성.

4

5. RAG 검색 개선과 LLM 출력 검증

MergeFeat / 2025.02 - 06 / 5인 팀 기술 리드
학교 API와 교내 문서를 활용하는 HKUST Open WebUI 개발

5.1. 근거 문서를 찾은 질의 42개에서 63개로 확대

실제 교내 질의 82개에 정답 근거 문서를 연결하고, 검색 결과 상위 3개 안에 근거가 포함되는지 평가. 청크 크기, 중첩 길이, 임베딩 모델, 리랭커를 한 요소씩 바꿔 결과를 비교.

상위 3개 검색 결과의 정답 근거 포함률 / 개선 전: 51.2%, 42/82 → 개선 후: 76.8%, 63/82

질의와 문서의 표현 차이, 유사 문서 간 구분 문제를 실패 원인으로 확인. 쿼리 확장과 교내 문서에 맞춘 리랭커 추가 학습을 적용한 뒤 동일 QA셋에서 재평가.

검색 점수가 기준에 못 미치면 질의를 다시 작성해 한 차례 재검색. 최종 실패 시 답변 생성을 중단하고 공식 문서 링크와 추가 질문 조건을 안내하도록 구성. 단계별 검색 점수와 실패 유형, 변경 이력을 기록.

평가 범위: 교내 문서 기반 QA셋 82문항의 근거 검색. 최종 답변 정확도는 별도 평가 대상.

5.2. 코드비플랫 RAG 개선 인턴

2024.12 - 2025.02 / 로컬 서버의 기술문서 RAG 응답 지연 분석

단일 로컬 서버에 적용 가능한 RAG 구조와 프레임워크를 비교하고 LightRAG를 선정. 동일 서버에서 파이프라인을 구축해 응답 지연과 답변 품질을 비교. 결과와 적용 방안을 발표하고 기술 문서로 정리.

5.3. 장편 EPUB 번역 도구

2025.03 - 09 / 개인 개발 / Windows GUI

장편 번역 중 발생하는 문장 누락, JSON 오류, 호출 한도 초과를 처리. XHTML 텍스트 노드마다 고유 ID를 부여하고, 입력과 응답의 키가 일치할 때만 번역문을 반영하도록 구현.

청크별 결과를 저장해 중단 후 미완료 ID만 다시 처리. 반복 실패 시 청크를 나눠 재번역하고, HTTP 429 응답은 권장 대기 시간 이후 재호출. 사용자가 수정하는 공통 사전을 전체 장에 적용해 고유명사 표기를 통일.

EyEar 안경형 번역 기기