AI

[AI] Recognize Anything 사용해보기1

dud9902 2025. 1. 9. 23:04

Recognize Anything이란?

이미지 안에 있는 거의 모든 대상을 인식하고 태그(Tag)할 수 있도록 설계된, 일종의 범용 시각 인식(Visual Recognition) 모델이다.

 

Recognize Anything 테스트 과정

 

1. inference_ram_plus.py 예제코드를 가져온다.

https://github.com/xinyu1205/recognize-anything

 

GitHub - xinyu1205/recognize-anything: Open-source and strong foundation image recognition models.

Open-source and strong foundation image recognition models. - xinyu1205/recognize-anything

github.com

'''
 * The Recognize Anything Plus Model (RAM++)
 * Written by Xinyu Huang
'''
import argparse
import numpy as np
import random

import torch

from PIL import Image
from ram.models import ram_plus
from ram import inference_ram as inference
from ram import get_transform


parser = argparse.ArgumentParser(
    description='Tag2Text inferece for tagging and captioning')
parser.add_argument('--image',
                    metavar='DIR',
                    help='path to dataset',
                    default='images/demo/demo1.jpg')
parser.add_argument('--pretrained',
                    metavar='DIR',
                    help='path to pretrained model',
                    default='pretrained/ram_plus_swin_large_14m.pth')
parser.add_argument('--image-size',
                    default=384,
                    type=int,
                    metavar='N',
                    help='input image size (default: 448)')


if __name__ == "__main__":

    args = parser.parse_args()

    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')

    transform = get_transform(image_size=args.image_size)

    #######load model
    model = ram_plus(pretrained=args.pretrained,
                             image_size=args.image_size,
                             vit='swin_l')
    model.eval()

    model = model.to(device)

    image = transform(Image.open(args.image)).unsqueeze(0).to(device)

    res = inference(image, model)
    print("Image Tags: ", res[0])
    print("图像标签: ", res[1])

 

2. git을 설치해준다.

install git

 

3. Recognize Anything 라이브러리를 설치해준다.

pip install git+https://github.com/xinyu1205/recognize-anything.git

 

4. model을 다운받는다.

https://huggingface.co/xinyu1205/recognize-anything-plus-model/resolve/main/ram_plus_swin_large_14m.pth

 

5. 완성 코드

샘플 이미지도 깃허브에서 다운받아서 사용했다.

테스트 사진

"""
 * The Recognize Anything Plus Model (RAM++)
 * Written by Xinyu Huang
"""

# STEP 1 : import modules
import numpy as np
import random
import torch
from PIL import Image
from ram.models import ram_plus
from ram import inference_ram as inference
from ram import get_transform

# STEP 2: create inference object
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model_path = "ram_plus_swin_large_14m.pth"
model = ram_plus(pretrained=model_path, 
                            image_size=384, 
                            vit="swin_l")
model.eval()
model = model.to(device)

# STEP 3: Load data
image_path = "demo1.jpg"
transform = get_transform(image_size=384)
image = transform(Image.open(image_path)).unsqueeze(0).to(device)

# STEP 4: inference
res = inference(image, model)

# STEP 5: post processing
print("Image Tags: ", res[0])