{"id":856,"date":"2025-10-10T19:11:15","date_gmt":"2025-10-10T10:11:15","guid":{"rendered":"http:\/\/practical.kr\/?p=856"},"modified":"2025-10-10T19:33:28","modified_gmt":"2025-10-10T10:33:28","slug":"%ec%b0%a8%eb%9f%89-%ec%b6%94%ec%a0%81-%ec%8b%9c%ec%8a%a4%ed%85%9c-supervision%ea%b3%bc-bytetracker-%ed%99%9c%ec%9a%a9","status":"publish","type":"post","link":"http:\/\/practical.kr\/?p=856","title":{"rendered":"\ucc28\ub7c9 \ucd94\uc801 \uc2dc\uc2a4\ud15c: Supervision\uacfc ByteTracker \ud65c\uc6a9"},"content":{"rendered":"\n<figure class=\"wp-block-image aligncenter\"><a href=\"https:\/\/www.youtube.com\/watch?v=_dNBDpookpE\"><img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/_dNBDpookpE\/0.jpg\" alt=\"\ucc28\ub7c9 \ucd94\uc801 \uc2dc\uc2a4\ud15c: Supervision\uacfc ByteTracker \ud65c\uc6a9\n\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\uac1c\uc694<\/h2>\n\n\n\n<p>\uadf8\ub3d9\uc548 opencv\ub97c \uc774\uc6a9\ud558\uc11c \uc5ec\ub7ec\uac00\uc9c0 \ubc29\ubc95\uc73c\ub85c Object Tracking\uc744 \uad6c\ud604\ud574\ubd24\uc5c8\ub294\ub370, \uba70\uce60\uc804 \uc544\ub798 \uc774\ubbf8\uc9c0\ub97c \ubcf4\uace0 Supervision\uacfc ByteTracker\uc5d0 \uad00\uc2ec\uc774 \uc0dd\uaca8\uc11c \ucc28\ub7c9 \ub3c4\ub85c\uc758 ROI\uc640 \ucc28\ub7c9 \ud2b8\ub798\ud0b9\uc744 \uad6c\ud604\ud574\ubd24\ub2e4. \uacb0\ub860\uc801\uc73c\ub85c \uacb0\uacfc\uac00 \ub9e4\uc6b0 \ud6cc\ub96d\ud558\uc5ec \uc815\ub9ac\ud588\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/velog.velcdn.com\/images\/rtlink\/post\/5bb709e4-a20c-44f9-9ebc-291adf0b0ff9\/image.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\uc2dc\uc2a4\ud15c \uc544\ud0a4\ud14d\ucc98<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ud575\uc2ec \uad6c\uc131 \uc694\uc18c<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>CarDetector<\/strong>: YOLO \uae30\ubc18 \ucc28\ub7c9 \uac10\uc9c0 \ubaa8\ub378<\/li>\n\n\n\n<li><strong>ByteTracker<\/strong>: \ub2e4\uc911 \uac1d\uccb4 \ucd94\uc801 \uc54c\uace0\ub9ac\uc998<\/li>\n\n\n\n<li><strong>PolygonZone<\/strong>: \ub2e4\uc911 \uad00\uc2ec \uc601\uc5ed(ROI) \uad00\ub9ac<\/li>\n\n\n\n<li><strong>\uc2e4\uc2dc\uac04 \uc2dc\uac01\ud654<\/strong>: OpenCV \uae30\ubc18 \uacb0\uacfc \ud45c\uc2dc<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">\uc8fc\uc694 \ud2b9\uc9d5<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ub2e4\uc911 \ud3f4\ub9ac\uace4 \uc9c0\uc6d0<\/strong>: \uc5ec\ub7ec \uac1c\uc758 \uad00\uc2ec \uc601\uc5ed\uc744 \ub3d9\uc2dc\uc5d0 \ubaa8\ub2c8\ud130\ub9c1<\/li>\n\n\n\n<li><strong>\uc2e4\uc2dc\uac04 \uce74\uc6b4\ud305<\/strong>: \uac01 \uc874\ubcc4 \uc9c4\uc785 \ucc28\ub7c9 \uc218 \ucd94\uc801<\/li>\n\n\n\n<li><strong>\uc911\ubcf5 \ubc29\uc9c0<\/strong>: \ub3d9\uc77c \ucc28\ub7c9\uc758 \uc911\ubcf5 \uce74\uc6b4\ud305 \ubc29\uc9c0<\/li>\n\n\n\n<li><strong>\uc720\uc5f0\ud55c \ub9c8\uc2a4\ud06c \ub85c\ub529<\/strong>: \uae30\uc874 \ud615\uc2dd\uacfc \uc0c8\ub85c\uc6b4 \ud615\uc2dd \ubaa8\ub450 \uc9c0\uc6d0<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/velog.velcdn.com\/images\/rtlink\/post\/245bb84e-0ee1-4dfe-96dd-3cf8f5270cf6\/image.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">\ud575\uc2ec \uad6c\ud604 \ubd84\uc11d<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. \ub2e4\uc911 \ud3f4\ub9ac\uace4 \uc874 \uc124\uc815<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># PolygonZone \uc0dd\uc131 (\uc5ec\ub7ec \ud3f4\ub9ac\uace4 \uc9c0\uc6d0)\nzones = []\nzone_annotators = []\nzone_counted_ids = []  # \uac01 Zone\ubcc4\ub85c \uce74\uc6b4\ud2b8\ub41c \ucc28\ub7c9 ID \ucd94\uc801\nzone_total_counts = []  # \uac01 Zone\ubcc4 \ucd1d \uc9c4\uc785 \ucc28\ub7c9 \uc218\n\nif road_polygons:\n    for i, polygon in enumerate(road_polygons):\n        zone = sv.PolygonZone(polygon=polygon)\n        zone_annotator = sv.PolygonZoneAnnotator(\n            zone=zone,\n            color=sv.Color.RED,\n            thickness=2,\n            text_thickness=2,\n            text_scale=0.5\n        )\n        zones.append(zone)\n        zone_annotators.append(zone_annotator)\n        zone_counted_ids.append(set())  # \uc774\ubbf8 \uce74\uc6b4\ud2b8\ub41c ID\ub97c \uc800\uc7a5\ud560 set\n        zone_total_counts.append(0)  # \ucd1d \uc9c4\uc785 \ucc28\ub7c9 \uc218 \ucd08\uae30\ud654<\/pre>\n\n\n\n<p><strong>\ud575\uc2ec \ud3ec\uc778\ud2b8:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uac01 \uc874\ub9c8\ub2e4 \ub3c5\ub9bd\uc801\uc778 \uce74\uc6b4\ud305 \uc2dc\uc2a4\ud15c \uad6c\ucd95<\/li>\n\n\n\n<li><code>set()<\/code> \uc790\ub8cc\uad6c\uc870\ub85c \uc911\ubcf5 \uce74\uc6b4\ud305 \ubc29\uc9c0<\/li>\n\n\n\n<li>\uc2dc\uac01\uc801 \uad6c\ubd84\uc744 \uc704\ud55c \uac1c\ubcc4 \uc5b4\ub178\ud14c\uc774\ud130 \uc124\uc815<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. ByteTracker \ucd08\uae30\ud654 \ubc0f \ucd5c\uc801\ud654<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">tracker = sv.ByteTrack(\n    track_activation_threshold=config.TRACK_ACTIVATION_THRESHOLD,\n    lost_track_buffer=config.LOST_TRACK_BUFFER,\n    minimum_matching_threshold=config.MINIMUM_MATCHING_THRESHOLD,\n    frame_rate=video_info.fps\n)<\/pre>\n\n\n\n<p><strong>\ucd5c\uc801\ud654 \uc804\ub7b5:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>track_activation_threshold<\/strong>: \ub192\uc740 \uc2e0\ub8b0\ub3c4 \uc784\uacc4\uac12 (\uae30\ubcf8 0.6)<\/li>\n\n\n\n<li><strong>lost_track_buffer<\/strong>: \uc190\uc2e4\ub41c \ud2b8\ub799 \ubcf5\uad6c \uc2dc\uac04 (\uae30\ubcf8 30\ud504\ub808\uc784)<\/li>\n\n\n\n<li><strong>minimum_matching_threshold<\/strong>: \ub9e4\uce6d \uc815\ud655\ub3c4 (\uae30\ubcf8 0.8)<\/li>\n\n\n\n<li><strong>frame_rate<\/strong>: \uc2e4\uc81c \ube44\ub514\uc624 FPS\uc5d0 \ub9de\ucd98 \uc124\uc815<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. \ub2e4\uc911 \uc874 \uac10\uc9c0 \ubc0f \ubcd1\ud569<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \uac01 \ud3f4\ub9ac\uace4\uc5d0\uc11c \ub3c5\ub9bd\uc801\uc73c\ub85c \uac10\uc9c0\nall_detections = []\n\nif road_polygons:\n    for polygon in road_polygons:\n        detections_in_zone = car_detector.detect(frame, polygon)\n        if len(detections_in_zone) > 0:\n            all_detections.append(detections_in_zone)\n\n    # \ubaa8\ub4e0 \ud3f4\ub9ac\uace4\uc758 \uac10\uc9c0 \uacb0\uacfc\ub97c \ud569\uce68\n    if all_detections:\n        detections = sv.Detections.merge(all_detections)\n    else:\n        detections = sv.Detections.empty()<\/pre>\n\n\n\n<p><strong>\uc7a5\uc810:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\uac01 \uc874\uc5d0\uc11c \ub3c5\ub9bd\uc801\uc73c\ub85c \uac10\uc9c0\ud558\uc5ec \uc815\ud655\ub3c4 \ud5a5\uc0c1<\/li>\n\n\n\n<li><code>sv.Detections.merge()<\/code>\ub85c \ud6a8\uc728\uc801\uc778 \uacb0\uacfc \ubcd1\ud569<\/li>\n\n\n\n<li>\ube48 \uac10\uc9c0 \uacb0\uacfc\uc5d0 \ub300\ud55c \uc548\uc804\ud55c \ucc98\ub9ac<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4. \uc911\ubcf5 \ubc29\uc9c0 \uce74\uc6b4\ud305 \uc2dc\uc2a4\ud15c<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># Zone\ubcc4 \uc9c4\uc785 \ucc28\ub7c9 \uce74\uc6b4\ud2b8 (1\ud68c\ub9cc)\nif zones and tracked_detections.tracker_id is not None:\n    for idx, zone in enumerate(zones):\n        zone.trigger(detections=tracked_detections)\n        mask = zone.trigger(detections=tracked_detections)\n\n        for detection_idx, is_in_zone in enumerate(mask):\n            if is_in_zone:\n                tracker_id = tracked_detections.tracker_id[detection_idx]\n\n                # \uc544\uc9c1 \uce74\uc6b4\ud2b8\ub418\uc9c0 \uc54a\uc740 \ucc28\ub7c9\uc774\uba74 \uce74\uc6b4\ud2b8\n                if tracker_id not in zone_counted_ids[idx]:\n                    zone_counted_ids[idx].add(tracker_id)\n                    zone_total_counts[idx] += 1<\/pre>\n\n\n\n<p><strong>\ud575\uc2ec \uc54c\uace0\ub9ac\uc998:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>set()<\/code> \uc790\ub8cc\uad6c\uc870\ub85c \uc774\ubbf8 \uce74\uc6b4\ud2b8\ub41c ID \ucd94\uc801<\/li>\n\n\n\n<li>\uac01 \uc874\ubcc4\ub85c \ub3c5\ub9bd\uc801\uc778 \uce74\uc6b4\ud305 \uc2dc\uc2a4\ud15c<\/li>\n\n\n\n<li>\uc2e4\uc2dc\uac04 \uc911\ubcf5 \ubc29\uc9c0 \uba54\ucee4\ub2c8\uc998<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">ByteTracker\uc758 \uc2e4\uc804 \ud65c\uc6a9<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\uae30\uc874 \ubc29\ubc95\uc758 \ud55c\uacc4<\/h3>\n\n\n\n<p>\uc804\ud1b5\uc801\uc778 \uac1d\uccb4 \ucd94\uc801 \ubc29\ubc95\ub4e4\uc740 \ub192\uc740 \uc2e0\ub8b0\ub3c4 \uc810\uc218\ub97c \uac00\uc9c4 \uac10\uc9c0 \ubc15\uc2a4\ub9cc \uc5f0\uad00\uc2dc\ucf1c ID\ub97c \ubd80\uc5ec\ud55c\ub2e4. \uc774\ub85c \uc778\ud574:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uac00\ub824\uc9c4 \uac1d\uccb4 \uc190\uc2e4<\/strong>: \ub2e4\ub978 \uac1d\uccb4\uc5d0 \uc758\ud574 \uac00\ub824\uc9c4 \ucc28\ub7c9\uc740 \ub0ae\uc740 \uc2e0\ub8b0\ub3c4\ub85c \ucd94\uc801\uc5d0\uc11c \uc81c\uc678<\/li>\n\n\n\n<li><strong>\uada4\uc801 \ub2e8\ud3b8\ud654<\/strong>: \uc77c\uc2dc\uc801\uc73c\ub85c \uac00\ub824\uc84c\ub2e4\uac00 \ub2e4\uc2dc \ub098\ud0c0\ub098\ub294 \ucc28\ub7c9\uc774 \uc0c8\ub85c\uc6b4 ID\ub97c \ubc1b\uc74c<\/li>\n\n\n\n<li><strong>False Negative \uc99d\uac00<\/strong>: \uc2e4\uc81c \uc874\uc7ac\ud558\ub294 \ucc28\ub7c9\uc744 \ub193\uce58\ub294 \uacbd\uc6b0 \ubc1c\uc0dd<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">ByteTracker\uc758 \ud574\uacb0\ucc45<\/h3>\n\n\n\n<p>ByteTracker\ub294 <strong>2\ub2e8\uacc4 \uc5f0\uad00 \ubc29\uc2dd<\/strong>\uc744 \uc0ac\uc6a9\ud55c\ub2e4:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>1\ub2e8\uacc4<\/strong>: \ub192\uc740 \uc2e0\ub8b0\ub3c4 \uac10\uc9c0 \ubc15\uc2a4(&gt;0.6)\ub97c \uae30\uc874 \ud2b8\ub799\uacfc \ub9e4\uce6d<\/li>\n\n\n\n<li><strong>2\ub2e8\uacc4<\/strong>: \ub0ae\uc740 \uc2e0\ub8b0\ub3c4 \uac10\uc9c0 \ubc15\uc2a4\ub97c 1\ub2e8\uacc4\uc5d0\uc11c \ub9e4\uce6d\ub418\uc9c0 \uc54a\uc740 \ud2b8\ub799\uacfc \uc5f0\uad00<\/li>\n<\/ol>\n\n\n\n<p>\uc774\ub97c \ud1b5\ud574 \uac00\ub824\uc9c4 \ucc28\ub7c9\ub3c4 \ud6a8\uacfc\uc801\uc73c\ub85c \ucd94\uc801\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc2e4\uc2dc\uac04 \uc2dc\uac01\ud654 \ubc0f \ubaa8\ub2c8\ud130\ub9c1<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ub3d9\uc801 \uc815\ubcf4 \ud45c\uc2dc<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\"># \ud504\ub808\uc784 \uc815\ubcf4 \ud45c\uc2dc\ntotal_count = sum(zone_total_counts) if zones else 0\ninfo_text = f\"Frame: {frame_count} | Detected: {len(detections)} | Tracked: {len(tracked_detections)} | Total Entered: {total_count}\"\ncv2.putText(annotated_frame, info_text, (10, 30), \n           cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1)\n\n# \uac01 Zone\ubcc4 \ucc28\ub7c9 \uc218 \ud45c\uc2dc\nif zones:\n    for idx, zone in enumerate(zones):\n        zone_text = f\"Zone {idx + 1}: {zone.current_count} inside | {zone_total_counts[idx]} total entered\"\n        cv2.putText(annotated_frame, zone_text, (10, 70 + idx * 40), \n                   cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 255), 1)<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\uc131\ub2a5 \ucd5c\uc801\ud654 \uc804\ub7b5<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. \uba54\ubaa8\ub9ac \ud6a8\uc728\uc131<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc9c0\uc5f0 \ucd08\uae30\ud654<\/strong>: \ud544\uc694\ud560 \ub54c\ub9cc \ubaa8\ub378 \ub85c\ub4dc<\/li>\n\n\n\n<li><strong>\uc801\uc808\ud55c \ubc84\ud37c \ud06c\uae30<\/strong>: <code>lost_track_buffer<\/code> \uc870\uc815<\/li>\n\n\n\n<li><strong>\ud6a8\uc728\uc801\uc778 \uc790\ub8cc\uad6c\uc870<\/strong>: <code>set()<\/code> \uc0ac\uc6a9\uc73c\ub85c \uc911\ubcf5 \uac80\uc0ac \ucd5c\uc801\ud654<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2. \uc2e4\uc2dc\uac04 \ucc98\ub9ac<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ud504\ub808\uc784 \ud06c\uae30 \uc870\uc815<\/strong>: \ud070 \ud574\uc0c1\ub3c4 \ube44\ub514\uc624 \uc790\ub3d9 \uc2a4\ucf00\uc77c\ub9c1<\/li>\n\n\n\n<li><strong>\uc870\uac74\ubd80 \ucc98\ub9ac<\/strong>: \uc874\uc774 \uc788\uc744 \ub54c\ub9cc \ucd94\uac00 \uc5f0\uc0b0 \uc218\ud589<\/li>\n\n\n\n<li><strong>\ubc30\uce58 \ucc98\ub9ac<\/strong>: \uc5ec\ub7ec \uc874\uc758 \uac10\uc9c0 \uacb0\uacfc\ub97c \ud55c \ubc88\uc5d0 \ubcd1\ud569<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3. \uc815\ud655\ub3c4 \ud5a5\uc0c1<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ub2e4\uc911 \uc874 \uac10\uc9c0<\/strong>: \uac01 \uc874\uc5d0\uc11c \ub3c5\ub9bd\uc801\uc73c\ub85c \uac10\uc9c0<\/li>\n\n\n\n<li><strong>\uc2e0\ub8b0\ub3c4 \uae30\ubc18 \ud544\ud130\ub9c1<\/strong>: \ub0ae\uc740 \uc2e0\ub8b0\ub3c4 \uac10\uc9c0 \uc81c\uac70<\/li>\n\n\n\n<li><strong>\ud2b8\ub799 \uc9c0\uc18d\uc131<\/strong>: <code>lost_track_buffer<\/code>\ub85c \uc77c\uc2dc\uc801 \uc190\uc2e4 \ubcf5\uad6c<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\uc124\uce58 \ubc0f \uc2e4\ud589<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ud544\uc218 \ud328\ud0a4\uc9c0<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pip install supervision ultralytics opencv-python numpy<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\uacb0\uacfc \ubd84\uc11d<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\uc131\ub2a5 \uc9c0\ud45c<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc2e4\uc2dc\uac04 \ucc98\ub9ac<\/strong>: 30 FPS \uc774\uc0c1 \uc720\uc9c0<\/li>\n\n\n\n<li><strong>\uc815\ud655\ub3c4<\/strong>: \uac00\ub824\uc9c4 \uac1d\uccb4\ub3c4 \ud6a8\uacfc\uc801 \ucd94\uc801<\/li>\n\n\n\n<li><strong>\uc548\uc815\uc131<\/strong>: \uc7a5\uc2dc\uac04 \uc2e4\ud589\uc5d0\uc11c\ub3c4 \uba54\ubaa8\ub9ac \ub204\uc218 \uc5c6\uc74c<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\uac1c\uc694 \uadf8\ub3d9\uc548 opencv\ub97c \uc774\uc6a9\ud558\uc11c \uc5ec\ub7ec\uac00\uc9c0 \ubc29\ubc95\uc73c\ub85c Object Tracking\uc744 \uad6c\ud604\ud574\ubd24\uc5c8\ub294\ub370, \uba70\uce60\uc804 \uc544\ub798 \uc774\ubbf8\uc9c0\ub97c \ubcf4\uace0 Supervision\uacfc ByteTracker\uc5d0 \uad00\uc2ec\uc774 \uc0dd\uaca8\uc11c \ucc28\ub7c9 \ub3c4\ub85c\uc758 ROI\uc640 \ucc28\ub7c9 \ud2b8\ub798\ud0b9\uc744 \uad6c\ud604\ud574\ubd24\ub2e4. \uacb0\ub860\uc801\uc73c\ub85c \uacb0\uacfc\uac00 \ub9e4\uc6b0 \ud6cc\ub96d\ud558\uc5ec \uc815\ub9ac\ud588\ub2e4. \uc2dc\uc2a4\ud15c \uc544\ud0a4\ud14d\ucc98 \ud575\uc2ec \uad6c\uc131 \uc694\uc18c \uc8fc\uc694 \ud2b9\uc9d5 \ud575\uc2ec \uad6c\ud604 \ubd84\uc11d 1. \ub2e4\uc911 \ud3f4\ub9ac\uace4 \uc874 \uc124\uc815 \ud575\uc2ec \ud3ec\uc778\ud2b8: 2. ByteTracker \ucd08\uae30\ud654 \ubc0f \ucd5c\uc801\ud654 \ucd5c\uc801\ud654 \uc804\ub7b5: 3. \ub2e4\uc911 \uc874<\/p>\n<div class=\"more-link\">\n\t\t\t\t <a href=\"http:\/\/practical.kr\/?p=856\" class=\"link-btn theme-btn\"><span>Read More <\/span> <i class=\"fa fa-caret-right\"><\/i><\/a>\n\t\t\t<\/div>\n","protected":false},"author":1,"featured_media":862,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[38,21,35],"tags":[],"class_list":["post-856","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-opencv","category-python"],"jetpack_featured_media_url":"http:\/\/practical.kr\/wp-content\/uploads\/2025\/10\/r8StYpzHIEc_tracking_1.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/practical.kr\/index.php?rest_route=\/wp\/v2\/posts\/856","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/practical.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/practical.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/practical.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/practical.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=856"}],"version-history":[{"count":3,"href":"http:\/\/practical.kr\/index.php?rest_route=\/wp\/v2\/posts\/856\/revisions"}],"predecessor-version":[{"id":861,"href":"http:\/\/practical.kr\/index.php?rest_route=\/wp\/v2\/posts\/856\/revisions\/861"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/practical.kr\/index.php?rest_route=\/wp\/v2\/media\/862"}],"wp:attachment":[{"href":"http:\/\/practical.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/practical.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=856"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/practical.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}