데보션앱 소개페이지 바로가기
로그인 선택

신고하기

CLOSE
신고사유 (대표 사유 1개)
상세내용 (선택)
0/200
  • 신고한 게시글은 더 이상 보이지 않습니다.
  • 이용약관과 운영정책에 따라 신고사유에 해당하는지 검토 후 조치됩니다.
  • 허위 신고인 경우, 신고자의 서비스 이용이 제한될 수 있으니 유의하시어 신중하게 신고해 주세요.
(이 회원이 작성한 모든 댓글과 커뮤니티 게시물이 보이지 않고, 알림도 오지 않습니다.)

미리보기

커뮤니티

      1,234

      badge 23.06.15

      글 등록

      카테고리를 선택해주세요.

      DEVOTEE를 활성화 시키면
      지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.

      버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.

      임시저장함에 저장되었습니다. 저장일시 : 2022.5.17 14:29:08

      임시저장함

      제목을 선택하시면 이어서 작성이 가능하며,
      최대 20건까지 저장합니다.
      컨텐츠 유형, 제목, 저장일시, 삭제로 이뤄진 임시저장 목록
      컨텐츠 유형 제목 저장일 삭제

      데보션 블로그 게재 요청

      CLOSE
      • *
      • *

      본인인증

      효율적인 데보션 서비스 이용 및
      고객님의 소중한 개인정보보호를 위해
      본인인증을 진행해주세요. 본인인증 미 진행 시 로그인이 제한됩니다.
      본인인증 실패

      본인인증 로그인에 실패하였습니다.
      회원이 아니시거나 본인인증 등록이
      완료되지 않은 사용자입니다.

      회원정보 연결

      AI가 바꾸는 스포츠 중계 서비스 혁신: AI 하이라이트/AI 캐스터

      happynamu 24.07.25
      5,803 11 1
      DEVOTEE 요약
      SK텔레콤의 '에이닷 골프' 서비스는 AI 기술을 이용해 골프 중계를 혁신적으로 변화시키고 있습니다. 특히 AI 하이라이트는 실시간 분석을 통해 주요 샷들을 자동으로 클립화하며, AI 캐스터는 경기 상황에 맞춘 유용한 정보를 자연스럽게 제공합니다. 시스템은 AWS EKS, Terraform, Helm 등 다양한 기술을 활용해 안정적이고 효과적인 서비스를 운영하고 있습니다.
      DEVOTEE 추천 블로그

      안녕하세요.

      골프를 좋아하시거나 스포츠 중계 서비스의 미래가 궁금하시다면 이번 포스팅이 아주 흥미로울 거에요.

      SK텔레콤 '에이닷 골프' 서비스는 AI 기술을 활용하여 골프 중계 서비스에 혁신적인 변화를 선도하고 있습니다.

      앞으로도 다양한 스포츠 분야에 AI 기술이 적용되어 사용자들에게 더 많은 새로운 경험을 제공할 것으로 기대됩니다.

      이번 포스팅에서는 '에이닷 골프'의 두 가지 주요 기능인 AI 하이라이트와 AI 캐스터 서비스에 대해 설명해드리려고 합니다.




      AI 하이라이트 서비스

      AI 하이라이트 기술은 실시간 중계 영상에서 AI가 선수 정보와 경기 상황 등을 실시간으로 분석하여 선수들의 모든 샷을 자동으로 클립으로 만들어 줍니다.

      또한, AI가 상황별로 중요한 순간들을 파악하여 선수별 하이라이트, 라운드 하이라이트, 우승 선수 하이라이트 등 다양한 형태의 AI 하이라이트 영상을 만들어 제공합니다.

      AI 하이라이트 생성 절차


      1. 샷 시작 지점 판단

        • 선수의 어드레스 자세와 선수 자막을 탐지하여 샷 시작 지점을 판단합니다.

      2. 샷 끝 지점 판단

        • 선수 얼굴 클로즈업, 선수 자막, 스코어보드, 중계패턴 및 화면전환 효과 등을 분석하여 샷의 끝 지점을 결정합니다.

          이로써 샷의 시작과 끝을 명확히 구분하여 샷 구간 정보를 생성합니다.

      3. 샷 단위 클립 생성

        • 선수 자막으로부터 선수 이름, 홀 번호, 홀 타수, 스코어, 이벤트 등 선수 및 경기 상황 정보를 추출하고, 경기 데이터와 샷 구간 정보를 결합하여 샷 단위 클립을 생성합니다.

          이를 통해 메타데이터에 샷의 상세한 정보를 추가한 클립이 만들어 집니다.

      4. 홀 단위 클립 생성

        • 선수별 홀별 샷들을 모아 홀 단위 클립을 생성합니다. 이는 선수별 스코어카드와 연동되어 제공됩니다.

      5. 샷의 중요도 평가

        • 샷 결과, 홀 스코어 등 데이터를 기반으로 샷의 중요도를 평가합니다.

      6. 하이라이트 생성

        • 샷 정보 및 중요도 평가를 기반으로 선수별, 라운드별, 이벤트별, 우승 선수 하이라이트를 생성합니다.

          이로써 상황별로 중요한 순간들만 모은 하이라이트 영상을 손쉽게 시청하실 수 있습니다.


      AWS 기반 AI 하이라이트 시스템

      시스템 부분에서는 현재 저희 기술 스택 중에 이슈가 있었던 것들 위주로 설명을 드리면서 왜 그런 선택을 하게 되었는지 설명드리려고 합니다.

      현재 AI 하이라이트 시스템의 모습으로 되기까지 몇 번의 큰 변화가 있었는데, 초기엔 GPU가 있는 on-premise 서버에서 몇 개의 python application으로 시작했습니다.

      zookeeper를 이용해서 config를 관리하고 DB는 sqlite를 썼습니다.

      하지만 PoC(Proof of Concept)로 진행하다가 전체 시즌을 안정적으로 운영하기 위해 AWS로 옮기기로 결정하면서 기존 스택을 AWS SaaS로 변경했습니다.

      1. AWS EKS

      AI 하이라이트 시스템에는 여러 엔진 및 모듈들이 있는데 모두 Docker 이미지로 만들어져서 AWS EKS 위에서 동작하고 있습니다.

      처음 야구 종목으로 시작을 했었는데 점차 골프, 농구 등으로 종목이 확대가 되어감에 따라 스크립트로만 배포 및 운영에 한계를 느끼고,

      컨테이너 오케스트레이션 툴인 Kubernetes를 적용하기로 결정해서 현재의 모습으로 구성되어 있습니다.

      k8s를 처음 접하다보니, 개발자들 모두 초기 진입에 어려움이 있었지만 안정적인 운영을 위해 필수적인 선택이었습니다.

      엔진들의 특징에 따라 cpu intensive, gpu, general purpose 등 몇 가지로 나눌 수 있는데,

      이걸 eks nodegroup으로 분리하고 label을 달아서 node selector를 통해서 엔진 특징에 맞는 node에 배포되도록 구성했습니다.

      여기서 channelID는 동시간에 방송되는 방송을 구분하기 위함입니다. 또, sport label은 golf, baseball, basketball 등으로 구분합니다.

      # Source: golf-aihighlight/templates/deployment.yaml
      apiVersion: apps/v1
      kind: Deployment
         ...
           nodeSelector:
             type: "gpu"
             sports: 'golf'
             channelID: '1'

      2. Scheduler

      AI 하이라이트 시스템의 특성 상 방송 중계 스트림(HLS)을 입력받아 처리하다 보니, 클라우드 비용 절감을 위해 방송 중계 시간에만 클라우드 시스템을 사용하는 것이 필요하였습니다.

      AWS 자체에서 Instance Schduler 라는 솔루션을 제공하고 있지만, 종목별로 방송 중계 스케줄을 제공하는 CP사의 API와 연동하기 위해 자체적으로 Scheduler를 개발하였습니다.

      경기 1시간 전에 필요 리소스를 생성하고, 방송이 종료되고 경기 하이라이트를 여러 서비스에 배포하고 나면 리소스를 삭제하여 비용을 최적화 하였습니다.

      Scheduler는 k8s의 cronjob으로 배포하여 매일 오전에 1번 실행하면서 스케줄에 따라 동작하게 되어 있습니다.

      ❯ k get cronjob
      NAME                        SCHEDULE              SUSPEND   ACTIVE   LAST SCHEDULE   AGE
      prd-golf-scheduler          0 22 * * *            False     0        3h10m           7d15h

      3. Terrafom

      Terraform 이란? HashiCorp에서 만든 오픈 소스 "코드형 인프라" 도구

      초기에는 CLI를 통해 운영자가 AWS 리소스를 생성/삭제를 진행하다 보니 휴먼에러가 있고 나중에 어떤 목적으로 누가 생성했는지 알수 없는 리소스가 남아 있는 경우가 자주 있었습니다.

      또한 dev, stg, prd의 환경에 따라 중복되는 리소스 생성작업을 해야됐는데, 그에 따른 피로도가 너무 높았습니다.

      결국에는 IaCInfra as a Code가 필수적인 선택이었는데 AWS의 CloudFormation도 선택지에 있었지만 CSP에 종속되고 싶지 않았고

      회사가 MS Azure와 협업을 강조하던 시기였기 때문에 언제라도 Azure로 넘어갈수 있도록 Terraform을 선택하였습니다.(하지만 3년째 AWS만 쓰는중..)

      다만 최근에는 Hashi Corp의 유료화 정책에 따른 리스크가 있긴합니다.

      앞서 설명했던 Scheduler에서 Terraform으로 AWS 리소스인 EKS nodegroup을 생성하고 삭제합니다.

      4. Helm

      Helm 이란? Kubernetes 패키지 매니저.

      EKS 위에 엔진 및 모듈을 배포하기 위해서는 많은 양의 yaml 파일을 관리해야 했는데, 코드가 중복해서 존재할 뿐만 아니라 여러 곳을 반복해서 수정해야 하는 불필요한 작업을 해야했습니다.

      스크립트로 yaml을 적용하고 또 삭제하다보니 역시 휴먼에러가 발목을 잡아서 결국에 Helm을 선택했습니다.

      Helm은 기본적으로 template이 있고 config를 override해서 kubernetes의 리소스를 생성하는 방식인데,

      이를 활용해서 적은양의 코드로 심플하게 scheduler에서 엔진을 배포하고 있습니다.

      아래는 저희 전체 시스템의 helm hierarchy 입니다.

      ❯ tree
      .
      ├── Chart.yaml
      ├── README.md
      ├── templates
      │   ├── _helpers.tpl
      │   ├── configmap.yaml
      │   ├── deployment.yaml
      │   └── secret.yaml
      └── values.yaml

      5. EFS

      하이라이트 시스템은 각 엔진 별로 프레임 샘플링 주기도 다르고, 프레임 내에서 분석하는 위치도 다르기 때문에

      모든 파일을 frame으로 나눠놓는 것도 비효율적이었고, Raw 데이터인 ts file을 엔진 별로 언제나 빠르게 접근가능해야 했습니다.

      또 에이닷 앱에 클립으로 노출할 때 필요한 썸네일 및 mp4 영상 파일을 실시간으로 저장해야 했습니다.

      다른 Storage인 S3나 EBS를 사용할수도 있었지만, 임시적으로 쓰지 않고 시즌 전체 데이터를 저장하면서도 실시간 읽기쓰기 성능이 나오는 스토리지가 필요해서 EFS를 선택하게 되었습니다.


      또한, 클립의 주요 부분을 세로 형태의 숏폼으로 만들어주는 숏폼 시스템도 같은 팀에서 개발해서 운영중인데,

      이 시스템과의 파일 연동은 VPC Peering을 통해서 서로 다른 VPC끼리 EFS를 공유해서 attach해서 파일을 공유하고 있습니다.


      다만 단점으로는 다른 스토리지에 비해서 비용이 비싼데, lifecycle management를 활용해서 비용을 절감하려고 노력하고 있습니다.

      스포츠 하이라이트의 특성 상 그 생명이 굉장히 짧아서 1주일만 지나도 찾아보는 경우가 거의 없기 때문에 IAinfrequent access나 Archive로 Transition 하고 있습니다.

      - Lifecycle management
      Transition into Infrequent Access (IA): 7 day(s) since last access
      Transition into Archive: 30 day(s) since last access

      6. 클립 실시간 서빙

      초기 에이닷의 골프 클립은 기존 VOD 콘텐츠를 수작업으로 편성하는 시스템을 그대로 사용하였기에,

      클립이 AWS에서 생성되고 앱에 노출까지는 최소 30분 정도의 시간이 필수적으로 소요되었습니다.

      스포츠 하이라이트의 생명은 속도이기 때문에 저희는 이걸 개선하고자 실시간으로 서빙하는 파이프라인을 별도로 구축하였습니다.

      실시간 중계 영상으로부터 클립이 생성되어 AWS S3에 업로드되며, lambda에서 이걸 triggering 해서

      AWS MediaConvert로 영상을 복수의 모바일용 해상도로 트랜스코딩하고, AWS CloudFront으로 클립을 서빙하는 구조로 변경함으로써 생성 후 노출까지의 시간을 3분 이내로 단축시켰습니다.


      AI Caster 서비스

      AI 캐스터 서비스는 스포츠 전문가인 AI가 나와 함께 경기를 보면서 그때그때 유용한 정보들을 제공해주는 서비스 입니다.

      중계 상황에 맞춰 해당 선수의 스탯 정보나 통계 정보뿐 아니라

      경기 현장의 날씨, 골프 상식, 골프 뉴스, 실시간 AI 하이라이트 등의 다양하고 재미있는 콘텐츠를 마치 캐스터처럼 알려 준다는 의미로 'AI 캐스터' 라는 이름을 붙였습니다.

      AI 캐스터 서비스는 ChatGPT를 비롯한 LLM 기술과 AI 하이라이트에서 사용하는 OCR, Object Detection, Pattern Recognition 등의 여러가지 AI 엔진의 결과를 이용해서 만들어 집니다.

      어떤 기술들이 어떻게 활용되는지 구체적으로 살펴보도록 하겠습니다.


      AI Caster 서비스 구조

      AI 캐스터 서비스를 만들기 위해서는 해결해야 할 문제들이 있습니다.

      첫번째 문제는 '다양한 정보를 어떻게 캐스터가 말하는 것처럼 자연스럽게 제공할 것인가' 입니다.

      골프 중계를 보다 보면 '이 선수가 위기 상황에 얼마나 강한 선수지?', '이 거리의 퍼팅을 성공할 확률은 얼마나 될까?', '현장의 날씨는 괜찮은 건가?' 등의 추가 정보가 궁금할 때가 있습니다.

      이럴 때마다 우리는 인터넷을 열고 포털, 뉴스, 골프 협회 홈페이지 등에서 검색을 하게 됩니다. AI 캐스터는 이처럼 사람들이 궁금해 하는 다양한 정보를 자연스럽게 제공하는 역할을 해야 합니다.

      이를 위해 AI 캐스터 서비스에서는 실시간 경기 정보 뿐 아니라 여러가지 통계나 선수 스탯 정보, 뉴스와 날씨 정보까지 골프와 관련된 모든 것들을 수집하고 LLM 기술을 이용해 자연스러운 문장을 생성합니다.


      두번째 문제는 '그럼 이 정보들을 언제, 어떻게 사용자에게 잘 전달할 것인가'하는 문제입니다.

      아무리 유용한 정보라도 정확한 타이밍에 제공하지 않으면 의미가 없습니다.

      박현경 선수가 7미터 거리에서 퍼팅을 준비 중이라면 해당 거리에서 이번 시즌 퍼팅 성공률은 얼마였는지가 의미있는 정보일 것이고,

      장유빈 선수가 파5 홀에서 티샷을 준비 중이라면 장유빈 선수의 이번 시즌 파5홀 티샷 평균 비거리가 유용할 것입니다.

      마찬가지로 윤이나 선수의 세컨샷이 그린 근처 벙커에 빠졌다면 사람들은 윤이나 선수의 벙커 세이브율이 얼마나 되는지 궁금해할 것입니다.

      뉴스나 날씨, 골프 상식 등의 다양한 정보들도 그때그때 타이밍에 맞게 제공할 수 있어야 골프 중계를 보는 사람들에게 유용한 서비스가 될 수 있습니다.


      AI 캐스터 서비스에서는 이러한 문제들을 해결하기 위해 곳곳에 AI 기술을 활용하고 있습니다.

      자연스러운 문장을 만들기 위한 LLM 기술은 물론이고 중계 패턴 파악을 위한 Camera Pattern Recognition,

      화면의 내용을 인식하기 위한 OCR과 Object Detection 등 여러가지 AI 기술을 조합해서 자연스럽고 유용한 AI 캐스터 서비스가 만들어지고 있습니다.

      AI 캐스터 서비스를 제공하는 시스템의 구조는 아래 그림과 같습니다. 이제 하나하나 살펴보겠습니다.


      Casting Generator

      Casting Generator는 유용한 정보들을 취합하여 캐스터가 말하는 것과 같은 자연스러운 문장을 만드는 역할을 담당합니다.

      이를 위해 먼저 골프와 관련된 여러가지 정보들을 외부 시스템에서 받아 옵니다. 에이닷 서비스 중에는 사용자에게 상황에 맞는 뉴스를 제공해주는 뉴스 서비스가 있습니다.

      Casting Generator는 API를 통해 뉴스 서비스에서 골프와 관련된 뉴스만 주기적으로 가져오고 있습니다.

      경기가 벌어지는 골프 코스의 실시간 날씨도 에이닷의 날씨 API를 이용해 받아오고 있습니다.

      그리고 골프 상식에 해당하는 정보들은 골프 용어집, 협회의 룰북이나 관련된 공식 사이트에서 수집하여 데이터를 확보하고 있습니다.


      Casting Generator 에서 수집하는 데이터 중 가장 중요한 데이터는 선수 스탯과 실시간 경기 상황입니다.

      AI 캐스터 서비스에서는 경기 진행 상황에 맞춰 그에 맞는 정보를 제공하는 문장을 만들어야 합니다.

      선수가 샷을 치기 전에는 해당 샷을 칠 때 예상되는 상황에 대한 스탯을 제공하고 샷의 결과가 나온 뒤에는 샷의 결과에 맞는 정보를 제공하는 것이 필요합니다.


      예를 들어 보겠습니다.

      16번 파4 홀에서 윤이나 선수가 티샷을 준비하고 있습니다.

      이 경우 시청자에게 유익한 정보는 윤이나 선수의 드라이브 평균 비거리나 페어웨이 적중률일 것입니다.

      여기에 추가로 윤이나 선수가 이전 홀에서 어떤 성적을 기록했었는지, 현재 성적과 스코어는 어떤 상황인지를 알려주면 좋은 정보라 할 수 있습니다.

      윤이나 선수가 친 티샷이 아쉽게 그린 근처 벙커에 떨어졌습니다. 그렇다면 이 결과를 이야기 하면서 같이 제공하면 좋은 정보는 무엇 일까요?

      아마도 윤이나 선수의 벙커세이브율이나 리커버리율을 알려준다면 이 선수가 위기 상황에서 얼마나 강한지를 알려주는 정보가 될 것입니다.


      이런 식으로 수집한 데이터들은 결기 상황에 맞게 선정되어 AI 캐스터 서비스에서 제공하는 캐스팅 문장으로 만들어 집니다.

      다음은 올시즌 진행된 실제 경기에서 AI 캐스터가 상황에 맞게 생성한 캐스팅 문장들의 예제입니다.


      Casting Publisher

      골프는 다른 스포츠 경기와 다르게 선수들의 플레이가 여러 곳에서 동시 다발적으로 벌어지는 스포츠입니다.

      그러다 보니 골프 중계를 위해서는 많은 카메라와 인력이 투입되어야 합니다.

      또한 동시에 벌어지는 여러 상황들 중 시청자가 흥미를 가질 법한 장면들을 잘 선정해서 효과적으로 보여주는 것이 중요합니다.

      그래서 골프 중계는 편집이 매우 빠릅니다. 또한 어떤 경우에는 과거의 장면(1~2분 전에 발생한)을 현재 상황인 것처럼 보여주는 경우도 있습니다.

      Casting Publisher는 이러한 골프 중계 방송 특성에 맞춰 Casting Generator가 생성한 캐스팅 문장 중 현재 방송에 가장 잘 어울리는 문장을 선택해서 사용자에게 제공하는 역할을 담당합니다.


      Casting Publisher는 사용자와 함께 골프 중계 방송을 지켜봅니다. 중계 방송을 보면서 다양한 AI 기술들을 활용하여 중계 화면을 인식하고 지금 등장한 선수는 누구인지,

      이 선수가 공을 치려고 하는 장면인지, 공을 치고 나서 그 결과가 나온 시점인지 등을 파악합니다.

      Casting Publisher가 사용하는 AI 기술은 매우 다양하지만 그 중 가장 대표적인 것은 Object Detection과 OCR(Optical Character Recognition) 입니다.

      Object Detection은 화면상에 내가 목표로 하고 있는 물체(Object)가 등장했는지를 인식하는 기술입니다.

      Casting Publisher에서는 Object Detection을 이용해 선수가 등장했는지, 등장했다면 어떤 자세로 어느 위치에 얼마만큼의 크기로 나왔는지를 파악합니다.

      또한 경기 중간중간 나오는 스코어 보드나 화면 전환 그래픽 등을 인식하는데도 활용됩니다.

      OCR(Optical Character Recognition)은 이미지에 있는 글자나 숫자를 인식하는 기술입니다.

      Casting Publisher에서는 OCR을 이용해 중계 화면에서 나오고 있는 상황에 대해 파악하고 지금 상황에 적합한 문구는 어떤 것인지를 판단합니다.

      이 외에도 중계 패턴을 파악하거나 카메라 전환 시점을 확인하는 데에 여러 가지 AI 기술을 활용하고 있습니다.


      아래의 그림은 실제 경기에서 중계 화면에 맞춰 그에 적합한 AI 캐스팅을 제공하는 실제 서비스 모습입니다.


      화면에 장유빈 선수가 등장한 것을 인식하고 14번 홀 세 번째 타수를 치려고 한다는 것을 파악합니다.

      아직 공을 치기 전이기 때문에 그에 맞는 '샷 치기 전 AI 캐스팅 문구'를 사용자에게 제공합니다. 장유빈 선수가 퍼팅을 하고 공이 홀에 들어간 뒤 클로즈업 됩니다.

      그러면 Casting Publisher는 퍼팅의 마무리를 확인 한 뒤 '샷 치고난 후 AI 캐스팅 문구'를 제공하는 것입니다.


      이외에 뉴스나 골프 상식 등의 캐스팅 문구 전달도 이와 유사한 구조로 동작하고 있습니다.

      이처럼 유용한 캐스팅 문구의 생성은 Casting Generator가, 적절한 시점의 캐스팅 문구 전달은 Casting Publisher가 담당하면서 보다 생생한 'AI 캐스터 서비스'가 제공되고 있습니다.

      그러면 이제 Casting Generator에서는 어떤 방법으로 자연스러운 캐스팅 문구를 생성하고 있는지 좀 더 자세하게 알아보겠습니다.


      ChatGPT를 활용한 Casting Generator

      Casting Generator는 캐스팅 문구를 생성하기 위해 ChatGPT를 이용합니다.

      AI 캐스터 서비스에서는 그때그때 상황에 맞는 다양한 정보들이 적절하게 조합되어 캐스팅 문구가 만들어져야 하기 때문에 ChatGPT에 넘겨주는 프롬프트가 어떻게 구성되어야 하는지가 가장 중요합니다.

      ChatGPT는 주어진 정보들을 취합하고 그걸 요약하는 작업에서 가장 뛰어난 성능을 보여줄 수 있습니다.

      Casting Generator에서 사용하는 프롬프트는 이러한 ChatGPT의 강점을 잘 활용할 수 있도록 구조화 되어 있습니다.

      1. json 형식의 경기, 선수 데이터 활용하기

      {
          "name": "홍길동",
          "hole": 6,
          "shot": "티샷",
          "shot_count": 1,
          "state": {
              "current_ranking": 27,
              "green_in_regulation": {
                  "value": 72.5,
                  "unit": "percentage",
                  "rank": 5
              },
              "driver_distance": {
                  "value": 290,
                  "unit": "yards",
                  "rank": 15
              }
          },
          "information": {
              "previous_hole_score": -1,
              "start_hole": 1
          }
      }

      ChatGPT에 경기, 선수 데이터를 전달할 때 구조화된 json 형식을 사용하면 좀 더 정확한 상황 이해와 확실한 응답을 기대할 수 있습니다.

      Casting Generator에서는 위와 유사한 형식으로 json 데이터를 던져 주고 이 데이터를 바탕으로 ChatGPT가 다양한 문장을 만들도록 유도하는 형태의 프롬프트를 사용하고 있습니다.

      2. 원하는 응답 샘플을 보여주기

      샘플 1: 지난 홀에서 버디를 기록한 홍길동 선수의 6번홀 티샷입니다. 홍길동 선수는 현재 27위를 기록 중이며 드라이버 비거리가 290야드에 달하는 장타자입니다. 홍길동 선수의 티샷을 지켜보겠습니다.
      샘플 2: 홍길동 선수의 6번홀 첫번째 샷입니다. 드라이버 비거리 시즌 15위, 그린적중률 시즌 5위를 기록하고 있는 드라이버에 강력한 장점을 가지고 있는 선수의 티샷입니다.
      샘플 3: 6번홀 홍길동 선수의 티샷을 확인해 보겠습니다. 이전 홀에서는 버디를 기록했고 드라이버 비거리는 290야드에 달하는 선수입니다. 현재 순위는 27위로 이번 홀에서 얼마나 성적을 끌어올릴 수 있을지 지켜보겠습니다.

      우리가 원하는 캐스팅 문장은 유용한 정보가 포함되어 있고 마치 캐스터가 말하는 것 같은 느낌의 문장들입니다.

      하지만 ChatGPT가 항상 원하는 스타일로 응답할 수 있게 유도하는 것은 쉽지 않습니다.

      그 중 프롬프트에 위와 같이 샘플을 같이 제공하는 것은 원하는 방향으로 응답할 수 있도록 유도하는 효과적인 방법입니다.

      특히 샘플과 함께 어떤 데이터를 왜 선택해서 이런 샘플을 만들었는지 그 이유를 같이 전달하면 원하는 결과에 더욱 적합한 응답을 얻을 수 있습니다.

      3. 필요한 정보를 조합하여 동적으로 프롬프트를 구성하기


      응답 샘플을 보여주면서 ChatGPT의 응답을 가이드하기 위해서는 고정된 프롬프트가 아니라 상황에 맞게 동적으로 프롬프트를 구성하는 것이 필요합니다.

      위의 그림은 Casting Generator에서 활용하는 동적 프롬프트 구성하는 방법에 대해 보여주는 그림입니다.

      사전에 정의된 스탯별 샘플 문장들과 ChatGPT가 생성한 문장들을 하나의 캐스팅 문구로 합치는 방법에 대한 다양한 sub-prompt들을 만들어 두고

      최종적으로는 전체 프롬프트 템플릿에 상황에 적합한 sub-prompt들을 선택해서 합치면 동적으로 프롬프트를 만들 수 있습니다.

      이런 방법을 이용하면 모든 상황에 대해 사전에 준비하지 않아도 대부분의 상황에 대응되는 프롬프트를 그때그때 조합하여 만들어 활용할 수 있습니다.

      4. Hallucination 과 Post-Processing

      ChatGPT 류의 LLM을 활용할 때 Hallucination이 발생하는 것을 100% 피할 수 있는 방법은 없습니다.

      위와 같이 데이터를 구조화하고 샘플을 제공하는 것으로 Hallucination을 최대한 줄일 수 있지만 그렇다고 하더라도 ChatGPT의 헛소리를 방지하는 다른 방법은 꼭 있어야 합니다.

      특히 AI 캐스터 서비스처럼 스포츠 경기 진행 상황과 중계 영상에 맞춰 실시간으로 서비스를 제공하는 것이 필요하다면 ChatGPT의 Hallucination을 자동으로 걸러 내는 것이 필수적으로 요구됩니다.

      Casting Generator에서는 생성된 문장을 검수하는 여러가지 Post-Processing 방법을 활용하고 있습니다.

      나오면 안되는 단어 사전을 등록해서 걸러내거나 ChatGPT가 생성한 문구에 대해 형태소 분석과 패턴 매칭을 통해 불필요한 문장이 만들어지는 것을 차단하고 있습니다.

      이외에도 LLM을 다시 한번 활용해 ChatGPT가 만든 캐스팅 문구에 대한 검수를 수행하는 방법까지 여러가지 Post-Processing 기법을 활용하고 있습니다.


      마치며

      '에이닷 골프'의 AI 하이라이트와 AI 캐스터 기술은 스포츠 중계의 새로운 지평을 열어가고 있습니다.

      앞으로 이러한 AI 기술이 다양한 스포츠 분야에 적용되어 시청자들은 생생하고 중요한 순간들을 놓치지 않고 즐길 수 있으며, 더욱 개인화된 시청 경험을 제공하여 큰 즐거움을 줄 수 있을 것으로 기대됩니다.

      또한, 이는 스포츠 중계 제작 과정의 효율성을 높이고 스포츠 중계의 매력을 한층 더 끌어올릴 것이며, 스포츠 중계 서비스의 미래를 밝게 만드는 중요한 혁신 요소가 될 것입니다.

      댓글 0

      DEVOTEE를 활성화 시키면
      지금 작성한 댓글에 AI가 댓글을 달아줍니다.

      happynamu 님의 최신 블로그

      더보기

      DEVOTEE 추천 블로그

      동영상 기고하기