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

YOLOv8 λͺ¨λΈ ν˜•μ‹μ—μ„œ TF.js λͺ¨λΈ ν˜•μ‹μœΌλ‘œ 내보내기

λ¨Έμ‹ λŸ¬λ‹ λͺ¨λΈμ„ λΈŒλΌμš°μ €λ‚˜ Node.js에 직접 λ°°ν¬ν•˜λŠ” 것은 κΉŒλ‹€λ‘œμšΈ 수 μžˆμŠ΅λ‹ˆλ‹€. λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ μ‚¬μš©μž λ””λ°”μ΄μŠ€μ—μ„œ 둜컬둜 λŒ€ν™”ν˜• μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•  수 μžˆλ„λ‘ λͺ¨λΈ ν˜•μ‹μ΄ λΉ λ₯Έ μ„±λŠ₯에 μ΅œμ ν™”λ˜μ–΄ μžˆλŠ”μ§€ 확인해야 ν•©λ‹ˆλ‹€. TensorFlow .js λ˜λŠ” TF.js λͺ¨λΈ ν˜•μ‹μ€ μ΅œμ†Œν•œμ˜ μ „λ ₯을 μ‚¬μš©ν•˜λ©΄μ„œλ„ λΉ λ₯Έ μ„±λŠ₯을 μ œκ³΅ν•˜λ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

' TF.js λͺ¨λΈ ν˜•μ‹μœΌλ‘œ 내보내기' κΈ°λŠ₯을 μ‚¬μš©ν•˜λ©΄ λͺ¨λΈμ„ μ΅œμ ν™”ν•˜μ—¬ Ultralytics YOLOv8 λͺ¨λΈμ„ 고속 및 λ‘œμ»¬μ—μ„œ μ‹€ν–‰λ˜λŠ” 객체 감지 좔둠에 μ΅œμ ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 κ°€μ΄λ“œμ—μ„œλŠ” λͺ¨λΈμ„ TF.js ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 방법을 μ•ˆλ‚΄ν•˜μ—¬ λͺ¨λΈμ΄ λ‹€μ–‘ν•œ 둜컬 λΈŒλΌμš°μ €μ™€ Node.js μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 더 μ‰½κ²Œ μž‘λ™ν•  수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€.

TF.js둜 내보내야 ν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΈκ°€μš”?

κ΄‘λ²”μœ„ν•œ TensorFlow μ—μ½”μ‹œμŠ€ν…œμ˜ μΌλΆ€λ‘œ TensorFlow νŒ€μ—μ„œ κ°œλ°œν•œ TensorFlow.js둜 λ¨Έμ‹  λŸ¬λ‹ λͺ¨λΈμ„ 내보내면 λ¨Έμ‹  λŸ¬λ‹ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 배포할 λ•Œ λ§Žμ€ 이점을 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. λ―Όκ°ν•œ 데이터λ₯Ό λ””λ°”μ΄μŠ€μ— λ³΄κ΄€ν•˜μ—¬ μ‚¬μš©μž κ°œμΈμ •λ³΄ 보호 및 λ³΄μ•ˆμ„ κ°•ν™”ν•˜λŠ” 데 도움이 λ©λ‹ˆλ‹€. μ•„λž˜ μ΄λ―Έμ§€λŠ” TensorFlow.js μ•„ν‚€ν…μ²˜μ™€ μ›Ή λΈŒλΌμš°μ €μ™€ Node.jsμ—μ„œ λ¨Έμ‹  λŸ¬λ‹ λͺ¨λΈμ΄ μ–΄λ–»κ²Œ λ³€ν™˜λ˜κ³  λ°°ν¬λ˜λŠ”μ§€λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.

TF.js μ•„ν‚€ν…μ²˜

λ˜ν•œ λ‘œμ»¬μ—μ„œ λͺ¨λΈμ„ μ‹€ν–‰ν•˜λ©΄ 지연 μ‹œκ°„μ΄ 쀄어듀고 응닡성이 λ›°μ–΄λ‚œ μ‚¬μš©μž κ²½ν—˜μ„ μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€. TensorFlow.jsμ—λŠ” μ˜€ν”„λΌμΈ κΈ°λŠ₯도 μ œκ³΅λ˜λ―€λ‘œ μ‚¬μš©μžκ°€ 인터넷에 μ—°κ²°λ˜μ§€ μ•Šμ€ μƒνƒœμ—μ„œλ„ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. TF.jsλŠ” GPU 가속을 μ§€μ›ν•˜λŠ” ν™•μž₯성을 μœ„ν•΄ μ„€κ³„λ˜μ—ˆκΈ° λ•Œλ¬Έμ— λ¦¬μ†ŒμŠ€κ°€ μ œν•œλœ λ””λ°”μ΄μŠ€μ—μ„œ λ³΅μž‘ν•œ λͺ¨λΈμ„ 효율적으둜 μ‹€ν–‰ν•  수 μžˆλ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

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

λ‹€μŒμ€ TF.jsλ₯Ό 개발자λ₯Ό μœ„ν•œ κ°•λ ₯ν•œ λ„κ΅¬λ‘œ λ§Œλ“œλŠ” μ£Όμš” κΈ°λŠ₯μž…λ‹ˆλ‹€:

  • 크둜슀 ν”Œλž«νΌ 지원: TensorFlow.jsλŠ” λΈŒλΌμš°μ €μ™€ Node.js ν™˜κ²½ λͺ¨λ‘μ—μ„œ μ‚¬μš©ν•  수 μžˆμœΌλ―€λ‘œ λ‹€μ–‘ν•œ ν”Œλž«νΌμ— μœ μ—°ν•˜κ²Œ 배포할 수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 κ°œλ°œμžλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ 더 μ‰½κ²Œ λΉŒλ“œν•˜κ³  배포할 수 μžˆμŠ΅λ‹ˆλ‹€.

  • μ—¬λŸ¬ λ°±μ—”λ“œ 지원: TensorFlow.jsλŠ” CPU, GPU 가속을 μœ„ν•œ WebGL, λ„€μ΄ν‹°λΈŒμ— κ°€κΉŒμš΄ μ‹€ν–‰ 속도λ₯Ό μœ„ν•œ μ›Ήμ–΄μ…ˆλΈ”λ¦¬(WASM), κ³ κΈ‰ λΈŒλΌμš°μ € 기반 λ¨Έμ‹ λŸ¬λ‹ κΈ°λŠ₯을 μœ„ν•œ WebGPU λ“± λ‹€μ–‘ν•œ κ³„μ‚°μš© λ°±μ—”λ“œλ₯Ό μ§€μ›ν•©λ‹ˆλ‹€.

  • μ˜€ν”„λΌμΈ κΈ°λŠ₯: TensorFlow .jsλ₯Ό μ‚¬μš©ν•˜λ©΄ 인터넷 μ—°κ²° 없이도 λΈŒλΌμš°μ €μ—μ„œ λͺ¨λΈμ„ μ‹€ν–‰ν•  수 μžˆμœΌλ―€λ‘œ μ˜€ν”„λΌμΈμ—μ„œ μž‘λ™ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

TensorFlow.jsλ₯Ό μ‚¬μš©ν•œ 배포 μ˜΅μ…˜

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

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

  • λΈŒλΌμš°μ € λ‚΄ ML μ• ν”Œλ¦¬μΌ€μ΄μ…˜: λΈŒλΌμš°μ €μ—μ„œ 직접 λ¨Έμ‹ λŸ¬λ‹ λͺ¨λΈμ„ μ‹€ν–‰ν•˜λŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ ꡬ좕할 수 μžˆμŠ΅λ‹ˆλ‹€. μ„œλ²„ μΈ‘ 계산이 ν•„μš”ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ μ„œλ²„ λΆ€ν•˜κ°€ μ€„μ–΄λ“­λ‹ˆλ‹€.

  • Node.js μ• ν”Œλ¦¬μΌ€μ΄μ…˜:: TensorFlow.jsλŠ” μ„œλ²„ μΈ‘ λ¨Έμ‹  λŸ¬λ‹ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°œλ°œν•  수 μžˆλ„λ‘ Node.js ν™˜κ²½μ—μ„œμ˜ 배포도 μ§€μ›ν•©λ‹ˆλ‹€. μ„œλ²„μ˜ 처리 λŠ₯λ ₯이 ν•„μš”ν•˜κ±°λ‚˜ μ„œλ²„ μΈ‘ 데이터에 μ•‘μ„ΈμŠ€ν•΄μ•Ό ν•˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— 특히 μœ μš©ν•©λ‹ˆλ‹€.

  • Chrome ν™•μž₯ ν”„λ‘œκ·Έλž¨: ν₯미둜운 배포 μ‹œλ‚˜λ¦¬μ˜€λŠ” TensorFlow.jsλ₯Ό μ‚¬μš©ν•˜μ—¬ Chrome ν™•μž₯ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“œλŠ” κ²ƒμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ‚¬μš©μžκ°€ μ›ΉνŽ˜μ΄μ§€ λ‚΄μ˜ 이미지λ₯Ό 마우슀 였λ₯Έμͺ½ λ²„νŠΌμœΌλ‘œ ν΄λ¦­ν•˜μ—¬ 사전 ν•™μŠ΅λœ ML λͺ¨λΈμ„ μ‚¬μš©ν•˜μ—¬ 이미지λ₯Ό λΆ„λ₯˜ν•  수 μžˆλŠ” ν™•μž₯ ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€. TensorFlow.jsλ₯Ό 일상적인 μ›Ή λΈŒλΌμš°μ§• ν™˜κ²½μ— ν†΅ν•©ν•˜μ—¬ λ¨Έμ‹ λŸ¬λ‹μ— κΈ°λ°˜ν•œ 즉각적인 μΈμ‚¬μ΄νŠΈ λ˜λŠ” 증강 κΈ°λŠ₯을 μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

YOLOv8 λͺ¨λΈμ„ TensorFlow.js둜 내보내기

YOLOv8 λͺ¨λΈμ„ TF.js둜 λ³€ν™˜ν•˜μ—¬ λͺ¨λΈ ν˜Έν™˜μ„± 및 배포 μœ μ—°μ„±μ„ ν™•μž₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ„€μΉ˜

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

μ„€μΉ˜

# 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.js format
model.export(format='tfjs')  # creates '/yolov8n_web_model'

# Load the exported TF.js model
tfjs_model = YOLO('./yolov8n_web_model')

# Run inference
results = tfjs_model('https://ultralytics.com/images/bus.jpg')
# Export a YOLOv8n PyTorch model to TF.js format
yolo export model=yolov8n.pt format=tfjs  # creates '/yolov8n_web_model'

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

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

내보낸 YOLOv8 TensorFlow .js λͺ¨λΈ λ°°ν¬ν•˜κΈ°

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

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

μš”μ•½

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

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

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



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

λŒ“κΈ€