μ½˜ν…μΈ λ‘œ κ±΄λ„ˆλ›°κΈ°

TF SavedModel λ‹€μŒ μ£Όμ†Œλ‘œ λ‚΄λ³΄λ‚΄λŠ” 방법 μ΄ν•΄ν•˜κΈ° YOLOv8

λ¨Έμ‹ λŸ¬λ‹ λͺ¨λΈμ„ λ°°ν¬ν•˜λŠ” 것은 μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ 효율적이고 μœ μ—°ν•œ λͺ¨λΈ ν˜•μ‹μ„ μ‚¬μš©ν•˜λ©΄ μž‘μ—…μ΄ 더 μ‰¬μ›Œμ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€. TF SavedModel 은 TensorFlow μ—μ„œ λ¨Έμ‹ λŸ¬λ‹ λͺ¨λΈμ„ μΌκ΄€λœ λ°©μ‹μœΌλ‘œ λ‘œλ“œν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” μ˜€ν”ˆ μ†ŒμŠ€ λ¨Έμ‹ λŸ¬λ‹ ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€. TensorFlow λͺ¨λΈμ„ μœ„ν•œ μ—¬ν–‰ κ°€λ°©κ³Ό κ°™μ•„μ„œ λ‹€μ–‘ν•œ 기기와 μ‹œμŠ€ν…œμ—μ„œ μ‰½κ²Œ νœ΄λŒ€ν•˜κ³  μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒμ—μ„œ TF SavedModel 으둜 λ‚΄λ³΄λ‚΄λŠ” 방법 배우기 Ultralytics YOLOv8 λͺ¨λΈλ‘œ λ‚΄λ³΄λ‚΄λŠ” 방법을 배우면 λ‹€μ–‘ν•œ ν”Œλž«νΌκ³Ό ν™˜κ²½μ—μ„œ λͺ¨λΈμ„ μ‰½κ²Œ 배포할 수 μžˆμŠ΅λ‹ˆλ‹€. 이 κ°€μ΄λ“œμ—μ„œλŠ” λͺ¨λΈμ„ TF SavedModel ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 방법을 μ•ˆλ‚΄ν•˜μ—¬ λ‹€μ–‘ν•œ μž₯μΉ˜μ—μ„œ λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ 좔둠을 μ‹€ν–‰ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό κ°„μ†Œν™”ν•©λ‹ˆλ‹€.

TF SavedModel 으둜 내보내야 ν•˜λŠ” 이유 ?

TensorFlow SavedModel ν˜•μ‹μ€ μ•„λž˜μ™€ 같이 Googleμ—μ„œ κ°œλ°œν•œ TensorFlow μ—μ½”μ‹œμŠ€ν…œμ˜ μΌλΆ€μž…λ‹ˆλ‹€. TensorFlow λͺ¨λΈμ„ μ›ν™œν•˜κ²Œ μ €μž₯ν•˜κ³  μ§λ ¬ν™”ν•˜λ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ°μ—λŠ” μ•„ν‚€ν…μ²˜, κ°€μ€‘μΉ˜, 컴파일 정보 λ“± λͺ¨λΈμ˜ 전체 μ„ΈλΆ€ 정보가 μΊ‘μŠν™”λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λ‹€μ–‘ν•œ ν™˜κ²½μ—μ„œ λͺ¨λΈμ„ κ³΅μœ ν•˜κ³ , λ°°ν¬ν•˜κ³ , 계속 κ΅μœ‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

TF SavedModel

TF SavedModel 의 μ£Όμš” μž₯점은 ν˜Έν™˜μ„±μž…λ‹ˆλ‹€. TensorFlow Serving, TensorFlow Lite 및 TensorFlow.js와 잘 μž‘λ™ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ ν˜Έν™˜μ„± 덕뢄에 μ›Ή 및 λͺ¨λ°”일 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ν¬ν•¨ν•œ λ‹€μ–‘ν•œ ν”Œλž«νΌμ—μ„œ λͺ¨λΈμ„ μ‰½κ²Œ κ³΅μœ ν•˜κ³  배포할 수 μžˆμŠ΅λ‹ˆλ‹€. TF SavedModel ν˜•μ‹μ€ 연ꡬ와 ν”„λ‘œλ•μ…˜ λͺ¨λ‘μ— μœ μš©ν•©λ‹ˆλ‹€. λͺ¨λΈμ„ 관리할 수 μžˆλŠ” ν†΅ν•©λœ 방법을 μ œκ³΅ν•˜μ—¬ λͺ¨λ“  μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— μ‚¬μš©ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

TF SavedModels의 μ£Όμš” κΈ°λŠ₯

λ‹€μŒμ€ TF SavedModel 을 AI κ°œλ°œμžμ—κ²Œ ν›Œλ₯­ν•œ μ˜΅μ…˜μœΌλ‘œ λ§Œλ“œλŠ” μ£Όμš” κΈ°λŠ₯μž…λ‹ˆλ‹€:

  • 이식성: TF SavedModel 은 μ–Έμ–΄ 쀑립적이고 볡ꡬ가 κ°€λŠ₯ν•˜λ©° λ°€νλœ 직렬화 ν˜•μ‹μ„ μ œκ³΅ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 μƒμœ„ μ‹œμŠ€ν…œκ³Ό λ„κ΅¬μ—μ„œ TensorFlow λͺ¨λΈμ„ 생성, μ†ŒλΉ„ 및 λ³€ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ €μž₯된 λͺ¨λΈμ€ λ‹€μ–‘ν•œ ν”Œλž«νΌκ³Ό ν™˜κ²½μ—μ„œ μ‰½κ²Œ κ³΅μœ ν•˜κ³  배포할 수 μžˆμŠ΅λ‹ˆλ‹€.

  • 배포 μš©μ΄μ„±: TF SavedModel 계산 κ·Έλž˜ν”„, ν•™μŠ΅λœ λ§€κ°œλ³€μˆ˜, ν•„μš”ν•œ 메타데이터λ₯Ό 단일 νŒ¨ν‚€μ§€λ‘œ λ¬Άμ–΄ μ œκ³΅ν•©λ‹ˆλ‹€. λͺ¨λΈμ„ κ΅¬μΆ•ν•œ 원본 μ½”λ“œ 없이도 μ‰½κ²Œ λ‘œλ“œν•˜μ—¬ 좔둠에 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λ‹€μ–‘ν•œ ν”„λ‘œλ•μ…˜ ν™˜κ²½μ—μ„œ TensorFlow λͺ¨λΈμ„ κ°„λ‹¨ν•˜κ³  효율적으둜 배포할 수 μžˆμŠ΅λ‹ˆλ‹€.

  • μžμ‚° 관리: TF SavedModel 은 μ–΄νœ˜, μž„λ² λ”© λ˜λŠ” 쑰회 ν…Œμ΄λΈ”κ³Ό 같은 μ™ΈλΆ€ μžμ‚°μ„ 포함할 수 μžˆλ„λ‘ μ§€μ›ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μžμ‚°μ€ κ·Έλž˜ν”„ μ •μ˜ 및 λ³€μˆ˜μ™€ ν•¨κ»˜ μ €μž₯λ˜μ–΄ λͺ¨λΈμ΄ λ‘œλ“œλ  λ•Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 κΈ°λŠ₯은 μ™ΈλΆ€ λ¦¬μ†ŒμŠ€μ— μ˜μ‘΄ν•˜λŠ” λͺ¨λΈμ˜ 관리 및 배포λ₯Ό κ°„μ†Œν™”ν•©λ‹ˆλ‹€.

배포 μ˜΅μ…˜ TF SavedModel

YOLOv8 λͺ¨λΈμ„ TF SavedModel ν˜•μ‹μœΌλ‘œ λ‚΄λ³΄λ‚΄λŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό μ‚΄νŽ΄λ³΄κΈ° 전에 이 ν˜•μ‹μ΄ μ‚¬μš©λ˜λŠ” λͺ‡ 가지 일반적인 배포 μ‹œλ‚˜λ¦¬μ˜€λ₯Ό μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

TF SavedModel λŠ” λ¨Έμ‹ λŸ¬λ‹ λͺ¨λΈμ„ 배포할 수 μžˆλŠ” λ‹€μ–‘ν•œ μ˜΅μ…˜μ„ μ œκ³΅ν•©λ‹ˆλ‹€:

  • TensorFlow μ„œλΉ™: TensorFlow Serving은 ν”„λ‘œλ•μ…˜ ν™˜κ²½μ„ μœ„ν•΄ μ„€κ³„λœ μœ μ—°ν•œ κ³ μ„±λŠ₯ μ„œλΉ™ μ‹œμŠ€ν…œμž…λ‹ˆλ‹€. 기본적으둜 TF μ €μž₯된 λͺ¨λΈμ„ μ§€μ›ν•˜λ―€λ‘œ ν΄λΌμš°λ“œ ν”Œλž«νΌ, μ˜¨ν”„λ ˆλ―ΈμŠ€ μ„œλ²„ λ˜λŠ” 엣지 λ””λ°”μ΄μŠ€μ—μ„œ λͺ¨λΈμ„ μ‰½κ²Œ λ°°ν¬ν•˜κ³  μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • ν΄λΌμš°λ“œ ν”Œλž«νΌ: ꡬ글 ν΄λΌμš°λ“œ ν”Œλž«νΌ(GCP), μ•„λ§ˆμ‘΄ μ›Ή μ„œλΉ„μŠ€(AWS), λ§ˆμ΄ν¬λ‘œμ†Œν”„νŠΈ 애저와 같은 μ£Όμš” ν΄λΌμš°λ“œ μ œκ³΅μ—…μ²΄λŠ” TF μ €μž₯된 λͺ¨λΈμ„ ν¬ν•¨ν•˜μ—¬ TensorFlow λͺ¨λΈμ„ λ°°ν¬ν•˜κ³  μ‹€ν–‰ν•˜κΈ° μœ„ν•œ μ„œλΉ„μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ μ„œλΉ„μŠ€λŠ” ν™•μž₯ κ°€λŠ₯ν•˜κ³  κ΄€λ¦¬λ˜λŠ” 인프라λ₯Ό μ œκ³΅ν•˜λ―€λ‘œ λͺ¨λΈμ„ μ‰½κ²Œ λ°°ν¬ν•˜κ³  ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

  • λͺ¨λ°”일 및 μž„λ² λ””λ“œ μž₯치: TensorFlow λͺ¨λ°”일, μž„λ² λ””λ“œ, IoT κΈ°κΈ°μ—μ„œ λ¨Έμ‹  λŸ¬λ‹ λͺ¨λΈμ„ μ‹€ν–‰ν•˜κΈ° μœ„ν•œ κ²½λŸ‰ μ†”λ£¨μ…˜μΈ LiteλŠ” TF μ €μž₯된 λͺ¨λΈμ„ TensorFlow Lite ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 것을 μ§€μ›ν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 슀마트폰과 νƒœλΈ”λ¦ΏλΆ€ν„° λ§ˆμ΄ν¬λ‘œμ»¨νŠΈλ‘€λŸ¬μ™€ 엣지 λ””λ°”μ΄μŠ€μ— 이λ₯΄κΈ°κΉŒμ§€ λ‹€μ–‘ν•œ λ””λ°”μ΄μŠ€μ— λͺ¨λΈμ„ 배포할 수 μžˆμŠ΅λ‹ˆλ‹€.

  • TensorFlow λŸ°νƒ€μž„: TensorFlow λŸ°νƒ€μž„(tfrt)은 TensorFlow κ·Έλž˜ν”„λ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•œ κ³ μ„±λŠ₯ λŸ°νƒ€μž„μž…λ‹ˆλ‹€. C++ ν™˜κ²½μ—μ„œ TF μ €μž₯된 λͺ¨λΈμ„ λ‘œλ“œν•˜κ³  μ‹€ν–‰ν•˜κΈ° μœ„ν•œ ν•˜μœ„ μˆ˜μ€€ APIλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. TensorFlow λŸ°νƒ€μž„μ€ ν‘œμ€€ TensorFlow λŸ°νƒ€μž„μ— λΉ„ν•΄ 더 λ‚˜μ€ μ„±λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. 지연 μ‹œκ°„μ΄ 짧은 μΆ”λ‘ κ³Ό κΈ°μ‘΄ C++ μ½”λ“œλ² μ΄μŠ€μ™€μ˜ κΈ΄λ°€ν•œ 톡합이 ν•„μš”ν•œ 배포 μ‹œλ‚˜λ¦¬μ˜€μ— μ ν•©ν•©λ‹ˆλ‹€.

YOLOv8 λͺ¨λΈλ‘œ 내보내기 TF SavedModel

YOLOv8 λͺ¨λΈμ„ TF SavedModel ν˜•μ‹μœΌλ‘œ 내보내면 λ‹€μ–‘ν•œ ν”Œλž«νΌμ—μ„œ 적응성과 배포 μš©μ΄μ„±μ„ 높일 수 μžˆμŠ΅λ‹ˆλ‹€.

μ„€μΉ˜

ν•„μš”ν•œ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•˜λ €λ©΄ μ‹€ν–‰ν•©λ‹ˆλ‹€:

μ„€μΉ˜

# Install the required package for YOLOv8
pip install ultralytics

μ„€μΉ˜ κ³Όμ •κ³Ό κ΄€λ ¨λœ μžμ„Έν•œ 지침과 λͺ¨λ²” μ‚¬λ‘€λŠ” Ultralytics μ„€μΉ˜ κ°€μ΄λ“œλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”. YOLOv8 에 ν•„μš”ν•œ νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•˜λŠ” λ™μ•ˆ λ¬Έμ œκ°€ λ°œμƒν•˜λ©΄ 일반적인 문제 κ°€μ΄λ“œλ₯Ό μ°Έμ‘°ν•˜μ—¬ ν•΄κ²° 방법과 νŒμ„ ν™•μΈν•˜μ„Έμš”.

μ‚¬μš©λ²•

μ‚¬μš© 지침을 μ‚΄νŽ΄λ³΄κΈ° 전에 λͺ¨λ“  Ultralytics YOLOv8 λͺ¨λΈμ—μ„œ 내보내기λ₯Ό μ‚¬μš©ν•  수 μžˆμ§€λ§Œ, μ„ νƒν•œ λͺ¨λΈμ΄ 내보내기 κΈ°λŠ₯을 μ§€μ›ν•˜λŠ”μ§€ μ—¬κΈ°μ—μ„œ 확인할 수 μžˆλ‹€λŠ” 점에 μœ μ˜ν•˜μ„Έμš”.

μ‚¬μš©λ²•

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO("yolov8n.pt")

# Export the model to TF SavedModel format
model.export(format="saved_model")  # creates '/yolov8n_saved_model'

# Load the exported TF SavedModel model
tf_savedmodel_model = YOLO("./yolov8n_saved_model")

# Run inference
results = tf_savedmodel_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to TF SavedModel format
yolo export model=yolov8n.pt format=saved_model  # creates '/yolov8n_saved_model'

# Run inference with the exported model
yolo predict model='./yolov8n_saved_model' source='https://ultralytics.com/images/bus.jpg'

μ§€μ›λ˜λŠ” 내보내기 μ˜΅μ…˜μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ 배포 μ˜΅μ…˜μ— λŒ€ν•œUltralytics λ¬Έμ„œ νŽ˜μ΄μ§€λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

내보내기 배포 YOLOv8 TF SavedModel λͺ¨λΈ

이제 YOLOv8 λͺ¨λΈμ„ TF SavedModel ν˜•μ‹μœΌλ‘œ λ‚΄λ³΄λƒˆμœΌλ―€λ‘œ λ‹€μŒ λ‹¨κ³„λŠ” λ°°ν¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. TF GraphDef λͺ¨λΈμ„ μ‹€ν–‰ν•˜κΈ° μœ„ν•œ 기본적이고 ꢌμž₯λ˜λŠ” 첫 번째 λ‹¨κ³„λŠ” μ•žμ„œ μ‚¬μš© μ½”λ“œ μŠ€λ‹ˆνŽ«μ— ν‘œμ‹œλœ λŒ€λ‘œ YOLO("./yolov8n_saved_model") λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

ν•˜μ§€λ§Œ TF SavedModel λͺ¨λΈ 배포에 λŒ€ν•œ μžμ„Έν•œ 지침은 λ‹€μŒ λ¦¬μ†ŒμŠ€λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”:

  • TensorFlow μ„œλΉ™: TF SavedModel λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ λ°°ν¬ν•˜λŠ” 방법에 λŒ€ν•œ 개발자 λ¬Έμ„œλŠ” TensorFlow μ„œλΉ™μ„ μ°Έμ‘°ν•˜μ„Έμš”.

  • Node.jsμ—μ„œ TensorFlow SavedModel μ‹€ν–‰: TensorFlow SavedModel 을 λ³€ν™˜ν•˜μ§€ μ•Šκ³  Node.jsμ—μ„œ 직접 μ‹€ν–‰ν•˜λŠ” 방법에 λŒ€ν•œ TensorFlow λΈ”λ‘œκ·Έ κ²Œμ‹œλ¬Όμž…λ‹ˆλ‹€.

  • ν΄λΌμš°λ“œμ— 배포: Cloud AI ν”Œλž«νΌμ—μ„œ TensorFlow SavedModel λͺ¨λΈ 배포에 λŒ€ν•œ TensorFlow λΈ”λ‘œκ·Έ κ²Œμ‹œλ¬Ό.

μš”μ•½

이 κ°€μ΄λ“œμ—μ„œλŠ” Ultralytics YOLOv8 λͺ¨λΈμ„ TF SavedModel ν˜•μ‹μœΌλ‘œ λ‚΄λ³΄λ‚΄λŠ” 방법을 μ‚΄νŽ΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€. TF SavedModel 으둜 내보내면 λ‹€μ–‘ν•œ ν”Œλž«νΌμ—μ„œ YOLOv8 λͺ¨λΈμ„ μ΅œμ ν™”, 배포 및 ν™•μž₯ν•  수 μžˆλŠ” μœ μ—°μ„±μ„ 확보할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš©λ²•μ— λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ TF SavedModel 곡식 λ¬Έμ„œλ₯Ό μ°Έμ‘°ν•˜μ„Έμš”.

Ultralytics YOLOv8 을 λ‹€λ₯Έ ν”Œλž«νΌ 및 ν”„λ ˆμž„μ›Œν¬μ™€ ν†΅ν•©ν•˜λŠ” 방법에 λŒ€ν•œ μžμ„Έν•œ λ‚΄μš©μ€ 톡합 κ°€μ΄λ“œ νŽ˜μ΄μ§€λ₯Ό μ°Έμ‘°ν•˜μ„Έμš”. ν”„λ‘œμ νŠΈμ—μ„œ YOLOv8 을 μ΅œλŒ€ν•œ ν™œμš©ν•˜λŠ” 데 도움이 λ˜λŠ” μœ μš©ν•œ λ¦¬μ†ŒμŠ€κ°€ κ°€λ“ν•©λ‹ˆλ‹€.



생성 2024-03-23, μ—…λ°μ΄νŠΈ 2024-05-18
μž‘μ„±μž: glenn-jocher (1), Burhan-Q (1), abirami-vina (1)

λŒ“κΈ€