분류 전체보기 34

Stable Diffusion 이해하기

참고로 해당 글은 Stable Diffusion의 학습 방법보다는 이해하고 활용하는데 초점을 두고 정리한 글이다. Stable Diffusion?Stable Diffusion은  Stability AI, CompVis에 의해 연구된 이미지 생성 모델로 2022년 8월 공개되었다. diffusion(확산) model을 기본으로 하는데, diffusion model은 noise 추가와 역확산 과정을 거친다. 원래의 이미지에 노이즈를 추가하여 이미지는 랜덤하게 변화하고 이러한 노이즈가 포함된 이미지를 복원하는 역확산 과정을 통해 노이즈를 제거하고 원하는 이미지를 생성한다.또한, Stable Diffusion은 Latent diffusion model로 이미지의 잠재 공간인 latent space(고차원 데이터..

MindAR을 사용해서 Face Mask 씌우기

MindAR 이란?MindAR은 이미지 트랙킹과 페이스 트랙킹을 제공하는 웹 증강 현실 오픈소스 라이브러리이다. AFRAME (웹 기반의 가상 현실(AR) 프레임워크) 통합으로 시작하여 three.js와 직접적인 결합이 가능하다. 실습 내용공식 document에 나와 있는 웹캠 이미지 내에서 페이스 트랙킹을 하여 얼굴 영역 위에 3D 이미지를 씌우는 예시를 실습해 보았고, 예시와 다르게 마스크를 씌운 웹캠 이미지만 띄우도록 하였다. 이 실습 내용은 얼굴 표정을 나타내는 52개의 blendshape로 웹캠 이미지 내에서 얼굴을 감지하고 감지된 blendshape를 사용해 머리 부분에 아바타를 씌우는 것을 제어하는 것이다. blendshape이란 3D 모델에서 다양한 모델의 표정을 생성하기 위해서 사용하는 ..

Etc 2024.09.23

[Python] 타입 힌트 (Type hint)

본 글은 "클린 코드, 이제는 파이썬이다" 책을 참고하여 작성하였습니다. 동적 타입(dynamic typing) 검사는 코드를 실행하는 동안 변수 및 함수의 타입을 검사하여 유연적이고, 정적 타입(static typing) 검사는 코드 컴파일 단계에서 변수 및 함수의 타입을 검사하여 타입 오류를 미리 방지한다. Python은 동적 타입 언어로 변수, 파라미터, 반환값으 어떤 데이터 타입도 가능하며, 심지어 실행하는 도중에 데이터 타입이 변경될 수도 있다. 이러한 특성으로 인해, 버그를 방지하고자 파이썬에서 타입 힌트를 사용한다. 파이썬의 타입 힌트는 정적 타입을 선택적으로 제공한다. def my_function(number: int) -> str: if number == 1: return 'Number ..

Language/Python 2024.03.27

[EdgeSAM] 논문 리뷰

SAM의 경량화 모델인 EdgeSAM에 관한 논문을 리뷰해 보았다. Introduction 이미지 내 객체 영역을 추출하는 segmentation 모델인 SAM(segment anything model)의 한계점 중 하나는 segment를 수행하는 Encoder가 무겁다는 점이다. EdgeSAM은 SAM에 비해 파라미터 개수를 0.6%로 줄이고 데이터셋의 1% 만을 사용한 모델로 encoder의 속도가 빠르다. 이는 서비스에 적용하기에 더욱 적합한 모델임을 뜻하며, 기존 SAM에 비해 40배 빠르며 아이폰 14에서 실시간 제공이 가능하다고 한다. Method prompt-in-the-loop distillation EdgeSAM의 학습 방식인 prompt-in-the-loop distillation에 대..

논문 리뷰 2024.03.26

[Java] 조건에 따라 값 설정하기

Java에서 조건에 따라 값을 다르게 하고 싶을 때, if/else 문을 사용할 수 있다. 하지만, 한 줄로 실행하는 방법도 있다. if/else 문을 사용하면 다음과 같이 실행할 수 있다. int i = 2; if (i % 2 == 0) System.out.println(i +"는 짝수입니다."); else System.out.println(i +"는 홀수입니다."); 한 줄로 실행하는 방법은 다음과 같다. * 조건문 ? true일 경우 결과문 : false일 경우 결과문 int i = 2; System.out.println(i % 2 == 0 ? i + "는 짝수입니다." : i + "는 홀수입니다.");

Language/Java 2023.09.24

[Python] ValueError: unsupported pickle protocol: 5 에러

Python 프로젝트에서 pickle 라이브러리를 사용하였는데, ValueError: unsupported pickle protocol: 5 다음과 같은 에러가 발생하였다. pickle 프로토콜 5 버전은 Python 3.8 버전부터 사용 가능한데, 3.7 버전 환경에서 사용하여 에러가 발생하였다. 따라서 Python 버전을 3.8로 업그레이드 한 후 사용하니 에러가 발생하지 않았다. 3.8 이전 버전은 프로토콜 4 버전을 사용하여야 한다.

Etc/에러 개선 2023.06.18

[Git] LF, CRLF 호환 경고 메시지

Git branch push 시에 다음과 같은 경고 메시지가 발생하였다. warning: LF will be replaced by CRLF in .factorypath. The file will have its original line endings in your working directory LF는 줄 바꿈 문자, CRLF는 Windows용 줄 바꿈 문자로 LF가 CRLF로 변경될 것임을 경고하는 것이다. 플랫폼 간의 호환성을 위해 LF가 선호된다고 한다. 이를 위해 직업 디렉토리에서 CRLF를 사용하지 않도록 명령을 실행할 수도 있지만, 경고 메시지를 무시하고 푸시하여도 LF로 통합되며 이슈가 없었다. git config --global core.autocrlf input 다음 명령어를 사용하면 커..

Etc/Git 2023.06.18

[Maven] pom.xml 설정하기

Maven은 Apache에서 개발되었으며, Java의 종속성 관리 및 프로젝트 관리를 위한 도구이다. pom.xml은 Maven 프로젝트의 설정 파일로 Maven 프로젝트의 구조 종속성, 빌드 설정들을 할 수 있다. pom.xml로 Maven 설정하는 방법을 몇가지 정리하였다. 1. 종속성 관리: group Id, artifact Id, 버전 등 설정 {그룹id} {artifact id} {packaging 타입 (war, jar ..)} {프로젝트 버전} {프로젝트명} 2. 의존성 관리: dependencies 섹션 사용하여 의존성 설정 {설정할 의존성} 3. 빌드 설정: 프로젝트 빌드 설정, 대표적으로 plugin 설정을 함 org.apache.maven.plugins maven-compiler-pl..

카테고리 없음 2023.06.18

[Java] MongoClient 사용하기

1. dependency 추가 org.mongodb mongo-java-driver {환경에 맞는 버전 선택} 2. MongoDB 연결 설정 // MongoClientURI를 사용하여 MongoClient 생성 MongoClientURI clientURI = new MongoClientURI("mongodb://localhost:27017"); MongoClient mongoClient = new MongoClient(clientURI); ReplicaSet일 경우 // MongoClientURI를 사용하여 MongoClient 생성 MongoClientURI clientURI = new MongoClientURI("mongodb://host1:27017,host2:27017,host3:27017/?re..

Language/Java 2023.06.11

[Java] DateTimeFormatter 사용하기

Java에서 날짜값을 사용하는 방법에 대해 정리해보았다. // LocalDate 선언 LocalDate date = LocalDate.of(2023, 6, 11); // DateTimeFormatter 선언 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); // String 타입으로 포맷팅 String dateStr = date.format(formatter); // 결과 출력 System.out.println(dateStr); 다음과 같이 LocalDate로 선언하고, DateTimeFormatter를 선언하고 포맷팅하여 String 타입으로 변환할 수도 있다. 출력 결과 20230611 반복문을 사용하면 특정 기간을 출력할 ..

Language/Java 2023.06.11