Ⅰ. 서론
최근 인공지능 기술은 눈부시게 발전하고 있다. 연구실 레벨에서 연구되고 있었던 인공지능 기술은 사회 모든 분야에 적용되는 실정이다. 이것은 인공지능 기술의 결과가 이론적 사실을 넘어서 실질적으로 도움이 되는 결과를 주고 있기 때문이다[1]. 인공지능의 다양한 기술중에서도 특히 신경망 기술을 기반으로 하는 딥러닝 기술이 좋은 성과를 이루고 있다. 따라서 딥러닝 기술을 활용한 응용 소프트웨어가 활발히 연구되고 있다. 딥러닝 모델의 대표적인 연구 결과가 Convolutional Neural Network (CNN)과 Recurrent Neutral Network (RNN)이다[2]. CNN은 이미지를 인식하는데 기술이다. CNN을 활용하는 대표적인 기술이 이미지 분류, 이미지속에 있는 객체 인지, 스타일 전이, 객체 분할 등이 있다. RNN은 음성과 글자 등 순차적인(Sequential) 정보를 인식하고 분석하는 것에 사용된다. 특히 CNN은 이미지 분류, 객체 인지 등은 많은 분야에 적용되고 그 결과도 매우 우수하다. 객체 인지 기술은 이미지 내에 객체를 인지하고 그 객체가 어디에 있는지를 찾아내는 인공지능 기술이다.
이러한 연구는 산업 현장을 넘어 엔터테인먼트 분야로 이어지고 있다. 대표적인 분야가 스포츠 분야이다. 골프에서도 스윙 분석, 골프공 궤적 추적 등 많은 분야에서 인공지능 기술을 적용하고 있다. 골프에서 퍼팅은 골퍼가 가장 어려워하는 기술 중의 하나이다. 이것은 퍼팅이 골프 스코어 비중에 높을 뿐만 아니라 연습을 많이 하여도 기술이 잘 향상되지 않기 때문이다[3, 4]. 본 논문은 골프에서의 퍼팅을 인공지능 기술을 이용하여 개선할 수 있도록 도와주는 앱을 개발하는 것이다. 퍼팅을 하는 그린이 평평한 평지이면 퍼팅을 하는 것이 큰 어려움이 없다. 그러나 대부분의 그린은 평평하지 않고 다양한 고도차를 가지기 때문에 퍼팅이 쉽지 않은 이유이다 [3, 4]. 이것은 이런 경우 공을 홀 컵이 아닌 다른 곳을 조준하여야 하기 때문이다. 본 논문의 핵심 아이디어는 객체 인지(Object Detection) 기술을 이용하여 그린 위에서 홀컵의 위치와 크기를 인지하여 홀 컵에서 조준하는 곳까지의 거리를 알려주어 퍼팅 조준을 도와주는 것이다.
2장에서는 본 논문에서 적용하고자 하는 인공지능 기술에 대하여 설명하며, 3장에서는 제안된 앱의 설계 및 구현에 대하여 설명한다. 4장에서는 개발된 앱에 대하여 성능을 소개하며, 5장에서는 연구 결과를 요약하며 향후 연구에 대하여 논한다.
Ⅱ. 관련 연구
딥러닝 중심으로 발전되고 있는 AI 기술은 눈부시게 발전하고 있다[1, 5]. 딥러닝의 개념은 전혀 새로운 것이 아니다. 20여 년 전부터 활발하게 연구하였으나, 과도한 계산을 요구하기에 실용적으로 활용하지 못하였다. 그러나 최근 컴퓨터 능력의 발전으로 딥러닝의 개념이 실제 환경에 적용되고 있다. 대표적인 CNN 기술이 이미지 분류(Image Classification)와 객체 인지(Object Detection) 기술이다[2]. 객체 인지 기술은 이미지 분류 기술과 달리 다수의 다른 객체들이 무엇인지 인식하여야 할 뿐만 아니라 객체의 위치 및 크기도 인식하여야 한다. 따라서 객체 인지 기술이 이미지 분류 기술보다 더욱 어려운 기술이다. 대부분은 딥러닝 기반 인공지능 기술이 학습 과정이 필요하다. 객체 인지 기술에서도 인식되고자 하는 객체에 대하여 학습을 하여야 한다. 객체 기술 인지 기술도 마찬가지로 학습을 하여야 하는데 좋은 학습 데이터가 좋은 객체 인지 기술을 만들기 때문에 좋은 학습 데이터를 준비하는 것이 매우 중요하다[2, 6].
본 논문인 골프장 그린에서 홀 컵의 인지를 위하여 객체 인지 기술을 사용한다. 객체 인지 기술의 응용에서 다수의 다른 객체를 인지하는 것이 대부분이다. 그러나 그린 위에서 홀 컵은 한 개이고 오직 홀 컵만 인지하면 되므로 일반적인 객체 인지 기술 적용보다 쉽다. 이러한 점에 착안하여 본 논문에서는 그린에서 오직 홀 컵만 인지 할 수 있도록 학습 모델을 사용하는데, 기존의 연구[7]에서 개발한 모델을 사용한다. 여기서는 이러한 학습 모델을 생성하기 위하여 그린에서 홀 컵이 포함된 총 120장 이미지를 준비하였다. Roboflow에서 제공하는 데이터 증폭 120장의 이미지를 기존으로 다양한 증폭 알고리즘을 적용하여 최종적으로 252개의 학습 데이터와 12개의 시험 데이터를 사용하여 학습하였다[7]. 객체 인지 알고리즘을 학습시키기 위해서는 각 이미지에 JSON 주석 파일을 생성하였으며, 이러한 주석 데이터와 학습 이미지를 반으로 애플사의 CreateML 도구[8]를 이용하여 학습 모델을 생성하였다[7].
Ⅲ. 앱 설계 및 구현
1. 요구사항 및 설계
본 논문은 골프 운동에서 퍼팅 시 조준을 도와주는 앱을 개발하는 것이다. 골프 코스에서 그린이 평평한 평지이면 일반적으로 그린의 홀 컵을 정 조준하여 퍼팅하면 되지만 많은 경우 그린에서 마운드의 고도차(undulation)에 의하여 홀 컵을 똑바로 정조준 하는 경우는 드물다. 이 경우 골퍼들은 홀 컵을 기준으로 좌든 우든 얼마만큼 떨어진 지점을 정 조준하여 퍼팅하게 된다. 그러나 대부분 경우 정조준 지점이 생각과 같이 일치하지 않아서 홀 컵에 공을 넣지 못하고, 그래서 퍼팅 수를 늘리게 되어 점수를 잃게 되는 경우가 허다하다.
본 논문에서는 이러한 어려움을 돕기 위하여 스마트폰을 이용한 퍼팅 조준을 도와주는 앱을 설계 및 구현에 관한 연구이다. 이를 위하여 최근 인공지능 기술 중의 하나인 객체 인지 기술을 이용한다. 그린에서 카메라를 이용하여 그린을 촬영하는 동안 객체 인지 기술의 이용하여 그린에서의 홀 컵의 위치와 크기를 픽셀 단위로 인식한다. 골프에서의 홀 컵의 크기는 108mm로 고정되어 있으므로 카메라에 촬영된 홀 컵 크기의 픽셀 수를 픽셀당 몇 mm인지는 계산하는 것은 어렵지 않다. 이 경우 카메라의 정 중앙이 홀 컵과 얼마나 떨어져 있는지 쉽게 알 수 있다. 그림 1은 목표 앱을 그림으로 보여준다. 그린의 고도차에 의하여 홀 컵보다 오른쪽이 더 높은 고도이기에 오른쪽 지점으로 약 1.5컵 떨어진 곳을 조준한 경우이다. 개발될 앱은 이 경우 카메라를 통하여 약 1.5컵 떨어진 곳을 조준하고 있다는 것을 알려주는 것이다. 다음은 개발될 앱에 대한 요구사항 요약이다.
그림 1. 목표 앱
Fig. 1. Goal of App
∎ 최소 초당 1회 이상의 홀 컵을 인식할 수 있어야 한다.
∎ 객체 인지 모델은 홀 컵을 포함하는 최소 크기 사각형의 위치와 크기를 추출하여야 한다.
∎ 효과적인 조준을 위하여 골프공 위에 그려진 직선과 정렬시킬 수 있는 라인이 가상으로 그려져야 한다.
∎ 기타 사용자의 편의성을 위하여 홀 컵 인지 빈도, 가상 라인의 두께 등에 대한 사용자 선택이 가능하여야 한다.
애플사에서는 카메라를 활용한 응용프로그램 개발을 위하여 다양한 클래스를 제공하고 있다[9]. 가장 대표적인 클래스가 AVCaptureSession이다. 이 클래스는 카메라로부터 캡쳐되는 이미지를 받고 이를 적절히 필요한 부분에 전달한다. 이를 위하여 AVCaptureDeviceInput 클래스와 AVCaptureVideoDataOutput 클래스를 제공한다. 각각은 그림 2에서 볼 수 있듯이 카메라와 같은 하드웨어를 제어하기 위하여 AVCaptureDevice 클래스를 제공한다. AVCaptureVideoDataOutput 클래스는 이미지 데이터를 파일에 저장하기도 하고, 다른 하드웨어 기기로 보낼 수 있다. 무엇보다도 Delegator가 있어 추가적인 데이터처리를 할 수 있도록 한다. AVCaptureSession은 이러한 관계를 유지하면서 반복적으로 이미지를 캡처 및 출력을 실행한다. 또한 캡처되는 이미지를 사용자가 볼 수 있도록 프리뷰 기능도 제공한다. 본 논문에서는 프리뷰 상황에서 Delagator을 이용하여 홀 컵을 인지하고 거리를 계산하여 퍼팅 조준을 보조하는 앱을 개발한다.
그림 2. 애플사의 비디오 캡쳐 관련 클래스 및 연결 구조
Fig. 2. Classes and connectivity structure related to video capture in Apple
iOS에서 응용프로그램을 개발하기 위해서 애플사에서는 xcode에서 사용 가능한 다양한 클래스를 제공한다. 대표적인 것이 하나의 화면을 제어하는 UIViewController이다. 하나의 UIViewController은 전체 화면을 꾸미는 UIView가 존재한다. 이 UIView 클래스는 사용자와 상호작용을 위한 frame과 효율적인 그래픽 조작을 위한 CALayer 객체를 가지고 있다. 그래픽 조작을 위한 CALayer는 트리 구조이므로 여러 그래픽을 부분적으로 조작하고 최종적으로 하나를 합할 수 있도록 한다. 본 논문에서의 앱을 제작하기 위하여 UIView와 관련 있는 CALayer(topLayer)에 그림 3과 같은 트리 구조를 갖게하여 프리뷰와 홀 컵인지에 대한 정보를 동시에 출력하도록 설계하였다.
그림 3. 앱의 UIView 및 CALayer 관계
Fig. 3. Relationship between a UIView and a CALayer in the app
2. 구현
본 논문에서 제안된 앱은 iOS 15.3.1이 실행되는 아이폰 13 미니를 대상으로 개발되었다. 실제 개발은 iOS 15.3.1을 대상으로 개발되었으나 iOS 13이 후 어떤 iOS 버전에서도 실행될 수 있다. 구현된 앱은 기능적으로 크게 두 부분으로 나누어진다. 하나는 객체 인지 기술을 이용한 홀 컵 인식 부분이며, 다른 하나는 인지된 홀 컵에 대한 정보를 출력하는 것이다. 먼저 홀 컵 인지 기능은 CNN 기반 객체 인지 기술을 사용한다. 본 논문에서 제안하는 앱을 개발하기 위하여 그린에서 홀 컵만 인지하는 모델을 CreateML을 이용하여 학습시켜 왔다. CreateML의 출력은 CoreML 형태(.mlmodel)이기 때문에 특별한 변환 없이 xcode 개발환경에서 바로 사용할 수 있는 장점이 있다[7, 8]. 그림 4는 홀 컵 인지를 위한 구현 알고리즘이다. 여기서 애플에서 제공하는 VNCoreMLModel과 VNCoreMLRequest 클래스를 사용하였다. createDetector() 함수는 앱의 시작 시점에 한번만 호출된다. 이 함수에서는 궁극적으로 VNCoreMLRequest 객체를 만들어서 detectors에 저장하여 둔다. 나중에 이 detectors를 이용하여 사물을 인지하게 되면 objectDetection() 함수를 실행하게 된다. objectDetection() 함수는 스레드에 의하여 실행되기 때문에 실제로 화면에 정보를 표시하는 drawVisionRequestResults() 함수는 메인 스레드가 실행하기 위하여 DispatchQueue.main.async() 함수를 실행하도록 구현하였다.
그림 4. HoleCup.mlmodel을 이용한 인지기(detector) 생성 코드
Fig. 4. Code for creating a recognition (detector) using HoleCup.mlmodel
그림 5에서 captureOutputDelegator() 함수는 그림 2에서 볼 수 있듯이 AVCaptureVideoDataOutput에서 추가적인 이미지 처리를 위하여 호출해주는 함수이다. 이 함수는 매개 변수 buffer에 캡쳐한 이미지를 가지고 온다. VNImageRequestHandler 객체를 생성하고 이 객체에서 앞에서 생성해 두었던 detectors를 이용하여 홀 컵 인지를 한다. 이 함수의 내부에서 objectDetection() 함수를 호출한다.
그림 5. AVCaptureVideoDataOutput의 Delegator 코드
Fig. 5. Delegator code for AVCaptureVideoDataOutput
그림 6에서 drawResultsOnInformationLayer() 함수는 그림 3에서의 informationLayer에 인지된 홀 컵을 기준으로 정보를 출력하는 함수이다. 객체 인지는 노이즈에 의한 가짜 홀 컵도 인지할 수 있으므로 결과에 다수의 홀 컵을 포함할 수 있다. 따라서 drawResultsOnInformationLayer () 함수의 매개변수는 배열이다. 배열의 각 요소는 인지된 홀 컵의 정보와 신뢰도를 포함하고 있다. 그중에서 가장 큰 신뢰도를 가진 것이 첫 번째 result이다. 따라서 단지 results.first만 대상으로 화면에 출력한다.
그림 6. 홀 컵 인지 결과를 CALayer을 이용하여 표시하는 코드
Fig. 6. Code to display hole cup recognition result using CALayer
제안된 앱에서는 사용자 편리성을 위하여 몇 가지 선택 기능을 제공한다. 그림 7-(a) 는 이에 대한 스크린샷이다. 홀 컵 인지가 불필요한 경우 이를 비활성화시킬 수 있도록 하였고, 홀 컵까지의 거리도 불필요한 경우 비활성화할 수 있도록 하였으며, 센터 라인과 사이드 라인도 선택적으로 나타나지 않을 수 있도록 하였다. 또한 홀컵 인지 빈도수를 조절할 수 있도록 하였다. 그림 7-(b), (c)는 완성된 앱으로 홀 컵을 조준하는 스크린 샷이다.
그림 7. 개발된 앱의 스크린 샷
Fig. 7. Screenshot of the developed app
Ⅳ. 성능 측정
성능 측정은 크게 두 가지 측면에서 측정되었다. 하나는 초당 얼마나 많은 프레임에 대하여 홀 컵을 인지할 수 있느냐는 것이고, 다른 하나는 홀 컵과 조준 지점의 거리가 얼마나 정확한가를 측정한 것이다.
먼저 첫 번째 성능 측정을 하기 위하여 홀 컵을 인지하지 않은 상태에서 카메라로부터 이미지를 캡처하는 FPS(Frames Per Second)를 30으로 고정하였다. 이런 상태에서 iPhone 8 Plus(iOS 15.3)와 iPhone 13 mini(iOS 15.3)에 대하여 홀 컵 인지 코드를 더하여 FPS를 측정하였다. 표 1은 측정 결과이다.
표 1. 홀 컵 인지 성능
Table 1. Hole Cup Recognition Performance
표 1의 결과를 보면 iPhone 8 Plus의 경우 홀 컵을 인지하는 코드가 포함된 경우, FPS가 약 반으로 줄어든다. 이것은 카메라로부터 이미지를 캡처하여 프리뷰하는 시간과 이미지로부터 홀 컵을 인지하고 다양한 정보를 출력하는 시간이 거의 같다는 것을 의미한다. 현실적으로 볼 때 초당 14.7 프레임 속도로 홀 컵을 인지하고 부수적인 정보를 출력한다는 것은 골프에서 조준 작업을 고려할 때 아무런 문제가 되지 않는다고 판단한다. iPhone 13 Mini의 경우 홀 컵 인지 코드가 포함된 경우에도 29.4 FPS가 나온다. 이것은 실제로 홀 컵 인지 코드의 오버헤드가 카메라로부터 이미지를 캡처하여 프리뷰하는 시간과 비교하여 거의 무시할 수 있는 수준이라고 할 수 있다. iPhone 13 Mini의 2021년 출시되었음을 고려하면 앞으로 사용되는 대부분 아이폰은 iPhone 13 Mini보다 우수할 것이므로, 이 앱은 대부분 아이폰에서 실행 속도는 문제가 되지 않음을 알 수 있다.
두 번째 성능 측정은 실제 골프장의 그린에서 측정되었다. 카메라의 이미지 특성상 당연히 거리에 따라 측정 오차가 달라질 것이다. 따라서 그린에서 3 홀 컵 거리(32.4cm)를 조준하도록 한 상태에서 홀 컵과 골프공의 위치에 따라 앱에 출력되는 홀 컵 거리의 값을 측정하였다. 결과는 표 2와 같다.
표 2. 홀 컵과 조준 지점과의 거리 측정
Table 2. Measurement of Distance between Hole Cup and Aiming Point
표 2의 결과는 5번 측정하여 평균한 거리이다. 비교적 가까운 거리인 3 발걸음(약 2.3m)에서는 매우 정확함을 알 수 있다. 그러나 10 발걸음(약 7.8m)에서는 0.8컵 정도의 오차가 있다. 성능 측정에서 발견된 사실은 측정 결과가 항상 실제 거리보다 약간 짧게 나타나고 거리가 멀어짐에 따라 더욱 짧게 측정되었다. 따라서 실제 골프장에서 조준 시에 조준 거리를 좀 더 크게 가짐으로써 이러한 오차를 보완할 수도 있다. 그러나 궁극적으로 이러한 오차를 극복하기 위해서는 보다 정확한 학습 모델을 개발하여야 할 것이다.
Ⅴ. 결론
최근 인공지능 기반 이미지 처리 기술은 날로 발전하고 있고, 산업 전반에 걸쳐 적용되고 있다. 본 논문은 이러한 인공지능 기술 중 객체 인지 기술을 활용하여 골프에서 퍼팅의 조준을 도와주는 앱을 개발한 것이다.
제안된 앱은 애플사의 아이폰을 대상으로 개발하였으므로 애플사에서 제공하는 CreateML과 xcode를 사용하여 개발하였다. 홀 컵 인지를 위하여 객체 인지 기술을 사용하였고 이를 위하여 CreateML을 이용하여 홀 컵만 인지하는 모델을 생성하였다. 애플사에서 제공하는 다양한 카메라 관련 클래스들을 사용하여 구현하였다. 개발된 앱에 대하여 홀 컵 인지의 속도와 홀 컵의 크기를 얼마나 정확히 인지하는가에 대하여 성능 측정을 하였다. 홀 컵 인지의 속도는 2017년 출시된 아이폰 8 플러스에서도 14.7 FPS의 성능을 보였다. 더욱 정교한 홀 컵 크기 인식을 위해서는 더 많은 학습 데이터를 이용하여 더 좋은 학습 모델을 개발할 필요가 있다.
References
- Haenlein, Michael, and Andreas Kaplan. "A brief history of artificial intelligence: On the past, present, and future of artificial intelligence", California management review, Vol. 61, No. 4, pp. 5-14. 2019. https://doi.org/10.1177/0008125619864925
- Wang, Jiang, et al. "Cnn-rnn: A unified framework for multi-label image classification." Proceedings of the IEEE conference on computer vision and pattern recognition, pp. 2285-2294, 2016.
- Craig, C. M., et al. "Guiding the swing in golf putting", Nature, Vol. 405, No. 6784, pp. 295-296, 2000. https://doi.org/10.1038/35012690
- Delay, Delphine, et al. "Movement control in golf putting", Human Movement Science, Vol. 16, No. 5, pp. 597-619, 1997. https://doi.org/10.1016/S0167-9457(97)00008-0
- Choi, Nak-Hun, Oh, Jong-Seok, Ahn, Jong-Rok and Kim, Key-Sun, "A Development of Defeat Prediction Model Using Machine Learning in Polyurethane Foaming Process for Automotive Seat", Journal of the Korea Academia-Industrial cooperation Society, Vol. 22, No. 6, pp. 36-42, 2021.
- Shao, Shuai, et al. "Objects365: A large-scale, high-quality dataset for object detection", Proceedings of the IEEE/CVF international conference on computer vision. pp. 8430-8439, 2019.
- Jae-Moon Lee, Kitae Hwang, Inhwan Jung, Development of a Hole Cup Recognition Model on Golf Green Using Object Detection Technology, The Journal of The Institute of Internet, Broadcasting and Communication (IIBC), Vol. 23, No. 1, pp. 15-21, 2023.
- Wang, Tianyun, and Yanzhang Zhu. "The CreateML-based compared to the AutoML-based approach to animal image classification", International Conference on Cloud Computing, Performance Computing, and Deep Learning, Vol. 12287, pp. 412-418, 2022.
- Mark, David, et al. "Lights, Camera, and Action", More iPhone Development with Swift. Apress, Berkeley, CA, pp. 383-403, 2015.