https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf

 

'AI > Paper Analysis' 카테고리의 다른 글

LoRA Paper  (0) 2025.04.01
LIama 2 Paper Model  (0) 2025.04.01
LIama 1 Paper  (0) 2025.04.01

https://arxiv.org/abs/2106.09685

 

LoRA: Low-Rank Adaptation of Large Language Models

An important paradigm of natural language processing consists of large-scale pre-training on general domain data and adaptation to particular tasks or domains. As we pre-train larger models, full fine-tuning, which retrains all model parameters, becomes le

arxiv.org

 

'AI > Paper Analysis' 카테고리의 다른 글

ChatGPT-1 Paper  (0) 2025.04.02
LIama 2 Paper Model  (0) 2025.04.01
LIama 1 Paper  (0) 2025.04.01

https://arxiv.org/abs/2307.09288

 

Llama 2: Open Foundation and Fine-Tuned Chat Models

In this work, we develop and release Llama 2, a collection of pretrained and fine-tuned large language models (LLMs) ranging in scale from 7 billion to 70 billion parameters. Our fine-tuned LLMs, called Llama 2-Chat, are optimized for dialogue use cases. O

arxiv.org

 

'AI > Paper Analysis' 카테고리의 다른 글

ChatGPT-1 Paper  (0) 2025.04.02
LoRA Paper  (0) 2025.04.01
LIama 1 Paper  (0) 2025.04.01

https://arxiv.org/abs/2302.13971

 

LLaMA: Open and Efficient Foundation Language Models

We introduce LLaMA, a collection of foundation language models ranging from 7B to 65B parameters. We train our models on trillions of tokens, and show that it is possible to train state-of-the-art models using publicly available datasets exclusively, witho

arxiv.org

 

'AI > Paper Analysis' 카테고리의 다른 글

ChatGPT-1 Paper  (0) 2025.04.02
LoRA Paper  (0) 2025.04.01
LIama 2 Paper Model  (0) 2025.04.01

 

PaliGemma는 이미지와 텍스트를 동시에 입력받아 텍스트를 생성하는 경량의 비전-언어 모델(VLM)입니다. 이 모델은 PaLI-3에서 영감을 받아 SigLIP 비전 모델과 Gemma 언어 모델과 같은 오픈 소스 구성 요소를 기반으로 구축되었습니다.

Synced | AI Technology & Industry Review+6Home- Google Developers Blog+6캐글+6

PaliGemma의 아키텍처는 이미지 인코더와 텍스트 디코더로 구성되어 있습니다. 이미지 인코더는 SigLIP 모델을 활용하며, 텍스트 디코더는 Gemma 2B 모델을 기반으로 합니다. 이러한 결합을 통해 이미지와 텍스트 입력을 처리하여 다양한 비전-언어 과제에서 우수한 성능을 발휘합니다.

Home- Google Developers BlogHome- Google Developers Blog+1Medium+1Synced | AI Technology & Industry Review+1Medium+1

PaliGemma는 이미지 캡션 생성, 시각적 질문 응답, 객체 탐지 및 세분화 등 다양한 작업에 적용될 수 있습니다. 또한, 다국어를 지원하여 글로벌한 활용이 가능합니다.

허깅페이스

최근에는 PaliGemma 2라는 업데이트 버전이 출시되어, Gemma 2 모델의 기능을 통합하고 다양한 비전-언어 작업에서 최첨단 성능을 달성하고 있습니다.

캐글+2허깅페이스+2허깅페이스+2

 

 

PJMA 모델 학습, 평가, 배포 과정 정리

PJMA 모델을 학습시키고 평가한 후 배포까지 진행하면서 얻은 결과들을 정리해본다.


📌 모델 학습 과정

모델은 총 64 스텝 동안 학습을 진행했다. 학습이 진행될수록 **학습률(Learning Rate)**과 **손실값(Loss)**이 변하는데, 이를 통해 모델이 점점 더 최적화되고 있는지를 확인할 수 있다.

특히, 8 스텝마다 검증 데이터셋에 대한 예측 결과를 출력하는데, 이 과정을 통해 학습이 제대로 이루어지고 있는지를 직관적으로 파악할 수 있었다.

초기에는 예측 결과가 엉망이었다.

  • 감지해야 할 객체 수가 너무 많거나 너무 적은 경우가 발생했고,
  • 클래스가 잘못 감지되거나,
  • 객체를 구분하는 기호(예: 세미콜론 ;)가 빠지는 등의 오류가 있었다.

그러나 스텝이 증가하면서 모델이 점점 더 안정적인 예측을 수행하기 시작했고, 64 스텝이 끝났을 때는 거의 정답(Annotation)과 일치하는 수준으로 결과가 나왔다.

학습 시간은 T4 GPU 기준으로 몇 분 정도 소요되었으며, 하드웨어 성능이나 데이터셋 크기에 따라 달라질 수 있다.


📊 모델 평가 결과

학습이 완료된 후 검증 데이터셋에서 16개의 샘플을 테스트했다.

✅ 예측 정확도는 꽤 높았고, 단 한 번만 오답(5를 8로 잘못 인식)이 발생했다.
✅ **평균 정밀도(mAP)**는 0.9로, 높은 수준의 성능을 보였다.
✅ **혼동 행렬(Confusion Matrix)**을 확인해 본 결과, 대부분의 예측 값이 대각선에 위치하여 정확한 분류가 이루어졌음을 확인할 수 있었다.


🚀 모델 배포 및 테스트

학습된 모델을 저장한 후, 배포를 진행했다.

  1. 모델을 로컬 하드 드라이브에 저장
  2. Roboflow Universe에 업로드
    • 업로드 시 Polyma 3EB PT 224 타입을 선택
    • 완료되면 모델이 API를 통해 배포 가능한 상태가 됨

이후 Gradio 앱을 활용한 테스트를 진행했다.

  • 직접 손으로 숫자를 적고 사진을 업로드하여 모델이 이를 인식하는지 확인
  • 결과: 모든 숫자를 정확하게 감지

추가로, "개(dog)"를 감지할 수 있는지도 확인해 보았는데, 기존 학습 데이터셋에 포함되어 있었기 때문에 여전히 인식이 가능했다.
이는 PJMA 모델이 기존 CNN 기반 감지 모델과 달리, 새로운 데이터셋으로 미세 조정(Fine-Tuning)하더라도 기존의 객체 감지 능력을 유지할 수 있다는 점을 보여준다.


❗ 한계점 & 해결해야 할 문제

테스트 중 몇 가지 문제점도 발견되었다.

예를 들어, 단순한 숫자 감지는 잘 수행했지만, "5 + 3 = ?" 같은 수식 이미지는 제대로 인식하지 못했다.
이유를 분석해 보면,

  • 원래 학습 데이터셋에는 여러 개의 기호나 숫자가 동시에 있는 경우가 없었음
  • **데이터 증강(Data Augmentation)**을 활용하지 않았음

이런 요소들 때문에 모델이 복잡한 수식을 감지하는 데 어려움을 겪은 것으로 보인다.


📢 추가 실험과 발견

처음에는 숫자 인식이 아닌 다른 데이터셋(예: 포커 카드 데이터셋)을 사용해 보았으나, mAP가 0.25 이상 올라가지 않는 문제가 발생했다.

이유를 분석해 보면,
1️⃣ 이미지에 포함된 객체 수가 너무 많아 모델이 한꺼번에 너무 많은 바운딩 박스를 예측해야 했음.
2️⃣ 모델이 바운딩 박스를 특정한 순서로 예측해야 하는데, 순서가 다르면 오답으로 처리되었을 가능성.
3️⃣ Attention Layer만 미세 조정(Fine-Tuning)하는 것으로는 부족했을 수도 있음.
4️⃣ 모델이 너무 작아서 더 큰 모델을 학습해야 할 필요가 있음.

이 문제를 해결하기 위해서는 데이터셋을 정리하거나, 학습 방식을 조정할 필요가 있다.


🎯 결론 & 앞으로의 방향

PJMA 모델을 자동 데이터 라벨링에도 사용할 수 있을까?

테스트해 본 결과, 제로샷(Zero-Shot) 성능이 뛰어나지는 않았다.
예를 들어, 차량 감지 데이터셋에서는 mAP가 0점으로 나왔는데, 이는 사전 학습 데이터에 차량 관련 정보가 없었기 때문으로 보인다.

하지만,
✅ 트위터 게시글 이미지
✅ 열화상 강아지 데이터
✅ 안전 헬멧 감지
✅ 동전 감지

같은 특정 데이터셋에서는 50% 이상의 mAP를 기록하며 어느 정도 성능을 보였다.
즉, PJMA는 반드시 **미세 조정(Fine-Tuning)**이 필요한 모델이라는 점을 다시 한 번 확인할 수 있었다.

'AI > Computer Vision' 카테고리의 다른 글

체류 시간 분석  (0) 2025.03.24
YOLO-World: Real-Time, Zero-Shot Objeddt Detecdtion Explained  (0) 2025.03.24

 

실시간 영상 스트리밍에서 객체를 추적하고, 해당 객체가 특정 영역에 머무는 시간을 계산하는 방법과

특히, 정적 비디오 파일과 실시간 스트리밍의 차이를 강조하면서 실시간 영상 스트리밍에서 발생할 수 있는 문제를 해결하는 방법을 알아보자.

주요 내용:

  1. 정적 비디오 파일 처리 vs. 스트리밍 처리:
    • 정적 비디오 파일의 경우, 프레임률(FPS)이 일정하여, 단순히 프레임 수를 세고 FPS로 나누어 시간 계산을 할 수 있음. 하지만 스트리밍에서는 FPS가 일정하지 않기 때문에, 실시간으로 프레임을 처리하는 모델이 속도를 따라가지 못하면 문제가 발생할 수 있기도 함.
  2. 스트리밍에서의 문제점:
    • 실시간 스트리밍에서는 모델의 처리 속도보다 스트리밍의 FPS가 높을 수 있음. 이 경우, 모델이 프레임을 처리하는 속도가 스트리밍 속도보다 느리면, 프레임이 버퍼에 쌓여서 지연(latency)이 발생하고, 너무 많은 프레임이 쌓여 버퍼가 가득 차면 시스템이 멈추게 됨.
    • 이를 해결하려면 피드백 루프를 사용하여 모델의 처리 속도를 측정하고, 버퍼에 들어가는 프레임 수를 제한하는 방법을 사용해야함.
  3. 시간 계산 방법:
    • 실시간 스트리밍에서는 FPS 기반으로 시간을 계산하는 대신, 시스템 시간을 사용하여 객체가 특정 영역에 들어갈 때 시간을 기록하고, 각 프레임에서 그 시간을 빼서 체류 시간을 계산.
  4. 구현 방법:
    • FPS 기반 타이머: 비디오 파일에서 FPS가 일정하므로, 각 프레임의 번호를 세고 이를 FPS로 나누어 시간을 계산.
    • 시계 기반 타이머: 스트리밍에서는 각 객체가 영역에 들어갈 때 시스템 시간을 기록하고, 각 프레임에서 이 시간을 빼서 체류 시간을 계산.
  5. 프로젝트 설정 및 코드 작성:
    • 코드 구현 과정에서는 모델을 로드하고, 객체를 추적하여 결과를 화면에 표시합니다. 또한, 객체가 특정 영역에 들어왔을 때 그 객체의 시간을 계산하고 이를 화면에 표시하는 방법으로 처리.
    • 'supervision' 패키지와 'inference' 패키지를 사용하여 객체를 추적하고, 감지된 객체에 대해 라벨을 붙여 시각화.
  6. 영역 설정:
    • 사용자가 자신의 영역을 정의할 수 있도록 도와주는 도구를 제공하여, 특정 영역 내에서만 객체를 추적하고 해당 객체의 체류 시간을 계산.

 

실시간 비디오 스트리밍에서 객체 추적 및 시간 계산을 어떻게 효율적으로 처리할 수 있는지에 대해 확인해보자.

1. FPS 기반 타이머 (정적 비디오 파일 처리)

  • 정적 비디오 파일에서는 FPS(초당 프레임 수)를 기반으로 시간을 계산.
    각 프레임의 번호를 세고 FPS로 나누어 객체가 특정 구역에 머무는 시간을 측정. 이를 위해 supervision 패키지의 video info를 사용하여 FPS를 추출하고, 각 구역별로 타이머를 초기화.
  • 객체가 구역에 머무는 시간을 계산한 후, label annotator를 사용하여 결과를 화면에 표시.

2. 스트리밍 처리에서 FPS의 문제

  • 실시간 스트리밍에서는 FPS가 일정하지 않아서 FPS 기반 타이머를 사용할 수 없습니다. 영상 스트리밍에서는 프레임이 계속해서 들어오므로, FPS가 모델의 처리 속도보다 빠르면 지연(latency)이 발생. 이 문제를 해결하려면 피드백 루프를 추가해야 하며, 이를 통해 스트리밍 처리를 안정적으로 할 수 있음.

3. 스트리밍 처리 구현

  • 비디오 스트리밍을 처리하려면 정적 파일 대신 RTSP URL을 통해 실시간 스트리밍을 받아야 함. 이를 위해 get stream frame generator 함수를 사용하여 스트리밍에서 프레임을 받아 처리.
  • FPS 기반 타이머 대신, 시스템 시간을 사용하는 clock-based timer로 변경하여 실시간 스트리밍에서도 시간 계산을 할 수 있도록 함.

4. 스트리밍 테스트

  • RTSP 스트리밍을 실시간으로 테스트하려면 Docker와 같은 도구를 사용하여 비디오 파일을 로컬에서 RTSP 스트리밍으로 전환할 수 있음. VLC와 같은 소프트웨어를 통해 스트리밍이 잘 송출되는지 확인할 수 있다고 함.

5. 효율적인 스트리밍 처리 (Inference Pipeline 사용)

  • 스트리밍에서 발생하는 지연 문제를 해결하기 위해 Inference Pipeline을 사용.
    이 유틸리티는 여러 스레드를 사용하여 비디오 스트림을 효율적으로 처리하며, 프레임을 처리할 때마다 지정된 콜백 함수를 실행.
  • 이 방법을 사용하면 모델의 처리 속도가 스트리밍 FPS와 맞지 않더라도 안정적으로 스트리밍을 처리할 수 있음.

6. 코드 리팩토링

  • 기존의 코드를 리팩토링하여 Inference Pipeline을 활용한 비디오 스트리밍 처리로 전환하고. 이를 위해 CustomSync 클래스를 정의하고, on_prediction 메서드를 통해 각 프레임에 대해 추적 및 시간 계산을 처리.
  • 이 방식으로 여러 스레드를 활용하여 스트리밍을 처리하고, 지연을 최소화.

7. 중요 고려 사항

  • 카메라 설정: 카메라는 고정되어 있어야 하며, 줌 인/아웃이나 팬(회전)을 하면 구역이 정확하게 맞지 않게 되므로 카메라 각도를 잘 설정하는 것이 중요함.
  • 스트리밍 품질 문제: 실시간 스트리밍에서 발생하는 네트워크 불안정성이나 압축으로 인해 객체 감지의 품질이 떨어질 수 있기에. 이로 인해 객체 추적이 불안정해지고, 타이머가 리셋될 수 있음.
  • 테스트 환경: 모델을 실제 하드웨어와 환경에서 테스트하여 예상되는 조건에서 잘 작동하는지 확인하는 것이 중요함. 이를 통해 실제 운영 환경에서 모델이 객체를 정확하게 감지할 수 있도록 함.

8. 결론

  • 정적 비디오 파일 처리에서 실시간 스트리밍 처리로 전환하는 과정과, 스트리밍 처리에서 발생할 수 있는 지연 문제를 해결하는 방법을 확인해봤는데. Inference Pipeline을 활용하면 여러 스레드를 사용하여 효율적으로 스트리밍을 처리할 수 있으며, 이를 통해 안정적인 객체 추적과 시간 계산이 가능함.

'AI > Computer Vision' 카테고리의 다른 글

구글 PailGemma  (0) 2025.03.25
YOLO-World: Real-Time, Zero-Shot Objeddt Detecdtion Explained  (0) 2025.03.24

YOLO-World: 실시간 Zero-Shot 객체 탐지 모델

1. YOLO-World란?

YOLO-World는 Zero-Shot Object Detection 모델로, 별도의 데이터 학습 없이 다양한 객체를 실시간으로 탐지할 수 있음. 기존 객체 탐지 모델보다 20배 빠른 속도를 제공하며, 저가형 GPU(Nvidia T4)에서도 원활하게 동작함.


2. 기존 객체 탐지 모델과의 차이점

기존 객체 탐지 모델(Faster R-CNN, SSD, YOLO 등)은 사전에 학습된 데이터셋(예: COCO, 80개 클래스) 내에서만 탐지가 가능함. 새로운 객체를 탐지하려면 추가 데이터셋을 구축하고 학습해야 하는 단점이 있음.

이를 해결하기 위해 Zero-Shot Object Detection 모델이 등장했으며, YOLO-World는 기존 모델 대비 속도가 빠르고 정확도가 높은 특징을 가짐.

비교: Grounding DINO vs. YOLO-World

  • Grounding DINO: Zero-Shot 탐지가 가능하지만 속도가 느림 (이미지 1장당 1초)
  • YOLO-World: Grounding DINO와 동일한 정확도를 유지하면서 20배 빠른 속도 제공

3. YOLO-World 아키텍처 (Prompt-then-Detect 방식)

YOLO-World는 크게 3가지 주요 구성 요소로 이루어짐.

  1. YOLO Detector: 입력 이미지에서 멀티스케일 특징 추출
  2. CLIP Text Encoder: 입력된 텍스트(탐지할 객체 명)를 임베딩 벡터로 변환
  3. Cross-Modality Fusion Network: 이미지와 텍스트 특징을 결합하여 객체 탐지 수행

YOLO-World는 기존 Transformer 기반 탐지 모델과 달리 경량화된 CNN 백본을 사용하여 속도를 향상시킴. 또한 Prompt-then-Detect 방식을 도입하여 텍스트 임베딩을 한 번만 생성하고 재사용함으로써 실시간 탐지를 가능하게 함.


4. YOLO-World 사용법 (Google Colab에서 실행하기)

  1. Colab에서 GPU 설정 확인 (nvidia-smi 실행)
  2. 필요한 라이브러리 설치
    • roboflow-inference: YOLO-World 실행 패키지
    • supervision: 탐지 결과 필터링 및 시각화
  3. 모델 불러오기
    • YOLO-World는 S, M, L, X 4가지 크기로 제공되며, L 버전 사용 가능
  4. 객체 탐지를 위한 클래스 설정 (set_classes)
    • 예: "person, backpack, dog, eye, nose, ear, tongue"
    • CLIP 모델을 이용해 클래스 리스트를 임베딩 벡터로 변환
  5. 이미지에서 객체 탐지 실행 (infer)
    • 탐지 결과를 supervision을 활용해 시각화

5. 성능 향상을 위한 기법들

(1) 낮은 Confidence Threshold 설정

  • COCO 데이터셋 외의 객체를 탐지할 때 Confidence Threshold를 0.03까지 낮추면 더 많은 객체 탐지가 가능함.
  • 낮은 Confidence Threshold를 설정할 경우 탐지된 객체 수가 증가하지만, 중복 탐지 문제가 발생할 수 있음.

(2) 중복 탐지 문제 해결 (Non-Max Suppression, NMS)

  • 여러 개의 바운딩 박스가 하나의 객체를 나타내는 경우 NMS 기법을 사용하여 중복 탐지 제거
  • IOU(Intersection over Union) 임계값 설정 (예: 0.1)

6. 동영상에서 객체 탐지하기

YOLO-World는 이미지뿐만 아니라 실시간 비디오 스트림 처리에도 최적화됨.

  • Nvidia V100 GPU에서 최대 50FPS 성능 제공
  • Nvidia T4 GPU에서도 15FPS 유지 가능

(1) 특정 객체 탐지 실험 - "노란색 채워진 구멍" 탐지

  • 특정 객체를 탐지할 때 색상(Color), 위치(Position) 정보를 활용
  • "yellow filling"과 같은 프롬프트를 사용하여 색상을 기준으로 탐지 가능

(2) 불필요한 객체 필터링 (Relative Area Filtering)

  • 큰 객체가 탐지될 경우 객체 면적을 기준으로 필터링
  • 영상 해상도를 기준으로 객체 크기를 계산하여 일정 비율 이상인 경우 탐지 제외

7. 결론

YOLO-World는 Zero-Shot Object Detection을 실시간으로 수행할 수 있는 혁신적인 모델로, 기존 모델보다 빠르고 정확하며 유연한 탐지 기능을 제공함.

  • 사전 학습 없이 다양한 객체 탐지가 가능
  • 실시간 비디오 스트림 처리 최적화
  • CLIP 기반 텍스트 임베딩을 활용한 Prompt-then-Detect 방식
  • 낮은 Confidence Threshold 및 NMS 적용을 통한 탐지 성능 개선

💡 YOLO-World는 다양한 산업에서 즉시 적용 가능하며, 실시간 객체 탐지가 필요한 모든 분야에 활용될 수 있음!

'AI > Computer Vision' 카테고리의 다른 글

구글 PailGemma  (0) 2025.03.25
체류 시간 분석  (0) 2025.03.24

@Value("\${어쩌구저쩌구}")

'Program > JAVA' 카테고리의 다른 글

@TestInstance  (0) 2023.10.27

lsof -i :8080

 

kill {PID}

'연구개발 > Etc..' 카테고리의 다른 글

[Docker] 생성 및 실행  (0) 2018.07.04
운영체제 개론  (0) 2017.05.29
지표 관련 용어  (0) 2016.08.22
unity key  (0) 2016.05.07
RAID 1+0 과 0+1의 차이점  (0) 2011.07.11

config server

yml 설정

dev, beta, prod

 

spring cloud bus 사용 - mq 사용하면 편함

+ Recent posts