← 목록으로
복사되었습니다

Jev 1.14 이미지 입력으로 영상 속 가려지지 않은 API 키 찾기: Jev vs OpenAI Decision API vs OCR

· 약 9분
#jev #typesafe #openai #decision-api #image-input #youtube
Jev 1.14 에 새로 생긴 이미지 입력으로 숨은그림찾기를 해 보고, 같은 방법으로 영상 속에서 mask 가 빠져 API 키가 보이는 프레임을 Jev, OpenAI Decision API, 글자 인식(OCR) 세 가지로 찾아본 영상이다. 이 글에는 Playground 에서 그림을 올려 묻는 순서와 그대로 붙여 쓸 수 있는 State, Questions, 그리고 세 방법의 비교 조건과 결과를 정리했다.

핵심 요약

  • Jev 1.14 부터 질문에 그림을 넣을 수 있다. 10월 14일 발표된 버전이고 아직 실험 기능이다. 닭 사이에 고양이를 숨긴 그림은 "고양이가 있나"에 0.96, 닭만 있는 그림은 0.03 이 나왔다.
  • 새 질문 타입 box 는 위치를 상자로 돌려준다. 답은 그림 너비, 높이에 대한 비율로 위, 아래, 왼쪽, 오른쪽 네 값이다. 고양이 그림에서는 top 0.47, bottom 0.65, left 0.67, right 0.78 이었다.
  • Playground 에서는 State 에 <파일 이름> 을 꺾쇠로 넣어야 그림이 이어진다. Click to upload assets 로 올린 파일 이름과 꺾쇠 안 이름이 같아야 한다.
  • mask 가 한 프레임만 늦게 꺼져도 키는 1/30초 동안 보인다. 재생하며 눈으로는 놓치기 쉽지만, 그 프레임에서 멈추면 키를 다 읽을 수 있다. 테스트 영상에는 mask 를 다 넣었는데도 이런 프레임이 10개 있었다.
  • 같은 2,506프레임에서 10개를 다 찾은 것은 Jev 하나였고, 가장 빨랐다. 잘못 잡은 프레임은 세 방법 모두 0개였다.
  • OCR 과 OpenAI 는 다시 돌려도 찾는 개수가 그대로였다. 같은 프레임을 매번 같은 답으로 판단해서, 여러 번 돌린다고 놓친 프레임이 채워지지 않았다.
방법 걸린 시간 찾은 개수 (10개 중) 비용 잘못 잡은 프레임
Jev 40초 10개 0.42달러 0개
OpenAI Decision API 1분 11초 9개 0.44달러 0개
글자 인식 (OCR) 1분 19초 7개 무료 0개

비용은 영상 한 편 기준으로 Jev 와 OpenAI 모두 1달러가 안 됐다. 영상을 올리기 전에 가려지지 않은 키를 찾는 검사로는 Jev 가 가장 빠르고 빠짐없이 찾았다.

Playground 에 바로 붙일 내용은 Playground 치트시트로, 비교 조건은 세 방법 비교로.


Playground 치트시트

TypeSafe 콘솔의 Playground 에서 코드 없이 그림을 올려 Jev 에게 물어볼 수 있다. 영상에서 한 순서 그대로다.

순서 할 것 보이는 것
1 아래 Click to upload assets 버튼으로 그림을 올린다 아래 줄에 <cat-a-1568> 처럼 파일 이름 칩이 생긴다
2 State 에 올린 파일 이름을 꺾쇠로 감싸 넣는다 "frame": "<cat-a-1568>" 의 이름 앞에 그림 아이콘이 붙는다
3 Questions 에 질문을 쓴다 오른쪽 Response 에 질문 이름과 타입(Noul, Box)이 뜬다
4 Run 을 누른다 Noul 은 확률(고양이 있는 그림 96%, 없는 그림 5%), Box 는 상자를 그린 그림과 네 값

State

꺾쇠 안의 이름은 올린 파일 이름과 같아야 한다. 다르면 그림이 연결되지 않는다.

{
  "frame": "<cat-a-1568>"
}

Questions

영상 화면에 나온 질문 두 개다. noul 은 예/아니오 질문에 "예"일 확률을 돌려주는 타입이고, box 는 1.14 에서 새로 생긴 위치 찾기 타입이다. 질문 안의 `frame` 은 State 의 키를 가리킨다.

{
  "Cat": {
    "type": "noul",
    "instructions": "Is there a cat anywhere in `frame`?",
    "criteria": {
      "true": "",
      "false": ""
    }
  },
  "Where": {
    "type": "box",
    "instructions": "the cat in `frame`"
  }
}

box 답 읽는 법

{
  "top": 0.47,
  "bottom": 0.65,
  "left": 0.67,
  "right": 0.78
}

네 값 모두 그림 크기에 대한 비율이다. 1920x1080 그림이라면 상자는 가로 0.67 × 1920 = 1,286px 에서 0.78 × 1920 = 1,498px, 세로 0.47 × 1080 = 508px 에서 0.65 × 1080 = 702px 이다. 타입마다 자세한 설명은 공식 문서의 Images, Noul, Box 에 있다.


영상 줄거리, 짧게

Jev 는 if 문처럼 쓰는 모델

Jev 는 TypeSafe 가 만든 모델이다. 질문하면 글로 답하지 않고 Yes, No 같은 정해진 형태로 답하고, 그 답의 확률을 같이 준다. 그래서 코드에서 if 문처럼 쓸 수 있다. 대화하는 모델은 아니다. Jev 자체는 지난 영상에서 다뤘다.

10월 14일 Jev 1.14 가 나오면서 질문에 그림도 넣을 수 있게 됐다. 아직 실험 기능이지만, 마침 영상 작업에 필요한 일이 있어서 써 봤다.

숨은그림찾기

닭이 잔뜩 있는 그림 두 장을 만들었다. 한 장에는 고양이 한 마리를 숨겼고, 다른 한 장에는 닭만 있다. 두 장에 "이 안에 고양이가 있나"를 물으니 고양이가 숨은 그림은 0.96, 닭만 있는 그림은 0.03 이 나왔다.

box 타입으로 "고양이가 어디 있나"를 물으면 위치를 상자로 짚어 준다. 사람도 한참 찾아야 하는 크기의 고양이를 정확히 감쌌다.

Playground 에서 해 보기

TypeSafe Playground. State 에 frame 키로 <cat-a-1568> 을 넣었고, Questions 에 noul 타입 Cat 과 box 타입 Where 가 있다. 아래 줄에 올린 그림 칩이 보인다

Playground 아래의 Click to upload assets 버튼으로 그림을 올리고, State 에 그 파일 이름을 꺾쇠로 감싸 넣는다. 영상에서는 frame 에 <cat-a-1568> 이라고 썼다. 질문을 쓰고 Run 을 누르면 고양이가 있는 그림은 96%, 없는 그림은 5% 가 나온다.

box 답을 연 화면. 닭 사이 오른쪽 가운데의 고양이에 상자가 그려져 있고, 옆에 top 0.47, bottom 0.65, left 0.67, right 0.78 이 보인다

box 로 물은 답을 누르면 그림 위에 상자를 그려 보여 준다. 숫자만 보는 것보다 맞게 짚었는지 바로 알 수 있다.

프레임과 mask

이제 실제로 하려던 일이다. 영상에서 API 키가 보이는 프레임을 찾는다.

영상은 사진을 빠르게 넘기는 것이고, 그 사진 한 장이 프레임이다. 1초에 30프레임이면 1초 동안 사진 30장이 지나간다. 테스트한 영상은 1분 54초, 모두 3,419프레임이었다.

가상 터미널 아래 타임라인. mask 구간이 켜지는 지점에 In 점이 표시되어 있다

편집할 때 화면에 개인정보가 나오면 그 위에 mask 를 씌운다. mask 가 켜지는 지점이 In 점, 꺼지는 지점이 Out 점이다.

문제는 Out 점이 한 프레임 일찍 오거나 In 점이 한 프레임 늦을 때다. 그 1/30초 동안 키가 그대로 나온다. 재생하면서 보면 거의 안 보이지만, 그 프레임에 멈추면 키를 다 읽을 수 있다. 테스트 영상에는 mask 를 다 넣었는데도 API 키가 가려지지 않은 프레임이 10개 있었다. 이 10개를 누가 다 찾는지 보는 것이 영상의 문제다.

세 방법 비교

조건은 셋 모두 같다. 영상 끝의 아웃트로 30초를 뺀 같은 2,506프레임을 읽게 하고, 프레임마다 개인정보가 보이는지 판단해 보이면 "수정 필요", 아니면 통과로 나눈다.

순서 방법 결과
1 글자 인식 (OCR) 2,506프레임을 전부 글자로 읽어 1분 19초에 7개
2 OpenAI Decision API 1분 11초에 9개
3 Jev 40초에 10개 모두

결과 화면. Jev 40.0초 10개 0.42달러, OpenAI 1분 11초 9개 0.44달러, 글자 인식 1분 19초 7개 무료, 잘못 잡은 프레임은 셋 다 0개

10개를 다 찾은 것도, 가장 빨랐던 것도 Jev 였다. 셋 다 멀쩡한 프레임을 잘못 잡지는 않았다. 글자 인식과 OpenAI 는 여러 번 다시 돌려도 찾는 개수가 같아서, 돌리는 횟수로 놓친 프레임을 메울 수는 없었다. 비용은 영상 한 편에 Jev 0.42달러, OpenAI 0.44달러로 둘 다 1달러 아래였다. 앞으로 영상 작업에 Jev 와 Decision API 를 자주 쓰게 될 것 같다.


기록

항목 내용
영상 4분 30초
숨은그림찾기 고양이 있는 그림 0.96, 없는 그림 0.03 (Playground 에서는 96%, 5%)
box 답 top 0.47, bottom 0.65, left 0.67, right 0.78
테스트 영상 1분 54초, 30fps, 3,419프레임
비교 대상 아웃트로 30초를 뺀 2,506프레임, 그중 API 키가 가려지지 않은 프레임 10개
결과 Jev 40초 10개 0.42달러, OpenAI Decision API 1분 11초 9개 0.44달러, 글자 인식 1분 19초 7개 무료, 잘못 잡은 프레임 셋 다 0개
다시 돌리기 글자 인식, OpenAI 모두 여러 번 돌려도 찾은 개수가 같았다
링크 TypeSafe 공식 문서, TypeSafe 콘솔 (Playground), OpenAI Decision API 문서, Jev 를 다룬 지난 영상
출처 영상 나레이션과 화면, 측정 기록

댓글

아직 댓글이 없습니다. 첫 댓글을 남겨보세요!

0 / 1000