분류 전체보기 48

[스나이퍼팩토리] 카카오클라우드- CAPTCHA 프로젝트 핵심 개념 학습 회고

모놀리식에서 마이크로서비스로의 진화 과정1단계: 빠른 검증 (모놀리식)모든 기능을 하나의 애플리케이션에 통합빠른 개발과 배포로 아이디어 검증팀 규모가 작을 때 효율적2단계: 서비스 분리 (마이크로서비스)ML 모델 서비스 독립화각 서비스의 독립적 스케일링장애 격리와 기술 스택 다양화3단계: 운영 최적화서비스 간 통신 최적화장애 복구 및 폴백 전략모니터링과 관찰 가능성 확보서비스 경계 설계 원칙프론트엔드 위젯: 사용자 행동 수집 + UI 제공 백엔드 API: 비즈니스 로직 + 인증/인가 + 정책 관리 ML 서비스: 모델 추론 + 데이터 전처리 데이터베이스: 상태 관리 + 로깅 + 통계 프론트엔드 - 사용자 행동의 디지털 지문 수집인간 행동 패턴의 과학적 분석마이크로 모션 패턴:사람은 완벽한 직선을 그을 수 ..

카테고리 없음 2025.08.10

ocr NutriSnap 프로젝트 트러블슈팅

NutriSnap 프로젝트 트러블슈팅FastAPI와 React를 사용한 영양 정보 OCR 서비스 개발 중 마주한 문제들과 해결 과정을 정리했습니다. 1. FastAPI 서버 실행 오류 문제 상황PS C:\Users\PC2412\nutrisnap\ocr_api_ver\backend> uvicorn app.main:app --host 0.0.0.0 --reloadValueError: 'not' is not a valid parameter name원인 분석Pydantic 라이브러리에서 Python 예약어 'not'이 매개변수 이름으로 사용됨FastAPI의 OpenAPI 모델 정의에서 예약어 충돌 발생해결 방법# 1. 패키지 업데이트pip install --upgrade fastapi pydantic uvico..

카테고리 없음 2025.06.25

[스나이퍼팩토리] AIaaS 마스터 클래스 12주차 - OCR

오늘은 trOCR과 여러 OCR 모델의 결과를 결합하기 위해 투표 방식, 신뢰도 기반, 조건부 선택 앙상블 기법을 비교하고, 이진화 전처리(Binary, Otsu, Adaptive Thresholding)가 OCR 성능에 미치는 영향을 실습을 통해 이해해 보았다.실습 코드를 중심으로 배운 내용을 정리해 보도록 하겠다.[1] TrOCR우선 주요 개념을 정리해 보겠다.항목설명OCR (Optical Character Recognition)이미지 속 텍스트를 읽어 문자열로 변환하는 기술TrOCR (Transformer-based OCR)Microsoft가 만든 Transformer 기반 OCR 모델TrOCRProcessor이미지 전처리 및 텍스트 디코딩 처리기VisionEncoderDecoderModel이미지 ..

[스나이퍼팩토리] AIaaS 마스터 클래스 9주차 DAY - FastAPI

이번 주차에는 fastapi에 대해서 배웠다.배웠던 내용을 간추려서 예제코드들을 실행해보고 결과를 보면서 정리해보도록 하겠다.1. FastAPI 정의와 기본 예제FastAPI란? fastapi란 python 웹 프레임워크로, 빠르게 API를 만들 수 있고, 자동 검증 + 문서화 + 비동기 처리까지 지원하는 초고속 웹 서버이다. 이제 fastapi를 이용한 간단한 기본 예제들을 활용해 보면서 이해를 해보겠다. uvicorn이란?여기서 fastapi를 실행시키려면 uvicorn이 필요한데 uvicorn은 ASGI를 지원하는 비동기 Python 웹 서버로 FastAPI,starlette,Django ASGI 앱을 실행할 수 있다.쉽게 말하자면 FastAPI는 ASGI 앱인데 ASGI앱은 그 자체로 실행되는 ..

[스나이퍼팩토리] AIaaS 마스터 클래스 9주차 DAY 44 - 데이터 전처리

[1] 데이터 과학 수업 복습 - 전처리,시각화1-1) 데이터 전처리 1. 데이터 전처리란 무엇인가?데이터 전처리는 원시 데이터를 분석이나 머신러닝에 적합한 형태로 변환하는 과정이다.데이터 과학 프로젝트의 약 70~80% 시간이 여기에 쓰일 만큼, 분석의 성패를 좌우하는 단계라고 할 수 있다.2. 왜 전처리가 중요한가?모델 성능 향상: 정제된 데이터는 머신러닝 모델의 예측력을 높인다.정확한 분석: 결측치, 이상치, 중복 데이터는 분석 결과를 왜곡자원 효율성: 불필요한 변수를 제거하면 처리 시간과 비용이 줄어듦데이터 통합 가능성: 형식이 통일되면 시계열 결합 등 고급 분석이 쉬워짐3. 주요 전처리 단계 및 코드 3. 주요 전처리 단계 및 코드 1) 결측치(Missing Value) 처리누락된 값을 식별하고..

[스나이퍼팩토리] AIaaS 마스터 클래스 9주차 DAY 42 - python 심화

[1] python 심화 수업 복습 - 이터레이터와 제너레이터, 동시성과 병렬 처리4. 이터레이터와 제너레이터🔹 이터러블(Iterable)과 이터레이터(Iterator)이터러블: 리스트, 튜플, 문자열 등 반복 가능한 객체로 for 루프에서 사용 가능이터레이터: __iter__()와 __next__() 메서드를 가진 객체next() 함수로 다음 값을 순차적으로 가져옴🔹 제너레이터(Generator)제너레이터란 한 번에 모든 값을 메모리에 올리지 않고, 필요한 순간에 값을 하나씩 생성하는 객체이다. 일반 함수와 제너레이터 함수를 비교해 보면 일반 함수의 경우에는def get_numbers(): return [1, 2, 3] 이렇게 리스트로 전부 리턴하지만 제너레이터 함수는def gen_numbers()..

[스나이퍼팩토리] AIaaS 마스터 클래스 9주차 DAY 43 - numpy,pandas

[1] 수업 복습 - numpy,pandas 1) NumPy – 수치 계산의 핵심 도구🔹 NumPy란?Numerical Python의 줄임말빠른 과학/수치 연산을 위한 핵심 라이브러리C로 구현된 내부 구조로 성능이 매우 뛰어남Python 리스트보다 메모리 효율이 뛰어나고, 동일한 데이터 타입만 저장 가능🔹 주요 특징다차원 배열 객체(ndarray) 지원벡터화 연산: 전체 배열에 대해 반복문 없이 연산 가능브로드캐스팅(Broadcasting): 다른 크기의 배열 간 연산 허용조건식 필터링과 불리언 인덱싱: 조건에 맞는 값 추출 및 할당 용이행렬 곱(dot) vs 요소별 곱(*): 수학적 의미 차이 존재🔹 활용 분야데이터 분석머신러닝 전처리이미지 처리시뮬레이션 등 과학 계산 전반🔹numpy ndarr..

[스나이퍼팩토리] AIaaS 마스터 클래스 9주차 DAY 41 - python 심화

[1] python 심화 수업 복습 - 파일 입출력, 예외 처리, 함수형 프로그래밍 1. 파일 입출력 (File I/O)데이터 영속성: 프로그램 종료 후에도 정보 보존 가능대용량 데이터 처리: 메모리에 전부 못 담는 데이터 처리데이터 공유: 다른 프로그램, 사용자 간 공유설정 관리/로깅: 환경설정, 로그 기록 등에도 활용🔹 파일 열기와 닫기file = open('파일경로', '모드')# 작업 수행file.close()🔹 파일 열기 모드 요약'r'읽기'w'쓰기 (기존 내용 삭제)'a'추가 (기존 내용 유지)'b'바이너리 모드't'텍스트 모드 (기본값)'x'배타적 생성 (존재 시 오류)'+'읽기/쓰기 모두 가능🔹 경로절대 경로: 루트부터 지정상대 경로: 현재 디렉토리를 기준으로 지정🔹 파일 읽기rea..

[스나이퍼팩토리] AIaaS 마스터 클래스 9주차 DAY 40 - python 심화

[1] python 심화 수업 복습 - 함수, 모듈과 패키지, 클래스와 객체지향✅ 함수 ● 개념특정 작업을 수행하는 코드 블록코드 재사용과 모듈화를 통해 유지보수성을 높임● 매개변수와 인자용어설명매개변수(Parameter)함수 정의 시 사용하는 변수인자(Argument)함수 호출 시 전달하는 실제 값● 매개변수 유형필수 매개변수: 반드시 값을 전달해야 함기본값 매개변수: 기본값 지정 가능 (def func(x=10):)가변 매개변수:*args: 여러 개의 위치 인자를 튜플로 받음**kwargs: 키워드 인자를 딕셔너리로 받음● lambda 함수 (익명 함수)일반 함수와 람다 함수의 차이를 보면 # 일반 함수def square(x): return x ** 2# 람다 함수square_lambda = l..

[python 기초] 과제

1) 리스트 과제#리스트 과제#학생들의 이름과 점수 정보를 리스트로 관리하는 코드 구현list1 = []def add_student(list1): name = input("이름:") score = input("점수:") list_student = [name,score] list1.append(list_student) print(f"학생 이름과 점수가 추가되었습니다.")def delete_student(list1): name = input("이름:") for student in list1: if student[0] == name: list1.remove(student) print(f"{name} 학생 정보가 삭제되었습..