글 목록 35

BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models

Abstract Vision-and-language pre-training은 대규모 모델을 end-to-end로 학습시키는 방식 때문에 점점 더 비용이 많이 들고 있다. 이 논문에서는 BLIP-2라는 새로운 pre-traning 전략을 제시한다. BLIP-2는 미리 학습된 이미지 인코더와 llm을 frozen 시킨 채로 vision-language pre-training을 bootstrap 하는 방식이다. BLIP-2는 lightweight Querying Transformer를 사용하여 vision과 language 사이의 gap을 연결하며, 이 transformer는 두 단계로 pre-train 된다. 먼저 frozen 이미지 인코더를 활용해 vision-language representation l..

📑 논문 2025.04.06

[NeurIPS 2023] Visual Instruction Tuning

Abstract machine-generated instruction-following data를 이용해서 LLM을 isntruction tuning하는 방법은 새로운 작업에 대한 zero-shot 능력을 향상시키는 것으로 입증되었지만, multimodal 분야에서는 덜 연구되었다.  본 논문에서는 language only GPT-4를 사용해서 처음으로 mulltimodal language-image instruction-following data를 생성했다. 그렇게 생성된 데이터를 이용해 instruction tuning을 함으로써 비전 인코더와 LLM을 연결하여 일반적인 시각 및 언어 이해를 위해 end-to-end로 훈련된 large multimodal model인 LLaVA: Large Langu..

📑 논문 2025.03.23

Python3 | venv로 가상환경을 관리하자

원래 보통 conda를 이용해서 가상환경을 관리했는데, 최근 사용하는 서버에서 자꾸 conda 환경이 충돌나는건지 독립된 환경 관리가 안 되는것을 파악해서 venv로 넘어갔다ㅎㅎ 나 같은 경우는 python3만 사용하기 때문에 더 복잡한 가상환경 툴은 필요 없을 것 같았다.venv의 최대 장점은 아래와 같다.별도의 설치가 필요 없으며, 가볍다.사용법도 단순하다.관리가 쉽다.가상환경 생성python -m venv [가상환경이름]위의 명령어를 통해서 간단하게 가상환경을 만들 수 있다. 이러면 설치된 파이썬의 버전을 갖고 있는 가상환경이 생긴다. 이러면 현재 위치에서 [가상환경이름] 폴더가 생긴다. (보통은 가상환경을 만들어서 사용하는 프로젝트 폴더에 많이 만든다.) 가상환경 활성화source [가상환경이름]..

🍑 잡지식 2023.11.07

Arxiv | 아카이빙을 해보자

아카이빙이란 것을 하게 되었다! 여기에서의 아카이빙은 arxiv.org에 업로드 하는 것을 의미하는데 이걸 처음해보니까 이것도 쉽지 않아서 정리라도 해보려고 한다.. 라이센스...? 일단 회원가입하고 arxiv에 submission을 하려고 하면 가장 먼저 라이센스 항목에서 이렇게 6가지 항목이 뜨는데 뭘 해야할지 막막하다.. 상업적 사용 허용 / 재사용자는 작성자에게 저작자 표시가 제공되는 한 모든 매체나 형식의 자료를 배포, 리믹스, 각색 및 구축할 수 있음 상업적 사용 허용 / 재사용자는 작성자에게 저작자 표시가 제공되는 한 모든 매체나 형식의 자료를 배포, 리믹스, 각색 및 구축할 수 있음. 해당 자료를 리믹스, 개조 또는 기반으로 제작하는 경우 동일한 조건에 따라 수정된 자료에 대한 라이센스를 ..

🍑 잡지식 2023.10.06

논문 | 2023년 7월~8월 읽은 논문 정리

DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation 적은 양의 이미지 (5장-6장) 를 가지고 모델을 파인튜닝해서 개인을 위한 Text-to-Image Diffusion Model을 만들 수 있다! 'sks'와 같은 vocab에 없을 것 같은 특이한 단어 (identifier)를 객체 앞에 넣어서 같이 학습한다. (위의 사진에서 "A [V] dog" 부분의 [V]가 결국 identifier 같은 느낌 Prior도 학습해서 원래 개의 특성도 학습하면서 [V] dog 이라는 특정 개만의 특성도 학습 FABRIC: Personalizing Diffusion Models with Iterative Feedback..

📑 논문 2023.09.01

논문 | 2023년 7월 첫째 주 읽은 논문 정리

ㅎㅎ 6월을 건너뛰고 벌써 7월이라니.. Training Diffusion Models with Reinforcement Learning Diffusion model을 강화학습 관점에서 바라봄 reward-weighted likelihood 방식보다 효과적이라고 주장 Diffusion model은 likelihood를 maximize하도록 학습이 되는데, 실제로 디퓨전 모델 자체는 그런 용도로 쓰이지 않음. Diffusion model의 likelihood를 계산하는 것은 intractable -> 전체 denoising 과정에서의 likelihood 대신 denoising의 각 step에서의 정확한 likelihood를 이용 VLM 모델을 이용해서 사람의 feedback이 필요한 labeling을 대체..

📑 논문 2023.07.05

C | 변수의 할당 위치 (동적할당)

C언어 거의 하지도 않는데 조교 업무 때문에 C언어를 계속 보고 검색하다 보니까 확실히 파이썬과는 다른 재미가 있는 것 같다ㅎㅎ 새내기 때 지금 교수님 같은 분한테 수업을 들었다면 C언어를 지금보다 조금 더 잘하지 않을까 싶은 생각이 들 정도로 교수님도 열정적이시고 그 만큼 학생분들의 질문도 어렵다......ㅎㅎ char *getPI(void){ char PI[20]; strcpy(PI, "3.141592653589"); return PI; } int main(void){ char *pistr; pistr = getPI(); printf("%s\n", pistr); return 0; } 짠! 위의 코드에서는 어떤 문제가 있을까? 위의 코드르 실행해보면 쓰레기값이 출력될 것이다. 왜 그럴까? 바로 [cod..

C | array-to-pointer conversion of function parameter type adjustment (배열과 포인터)

조교 업무를 하다가 처음 알게 된 사실이 있다! C언어에서 일반적으로 배열과 포인터는 동일하다고 설명하고, 나도 지금까지 그냥 배열과 포인터가 동일하다고만 생각하고 있었다. 하지만 배열은 배열이고 포인터는 포인터라는 것..! #include #include #include void fff(int array[]); int main() { int data[5] = { 0, 1, 2, 3, 4 }; printf("%d %d\n", sizeof(data), sizeof(data[0])); fff(data); printf("\n\n"); return 0; } void fff(int array[]) { int temp; int num = sizeof(array) / sizeof(array[0]); printf("%..

논문 | Reducing Domain Gap by Reducing Style Bias (SagNet)

오랜만에 읽은 논문ㅎㅎ.... 꾸준히 읽어야 하는데 논문 읽는 속도가 느리다보니 급한 일 생기면 그 일을 해결하느라 논문을 못 읽는 것 같다. 그래도 꾸준히 읽다보면 언젠간 논문 읽는 속도가 늘지 않을까....ㅎ... 컨셉 이번에 읽은 논문은 SagNet이라는 모델을 제시한 논문으로 AdaIN을 잘 활용한 논문이다. CNN에는 style에 대해 강한 bias가 존재하기 때문에 Domain Shift에 취약한데 content와 style을 분리해서 Domain Generalization 능력을 올리는 논문이다. content module과 style module을 두고, content와 style을 각각 학습하도록 하는 느낌 Style-Agnostic Networks 모델의 구조는 위와 같이 구성되어 있다..

📑 논문 2023.06.05

C | Call by value와 Call by reference

낯선 듯 친숙한 call by value와 call by reference! 사실 코딩을 배웠다 하면 누구든 한 번은 call by value나 call by reference를 들어봤을 것이다. 요새 하도 파이썬만 봐서 C언어를 거의 까먹는 느낌이라 한 번 정리해보려고 한다! C언어 조교를 같이 하고 있는데 곧 포인터 진도를 나갈 것 같아서 얼른 다시 봐야할 것 같다..ㅎ.. 사실은 이것도 까먹어서 다시 검색해보고 정리하는 중이다...ㅎ 포인터 call by value와 call by reference를 정리하기 전에 [yellow]"포인터"[/yellow] 개념을 알아야한다. C언어에서 변수를 선언할 때 보통 [code] int a = 0; [/code] 이런식으로 작성하는데, 포인터 변수를 선언하기..