You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2003 lines
171 KiB

{
"cells": [
{
"cell_type": "code",
"execution_count": 6,
"id": "ba956452",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using CPU. Note: This module is much faster with a GPU.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Detected text: L23무 1470], Confidence: 0.06\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import easyocr\n",
"import cv2\n",
"from matplotlib import pyplot as plt\n",
"\n",
"# 1. EasyOCR Reader 생성\n",
"# 한국어와 영어를 인식하도록 설정 ('ko'는 한글, 'en'은 영어)\n",
"reader = easyocr.Reader(['ko', 'en'], gpu=False)\n",
"\n",
"# 2. 이미지 불러오기\n",
"image_path = '/home/cuuva/다운로드/test/ocr_resized.png'\n",
"image = cv2.imread(image_path)\n",
"\n",
"# OpenCV는 BGR로 읽으므로 RGB로 변환\n",
"image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)\n",
"\n",
"# 3. OCR 수행\n",
"# detail=1이면 위치 정보와 함께 리턴\n",
"results = reader.readtext(image_rgb, detail=1)\n",
"\n",
"# 4. 결과 출력\n",
"for (bbox, text, prob) in results:\n",
" print(f\"Detected text: {text}, Confidence: {prob:.2f}\")\n",
" \n",
" # 결과 시각화\n",
" top_left = tuple(map(int, bbox[0]))\n",
" bottom_right = tuple(map(int, bbox[2]))\n",
" cv2.rectangle(image_rgb, top_left, bottom_right, (0, 255, 0), 2)\n",
" cv2.putText(image_rgb, text, (top_left[0], top_left[1]-10), \n",
" cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 2)\n",
"\n",
"# 5. 시각화\n",
"plt.figure(figsize=(10,6))\n",
"plt.imshow(image_rgb)\n",
"plt.axis('off')\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "edcfea74",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using CPU. Note: This module is much faster with a GPU.\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Inference time: 0.026 seconds\n",
"Detected text: '05무, Confidence: 0.37\n",
"Detected text: 5844], Confidence: 0.66\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import easyocr\n",
"import cv2\n",
"from matplotlib import pyplot as plt\n",
"import time # ⬅ 추가\n",
"\n",
"# 1. EasyOCR Reader 생성\n",
"reader = easyocr.Reader(['ko', 'en'], gpu=False)\n",
"\n",
"# 2. 이미지 불러오기\n",
"# image_path = '/home/cuuva/다운로드/test/ocr_resized.png'\n",
"image_path = '/home/cuuva/experiment/custom_LP_detect/ocr2.png'\n",
"image = cv2.imread(image_path)\n",
"image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)\n",
"\n",
"# ------------------------\n",
"# 3. OCR 수행 및 시간 측정\n",
"# ------------------------\n",
"start_time = time.time()\n",
"results = reader.readtext(image_rgb, detail=1)\n",
"end_time = time.time()\n",
"print(f\"Inference time: {end_time - start_time:.3f} seconds\")\n",
"\n",
"# 4. 결과 출력 및 시각화\n",
"for (bbox, text, prob) in results:\n",
" print(f\"Detected text: {text}, Confidence: {prob:.2f}\")\n",
" \n",
" # 바운딩 박스\n",
" top_left = tuple(map(int, bbox[0]))\n",
" bottom_right = tuple(map(int, bbox[2]))\n",
" cv2.rectangle(image_rgb, top_left, bottom_right, (0, 255, 0), 2)\n",
" cv2.putText(image_rgb, text, (top_left[0], top_left[1]-10), \n",
" cv2.FONT_HERSHEY_SIMPLEX, 0.8, (0, 0, 255), 2)\n",
"\n",
"# 5. 시각화\n",
"plt.figure(figsize=(10,6))\n",
"plt.imshow(image_rgb)\n",
"plt.axis('off')\n",
"plt.show()\n"
]
},
{
"cell_type": "markdown",
"id": "d0d8c590",
"metadata": {},
"source": [
"# Paddle OCR 사용\n",
"### 1. 원본 crop\n",
"### 2. 640*384 변환 후 crop"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "96833108",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_788464/4250097566.py:6: DeprecationWarning: The parameter `use_angle_cls` has been deprecated and will be removed in the future. Please use `use_textline_orientation` instead.\n",
" ocr = PaddleOCR(lang='korean', use_angle_cls=True) # CPU\n",
"\u001b[32mCreating model: ('PP-LCNet_x1_0_doc_ori', None)\u001b[0m\n",
"\u001b[32mModel files already exist. Using cached files. To redownload, please delete the directory manually: `/home/cuuva/.paddlex/official_models/PP-LCNet_x1_0_doc_ori`.\u001b[0m\n",
"\u001b[32mCreating model: ('UVDoc', None)\u001b[0m\n",
"\u001b[32mModel files already exist. Using cached files. To redownload, please delete the directory manually: `/home/cuuva/.paddlex/official_models/UVDoc`.\u001b[0m\n",
"\u001b[32mCreating model: ('PP-LCNet_x1_0_textline_ori', None)\u001b[0m\n",
"\u001b[32mModel files already exist. Using cached files. To redownload, please delete the directory manually: `/home/cuuva/.paddlex/official_models/PP-LCNet_x1_0_textline_ori`.\u001b[0m\n",
"\u001b[32mCreating model: ('PP-OCRv5_server_det', None)\u001b[0m\n",
"\u001b[32mModel files already exist. Using cached files. To redownload, please delete the directory manually: `/home/cuuva/.paddlex/official_models/PP-OCRv5_server_det`.\u001b[0m\n",
"\u001b[32mCreating model: ('korean_PP-OCRv5_mobile_rec', None)\u001b[0m\n",
"\u001b[32mModel files already exist. Using cached files. To redownload, please delete the directory manually: `/home/cuuva/.paddlex/official_models/korean_PP-OCRv5_mobile_rec`.\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Detected text: ·23무, Confidence: 0.89\n",
"Detected text: 1499, Confidence: 1.00\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from paddleocr import PaddleOCR\n",
"import cv2\n",
"from matplotlib import pyplot as plt\n",
"\n",
"# PaddleOCR 객체 생성\n",
"ocr = PaddleOCR(lang='korean', use_angle_cls=True) # CPU\n",
"\n",
"# 이미지 불러오기\n",
"image_path = '/home/cuuva/다운로드/test/ocr.png'\n",
"image = cv2.imread(image_path)\n",
"image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)\n",
"\n",
"# OCR 수행\n",
"results = ocr.predict(image_path)\n",
"\n",
"# dict 구조 확인\n",
"for page in results:\n",
" rec_texts = page['rec_texts']\n",
" rec_scores = page['rec_scores']\n",
" rec_polys = page['rec_polys']\n",
"\n",
" for text, score, poly in zip(rec_texts, rec_scores, rec_polys):\n",
" print(f\"Detected text: {text}, Confidence: {score:.2f}\")\n",
"\n",
" # 바운딩 박스 그리기\n",
" top_left = tuple(map(int, poly[0]))\n",
" bottom_right = tuple(map(int, poly[2]))\n",
" cv2.rectangle(image_rgb, top_left, bottom_right, (0, 255, 0), 2)\n",
" cv2.putText(image_rgb, text, (top_left[0], top_left[1]-10),\n",
" cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 0, 0), 2)\n",
"\n",
"# 시각화\n",
"plt.figure(figsize=(10, 6))\n",
"plt.imshow(image_rgb)\n",
"plt.axis('off')\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "a872ddff",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_788464/878629889.py:6: DeprecationWarning: The parameter `use_angle_cls` has been deprecated and will be removed in the future. Please use `use_textline_orientation` instead.\n",
" ocr = PaddleOCR(lang='korean', use_angle_cls=True) # CPU\n",
"\u001b[32mCreating model: ('PP-LCNet_x1_0_doc_ori', None)\u001b[0m\n",
"\u001b[32mModel files already exist. Using cached files. To redownload, please delete the directory manually: `/home/cuuva/.paddlex/official_models/PP-LCNet_x1_0_doc_ori`.\u001b[0m\n",
"\u001b[32mCreating model: ('UVDoc', None)\u001b[0m\n",
"\u001b[32mModel files already exist. Using cached files. To redownload, please delete the directory manually: `/home/cuuva/.paddlex/official_models/UVDoc`.\u001b[0m\n",
"\u001b[32mCreating model: ('PP-LCNet_x1_0_textline_ori', None)\u001b[0m\n",
"\u001b[32mModel files already exist. Using cached files. To redownload, please delete the directory manually: `/home/cuuva/.paddlex/official_models/PP-LCNet_x1_0_textline_ori`.\u001b[0m\n",
"\u001b[32mCreating model: ('PP-OCRv5_server_det', None)\u001b[0m\n",
"\u001b[32mModel files already exist. Using cached files. To redownload, please delete the directory manually: `/home/cuuva/.paddlex/official_models/PP-OCRv5_server_det`.\u001b[0m\n",
"\u001b[32mCreating model: ('korean_PP-OCRv5_mobile_rec', None)\u001b[0m\n",
"\u001b[32mModel files already exist. Using cached files. To redownload, please delete the directory manually: `/home/cuuva/.paddlex/official_models/korean_PP-OCRv5_mobile_rec`.\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Detected text: 23부 1499-, Confidence: 0.77\n"
]
},
{
"data": {
"image/png": "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qfyiAQAAtFM0AACAdooGAADQTtEAAADaKRoAAEA7RQMAAGinaAAAAO0UDQAAoJ2iAQAAtFM0AACAdooGAADQTtEAAADaKRoAAEA7RQMAAGi3OOkDuJiz156Nch/64Aej3J/8E3dGuaqq9Xod5Tab4yg3mw1RrqrqwQfeG+X+8v33R7nZbB7lns9mS3S73cYzf/Rdfz3KLRbZef6dv/1zUa6q6q677opyv/jwL8YzY0P4d43tFMX+wOu+LZtXVbPK7uUYnuPRJjvHqqr9/f0od3h4GOW+9KUvR7mqqquvuiZM5vvdEN6Thx/+QJS75557olxV1aOP/scod/bsdVFuPs8/Af7cXXdHuaefeTrKPfRz+T557733Rrn03fXSl74sylVVXX/9DVHuX378V6PcYrGMclVVe3unotw0jVHuz7/tL0S5qqpnnn4mym3D909VVW2y2Djm+92VyC8aAABAO0UDAABop2gAAADtFA0AAKCdogEAALRTNAAAgHaKBgAA0E7RAAAA2ikaAABAO0UDAABop2gAAADtFA0AAKCdogEAALRbnPQBXMx1152Nct/7p783yi2XQ5SrqhrHKcqtVqso99M//WCUq6r6/rvujnIHp05HufTaVFVdODyMcr/+65+KZ955551R7vz556Lc2eu/KcpVVe0fnIlyP/zX/kaU+8AHHo5yVVV/Kn0u1+sot638eR7m8yi3XGTP83i8iXJVVecvZM/I/v5+lPvC7/7nKFdV9a2ve12UW6/34pmf+9znotze/qko9+Ff+qUoV1X15JNPRrmbb/49We7lL49yVfm7axiy5/K1r31tlKuquummm6LcZrONcuM4RrmqqoOD7D179ux1Ue6OO94Y5aqqxim7Pul1fenLsnVeVVXhZ8hv/cZv5TNX2b41DC+u3wBeXGcDAABcERQNAACgnaIBAAC0UzQAAIB2igYAANBO0QAAANopGgAAQDtFAwAAaKdoAAAA7RQNAACgnaIBAAC0UzQAAIB2igYAANBO0QAAANotTvoALmYaxyg3n2X9KZ1XVbVaZZfyE5/4tSh3+uAgylVV/auPfzzKLZerKPe2e94e5Z6fuY5yv/GZz8QzH/nN34xy04ULUe7dDzwQ5aqqjo6OotxivR/lHn/yq1GuqursDTdGufMXDqPcdpyiXFXVVEOWC2cOQ/43n9k8O9bDo+Mo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",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from paddleocr import PaddleOCR\n",
"import cv2\n",
"from matplotlib import pyplot as plt\n",
"\n",
"# PaddleOCR 객체 생성\n",
"ocr = PaddleOCR(lang='korean', use_angle_cls=True) # CPU\n",
"\n",
"# 이미지 불러오기\n",
"image_path = '/home/cuuva/다운로드/test/ocr_resized.png'\n",
"image = cv2.imread(image_path)\n",
"image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)\n",
"\n",
"# OCR 수행\n",
"results = ocr.predict(image_path)\n",
"\n",
"# dict 구조 확인\n",
"for page in results:\n",
" rec_texts = page['rec_texts']\n",
" rec_scores = page['rec_scores']\n",
" rec_polys = page['rec_polys']\n",
"\n",
" for text, score, poly in zip(rec_texts, rec_scores, rec_polys):\n",
" print(f\"Detected text: {text}, Confidence: {score:.2f}\")\n",
"\n",
" # 바운딩 박스 그리기\n",
" top_left = tuple(map(int, poly[0]))\n",
" bottom_right = tuple(map(int, poly[2]))\n",
" cv2.rectangle(image_rgb, top_left, bottom_right, (0, 255, 0), 2)\n",
" cv2.putText(image_rgb, text, (top_left[0], top_left[1]-10),\n",
" cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 0, 0), 2)\n",
"\n",
"# 시각화\n",
"plt.figure(figsize=(10, 6))\n",
"plt.imshow(image_rgb)\n",
"plt.axis('off')\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "3a31a096",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_788464/2680696544.py:7: DeprecationWarning: The parameter `use_angle_cls` has been deprecated and will be removed in the future. Please use `use_textline_orientation` instead.\n",
" ocr = PaddleOCR(lang='korean', use_angle_cls=True) # CPU\n",
"\u001b[32mCreating model: ('PP-LCNet_x1_0_doc_ori', None)\u001b[0m\n",
"\u001b[32mModel files already exist. Using cached files. To redownload, please delete the directory manually: `/home/cuuva/.paddlex/official_models/PP-LCNet_x1_0_doc_ori`.\u001b[0m\n",
"\u001b[32mCreating model: ('UVDoc', None)\u001b[0m\n",
"\u001b[32mModel files already exist. Using cached files. To redownload, please delete the directory manually: `/home/cuuva/.paddlex/official_models/UVDoc`.\u001b[0m\n",
"\u001b[32mCreating model: ('PP-LCNet_x1_0_textline_ori', None)\u001b[0m\n",
"\u001b[32mModel files already exist. Using cached files. To redownload, please delete the directory manually: `/home/cuuva/.paddlex/official_models/PP-LCNet_x1_0_textline_ori`.\u001b[0m\n",
"\u001b[32mCreating model: ('PP-OCRv5_server_det', None)\u001b[0m\n",
"\u001b[32mModel files already exist. Using cached files. To redownload, please delete the directory manually: `/home/cuuva/.paddlex/official_models/PP-OCRv5_server_det`.\u001b[0m\n",
"\u001b[32mCreating model: ('korean_PP-OCRv5_mobile_rec', None)\u001b[0m\n",
"\u001b[32mModel files already exist. Using cached files. To redownload, please delete the directory manually: `/home/cuuva/.paddlex/official_models/korean_PP-OCRv5_mobile_rec`.\u001b[0m\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Inference time: 0.286 seconds\n",
"Detected text: 23부 1499-, Confidence: 0.77\n"
]
},
{
"data": {
"image/png": "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qfyiAQAAtFM0AACAdooGAADQTtEAAADaKRoAAEA7RQMAAGinaAAAAO0UDQAAoJ2iAQAAtFM0AACAdooGAADQTtEAAADaKRoAAEA7RQMAAGi3OOkDuJiz156Nch/64Aej3J/8E3dGuaqq9Xod5Tab4yg3mw1RrqrqwQfeG+X+8v33R7nZbB7lns9mS3S73cYzf/Rdfz3KLRbZef6dv/1zUa6q6q677opyv/jwL8YzY0P4d43tFMX+wOu+LZtXVbPK7uUYnuPRJjvHqqr9/f0od3h4GOW+9KUvR7mqqquvuiZM5vvdEN6Thx/+QJS75557olxV1aOP/scod/bsdVFuPs8/Af7cXXdHuaefeTrKPfRz+T557733Rrn03fXSl74sylVVXX/9DVHuX378V6PcYrGMclVVe3unotw0jVHuz7/tL0S5qqpnnn4mym3D909VVW2y2Djm+92VyC8aAABAO0UDAABop2gAAADtFA0AAKCdogEAALRTNAAAgHaKBgAA0E7RAAAA2ikaAABAO0UDAABop2gAAADtFA0AAKCdogEAALRbnPQBXMx1152Nct/7p783yi2XQ5SrqhrHKcqtVqso99M//WCUq6r6/rvujnIHp05HufTaVFVdODyMcr/+65+KZ955551R7vz556Lc2eu/KcpVVe0fnIlyP/zX/kaU+8AHHo5yVVV/Kn0u1+sot638eR7m8yi3XGTP83i8iXJVVecvZM/I/v5+lPvC7/7nKFdV9a2ve12UW6/34pmf+9znotze/qko9+Ff+qUoV1X15JNPRrmbb/49We7lL49yVfm7axiy5/K1r31tlKuquummm6LcZrONcuM4RrmqqoOD7D179ux1Ue6OO94Y5aqqxim7Pul1fenLsnVeVVXhZ8hv/cZv5TNX2b41DC+u3wBeXGcDAABcERQNAACgnaIBAAC0UzQAAIB2igYAANBO0QAAANopGgAAQDtFAwAAaKdoAAAA7RQNAACgnaIBAAC0UzQAAIB2igYAANBO0QAAANotTvoALmYaxyg3n2X9KZ1XVbVaZZfyE5/4tSh3+uAgylVV/auPfzzKLZerKPe2e94e5Z6fuY5yv/GZz8QzH/nN34xy04ULUe7dDzwQ5aqqjo6OotxivR/lHn/yq1GuqursDTdGufMXDqPcdpyiXFXVVEOWC2cOQ/43n9k8O9bDo+Mo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",
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from paddleocr import PaddleOCR\n",
"import cv2\n",
"from matplotlib import pyplot as plt\n",
"import time # ⬅ 추가\n",
"\n",
"# PaddleOCR 객체 생성\n",
"ocr = PaddleOCR(lang='korean', use_angle_cls=True) # CPU\n",
"\n",
"# 이미지 불러오기\n",
"image_path = '/home/cuuva/다운로드/test/ocr_resized.png'\n",
"image = cv2.imread(image_path)\n",
"image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)\n",
"\n",
"# ------------------------\n",
"# Inference 시간 측정 시작\n",
"# ------------------------\n",
"start_time = time.time()\n",
"results = ocr.predict(image_path)\n",
"end_time = time.time()\n",
"print(f\"Inference time: {end_time - start_time:.3f} seconds\")\n",
"# ------------------------\n",
"\n",
"# OCR 결과 출력 및 시각화\n",
"for page in results:\n",
" rec_texts = page['rec_texts']\n",
" rec_scores = page['rec_scores']\n",
" rec_polys = page['rec_polys']\n",
"\n",
" for text, score, poly in zip(rec_texts, rec_scores, rec_polys):\n",
" print(f\"Detected text: {text}, Confidence: {score:.2f}\")\n",
"\n",
" # 바운딩 박스 그리기\n",
" top_left = tuple(map(int, poly[0]))\n",
" bottom_right = tuple(map(int, poly[2]))\n",
" cv2.rectangle(image_rgb, top_left, bottom_right, (0, 255, 0), 2)\n",
" cv2.putText(image_rgb, text, (top_left[0], top_left[1]-10),\n",
" cv2.FONT_HERSHEY_SIMPLEX, 0.8, (255, 0, 0), 2)\n",
"\n",
"# 시각화\n",
"plt.figure(figsize=(10, 6))\n",
"plt.imshow(image_rgb)\n",
"plt.axis('off')\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "5abda048",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"PaddlePaddle version: 3.2.2\n",
"Use GPU: False\n"
]
}
],
"source": [
"import paddle\n",
"print(\"PaddlePaddle version:\", paddle.__version__)\n",
"print(\"Use GPU:\", paddle.is_compiled_with_cuda())"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "9870ce12",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"🎬 영상 처리 시작: /home/cuuva/다운로드/car_lp.mov\n",
"🎯 저장 경로: /home/cuuva/다운로드/lp_infer.mp4\n",
"\n",
"0: 384x640 (no detections), 16.8ms\n",
"Speed: 1.3ms preprocess, 16.8ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.1ms\n",
"Speed: 2.1ms preprocess, 2.1ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.1ms\n",
"Speed: 0.6ms preprocess, 2.1ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.2ms\n",
"Speed: 0.7ms preprocess, 2.2ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.6ms preprocess, 2.0ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.6ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.3ms\n",
"Speed: 0.5ms preprocess, 2.3ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.1ms\n",
"Speed: 0.5ms preprocess, 2.1ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.4ms\n",
"Speed: 0.5ms preprocess, 2.4ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.6ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.3ms\n",
"Speed: 0.6ms preprocess, 2.3ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.2ms\n",
"Speed: 0.6ms preprocess, 2.2ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.7ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"✅ 처리 프레임: 50\n",
"\n",
"0: 384x640 (no detections), 2.1ms\n",
"Speed: 0.6ms preprocess, 2.1ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.6ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.1ms\n",
"Speed: 0.6ms preprocess, 2.1ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.6ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.6ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"✅ 처리 프레임: 100\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 8 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.7ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 3.1ms\n",
"Speed: 0.9ms preprocess, 3.1ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.3ms\n",
"Speed: 0.7ms preprocess, 2.3ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.3ms\n",
"Speed: 0.6ms preprocess, 2.3ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.3ms\n",
"Speed: 0.7ms preprocess, 2.3ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"✅ 처리 프레임: 150\n",
"\n",
"0: 384x640 2 lps, 2.3ms\n",
"Speed: 0.7ms preprocess, 2.3ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.5ms\n",
"Speed: 0.8ms preprocess, 2.5ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.0ms\n",
"Speed: 0.6ms preprocess, 2.0ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.1ms\n",
"Speed: 0.5ms preprocess, 2.1ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.6ms\n",
"Speed: 0.6ms preprocess, 2.6ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.1ms\n",
"Speed: 0.5ms preprocess, 2.1ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.1ms\n",
"Speed: 0.5ms preprocess, 2.1ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.1ms\n",
"Speed: 0.5ms preprocess, 2.1ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.1ms\n",
"Speed: 0.5ms preprocess, 2.1ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.1ms\n",
"Speed: 0.6ms preprocess, 2.1ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 (no detections), 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.1ms\n",
"Speed: 0.5ms preprocess, 2.1ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.2ms\n",
"Speed: 0.6ms preprocess, 2.2ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.1ms\n",
"Speed: 0.6ms preprocess, 2.1ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.1ms\n",
"Speed: 0.5ms preprocess, 2.1ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.1ms\n",
"Speed: 0.5ms preprocess, 2.1ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.2ms\n",
"Speed: 0.6ms preprocess, 2.2ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.1ms\n",
"Speed: 0.6ms preprocess, 2.1ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.2ms\n",
"Speed: 0.5ms preprocess, 2.2ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.8ms preprocess, 2.0ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.6ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"✅ 처리 프레임: 200\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.7ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.3ms\n",
"Speed: 0.6ms preprocess, 2.3ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 2.3ms\n",
"Speed: 0.9ms preprocess, 2.3ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 2.2ms\n",
"Speed: 0.7ms preprocess, 2.2ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.2ms\n",
"Speed: 0.7ms preprocess, 2.2ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.2ms\n",
"Speed: 0.7ms preprocess, 2.2ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 2.2ms\n",
"Speed: 0.6ms preprocess, 2.2ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 2.4ms\n",
"Speed: 0.7ms preprocess, 2.4ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 2.4ms\n",
"Speed: 0.8ms preprocess, 2.4ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 2.1ms\n",
"Speed: 0.7ms preprocess, 2.1ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 2.2ms\n",
"Speed: 0.5ms preprocess, 2.2ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 8 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"✅ 처리 프레임: 250\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 8 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 8 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 1.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 8 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 2.0ms\n",
"Speed: 0.8ms preprocess, 2.0ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 2.0ms\n",
"Speed: 0.8ms preprocess, 2.0ms inference, 1.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 8 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 2.1ms\n",
"Speed: 0.8ms preprocess, 2.1ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 8 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 2.4ms\n",
"Speed: 0.7ms preprocess, 2.4ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 2.1ms\n",
"Speed: 0.5ms preprocess, 2.1ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"✅ 처리 프레임: 300\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 1.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 2.5ms\n",
"Speed: 0.5ms preprocess, 2.5ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 2.1ms\n",
"Speed: 0.6ms preprocess, 2.1ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"✅ 처리 프레임: 350\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.6ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 1.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 8 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.2ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 7 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 5 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 1.0ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 6 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.9ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.1ms\n",
"Speed: 0.8ms preprocess, 2.1ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"✅ 처리 프레임: 400\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.8ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.6ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.6ms preprocess, 2.0ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.3ms\n",
"Speed: 0.4ms preprocess, 2.3ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.3ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.7ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 2.0ms\n",
"Speed: 0.8ms preprocess, 2.0ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 1 lp, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"✅ 처리 프레임: 450\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 2.2ms\n",
"Speed: 0.5ms preprocess, 2.2ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 2.0ms\n",
"Speed: 0.5ms preprocess, 2.0ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.8ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 2.1ms\n",
"Speed: 0.6ms preprocess, 2.1ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 4 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 2 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.4ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.5ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 1.1ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.6ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.5ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"\n",
"0: 384x640 3 lps, 1.9ms\n",
"Speed: 0.4ms preprocess, 1.9ms inference, 0.7ms postprocess per image at shape (1, 3, 384, 640)\n",
"🎉 영상 저장 완료: /home/cuuva/다운로드/lp_infer.mp4\n"
]
}
],
"source": [
"from ultralytics import YOLO\n",
"import cv2\n",
"\n",
"# ----------------------------\n",
"# 1. 모델 로드\n",
"# ----------------------------\n",
"model_path = \"/home/cuuva/experiment/custom_LP_detect/lp_detect/epo_200_frac_0_22/weights/best_lp_detect.pt\"\n",
"model = YOLO(model_path)\n",
"\n",
"# ----------------------------\n",
"# 2. 입력 영상\n",
"# ----------------------------\n",
"video_path = \"/home/cuuva/다운로드/car_lp.mov\"\n",
"cap = cv2.VideoCapture(video_path)\n",
"\n",
"# ----------------------------\n",
"# 3. 출력 영상 설정\n",
"# ----------------------------\n",
"output_path = \"/home/cuuva/다운로드/lp_infer.mp4\"\n",
"fourcc = cv2.VideoWriter_fourcc(*\"mp4v\")\n",
"fps = cap.get(cv2.CAP_PROP_FPS)\n",
"width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))\n",
"height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))\n",
"out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))\n",
"\n",
"print(f\"🎬 영상 처리 시작: {video_path}\")\n",
"print(f\"🎯 저장 경로: {output_path}\")\n",
"\n",
"# ----------------------------\n",
"# 4. 프레임 반복하며 inference\n",
"# ----------------------------\n",
"frame_idx = 0\n",
"while cap.isOpened():\n",
" ret, frame = cap.read()\n",
" if not ret:\n",
" break\n",
"\n",
" frame_idx += 1\n",
"\n",
" # YOLO inference\n",
" results = model(frame)\n",
"\n",
" # bbox, label, confidence 시각화된 프레임\n",
" annotated_frame = results[0].plot()\n",
"\n",
" # 영상 저장\n",
" out.write(annotated_frame)\n",
"\n",
" if frame_idx % 50 == 0:\n",
" print(f\"✅ 처리 프레임: {frame_idx}\")\n",
"\n",
"# ----------------------------\n",
"# 5. 자원 해제\n",
"# ----------------------------\n",
"cap.release()\n",
"out.release()\n",
"print(f\"🎉 영상 저장 완료: {output_path}\")\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bbeff581",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "1stagedetect",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.18"
}
},
"nbformat": 4,
"nbformat_minor": 5
}