Compare commits

..

No commits in common. "cbab35e6d3e14f5f2566fab54f73c9fc5a149bb4" and "48a31a9bd9101ec53884af5c6519f4aa7348447c" have entirely different histories.

3 changed files with 33 additions and 114 deletions

41
demo.py
View file

@ -31,8 +31,6 @@ from utils.log import logger
from utils.timer import Timer from utils.timer import Timer
from utils.parse_config import parse_model_cfg from utils.parse_config import parse_model_cfg
import utils.datasets as datasets import utils.datasets as datasets
from pathlib import Path
import tempfile
from track import eval_seq from track import eval_seq
@ -51,29 +49,26 @@ def track(opt):
n_frame = 0 n_frame = 0
logger.info('Starting tracking...') logger.info('Starting tracking...')
if os.path.isdir(opt.input_video):
print('Use image sequence')
dataloader = datasets.LoadImages(opt.input_video, opt.img_size)
frame_rate = 30 # hack for now; see https://motchallenge.net/data/MOT16/
else:
dataloader = datasets.LoadVideo(opt.input_video, opt.img_size)
frame_rate = dataloader.frame_rate
result_filename = os.path.join(result_root, 'results.txt')
with tempfile.TemporaryDirectory() as tmpdirname: frame_dir = None if opt.output_format=='text' else osp.join(result_root, 'frame')
if os.path.isdir(opt.input_video): try:
print('Use image sequence') eval_seq(opt, dataloader, 'mot', result_filename,
dataloader = datasets.LoadImages(opt.input_video, opt.img_size) save_dir=frame_dir, show_image=False, frame_rate=frame_rate)
frame_rate = 30 # hack for now; see https://motchallenge.net/data/MOT16/ except Exception as e:
else: logger.info(e)
dataloader = datasets.LoadVideo(opt.input_video, opt.img_size)
frame_rate = dataloader.frame_rate
result_filename = os.path.join(result_root, 'results.txt')
frame_dir = None if opt.output_format=='text' else tmpdirname if opt.output_format == 'video':
try: output_video_path = osp.join(result_root, 'result.mp4')
eval_seq(opt, dataloader, 'mot', result_filename, cmd_str = 'ffmpeg -f image2 -i {}/%05d.jpg -c:v copy {}'.format(osp.join(result_root, 'frame'), output_video_path)
save_dir=frame_dir, show_image=False, save_img=True, frame_rate=frame_rate) os.system(cmd_str)
except Exception as e:
logger.info(e)
if opt.output_format == 'video':
name = 'result-' + Path(opt.input_video).stem + '.mp4'
output_video_path = osp.join(result_root, name)
cmd_str = 'ffmpeg -f image2 -i {}/%05d.jpg -c:v mjpeg -q:v 1 {}'.format(frame_dir, output_video_path)
os.system(cmd_str)
if __name__ == '__main__': if __name__ == '__main__':

View file

@ -2,7 +2,7 @@
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 64, "execution_count": 47,
"id": "d1489f9f-328c-4812-9cdb-0a2dee44ae88", "id": "d1489f9f-328c-4812-9cdb-0a2dee44ae88",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -28,7 +28,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 65, "execution_count": 48,
"id": "edec1b34-64ad-4610-856a-68d886a45142", "id": "edec1b34-64ad-4610-856a-68d886a45142",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -38,7 +38,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 66, "execution_count": 49,
"id": "010bf567-8845-46d4-8500-883efce2d010", "id": "010bf567-8845-46d4-8500-883efce2d010",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -51,7 +51,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 67, "execution_count": 50,
"id": "8a413424-13c4-4bdc-825a-0aa6164e89e2", "id": "8a413424-13c4-4bdc-825a-0aa6164e89e2",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -67,7 +67,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 68, "execution_count": 51,
"id": "7b291b67-93ad-4b51-934a-dbaf095f7704", "id": "7b291b67-93ad-4b51-934a-dbaf095f7704",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -103,28 +103,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 77, "execution_count": 52,
"id": "c87f2b73-6109-4509-a0ce-62a690c44030",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'./OUT/embedding_test/track-test'"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"result_frame_path"
]
},
{
"cell_type": "code",
"execution_count": 69,
"id": "648faf4b-d692-473a-a99d-06b50a2e2261", "id": "648faf4b-d692-473a-a99d-06b50a2e2261",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -161,7 +140,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 70, "execution_count": 53,
"id": "a28ef404-2031-43cf-aeb1-357aa1be0934", "id": "a28ef404-2031-43cf-aeb1-357aa1be0934",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -179,28 +158,6 @@
"Load video file and get it's properties. Use that to calculate the dimension to fit the loaded model" "Load video file and get it's properties. Use that to calculate the dimension to fit the loaded model"
] ]
}, },
{
"cell_type": "code",
"execution_count": 74,
"id": "eb63b1c4-fdde-48e9-977e-21ceb10c5316",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(2, 512)"
]
},
"execution_count": 74,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# array with shape n-components, n-features\n",
"reducer.components_.shape"
]
},
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 59, "execution_count": 59,
@ -245,7 +202,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 75, "execution_count": 61,
"id": "c623aa17-5ce2-4948-9adf-d4c9a6d1ccd2", "id": "c623aa17-5ce2-4948-9adf-d4c9a6d1ccd2",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@ -255,7 +212,7 @@
"(-1.0, 1.0)" "(-1.0, 1.0)"
] ]
}, },
"execution_count": 75, "execution_count": 61,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
}, },
@ -285,7 +242,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 76, "execution_count": 62,
"id": "e8952235-7e56-4606-858a-a9165b967726", "id": "e8952235-7e56-4606-858a-a9165b967726",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
@ -299,7 +256,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 63, "execution_count": null,
"id": "f9cc6fd1-b9c2-4303-a21c-a193c6045526", "id": "f9cc6fd1-b9c2-4303-a21c-a193c6045526",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
@ -316,17 +273,6 @@
}, },
"metadata": {}, "metadata": {},
"output_type": "display_data" "output_type": "display_data"
},
{
"ename": "error",
"evalue": "OpenCV(4.7.0) /io/opencv/modules/imgproc/src/resize.cpp:4062: error: (-215:Assertion failed) !ssize.empty() in function 'resize'\n",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31merror\u001b[0m Traceback (most recent call last)",
"Cell \u001b[0;32mIn[63], line 10\u001b[0m\n\u001b[1;32m 8\u001b[0m ret, frame \u001b[38;5;241m=\u001b[39m stream\u001b[38;5;241m.\u001b[39mread()\n\u001b[1;32m 9\u001b[0m \u001b[38;5;66;03m# scale down/up frame to fit tracker\u001b[39;00m\n\u001b[0;32m---> 10\u001b[0m frame \u001b[38;5;241m=\u001b[39m \u001b[43mcv2\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mresize\u001b[49m\u001b[43m(\u001b[49m\u001b[43mframe\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m(\u001b[49m\u001b[43mw\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mh\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;66;03m# letterbox as to have a constant size for the model\u001b[39;00m\n\u001b[1;32m 14\u001b[0m img, _, _, _ \u001b[38;5;241m=\u001b[39m datasets\u001b[38;5;241m.\u001b[39mletterbox(frame, height\u001b[38;5;241m=\u001b[39mopt\u001b[38;5;241m.\u001b[39mimg_size[\u001b[38;5;241m1\u001b[39m], width\u001b[38;5;241m=\u001b[39mopt\u001b[38;5;241m.\u001b[39mimg_size[\u001b[38;5;241m0\u001b[39m])\n",
"\u001b[0;31merror\u001b[0m: OpenCV(4.7.0) /io/opencv/modules/imgproc/src/resize.cpp:4062: error: (-215:Assertion failed) !ssize.empty() in function 'resize'\n"
]
} }
], ],
"source": [ "source": [
@ -420,31 +366,10 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 78, "execution_count": null,
"id": "8f21e642-2320-4a7e-a0ea-af32e8d1a182", "id": "8f21e642-2320-4a7e-a0ea-af32e8d1a182",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"name": "stdout",
"output_type": "stream",
"text": [
"ffmpeg version 4.3 Copyright (c) 2000-2020 the FFmpeg developers\n",
" built with gcc 7.3.0 (crosstool-NG 1.23.0.449-a04d0)\n",
" configuration: --prefix=/opt/conda/conda-bld/ffmpeg_1597178665428/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placeh --cc=/opt/conda/conda-bld/ffmpeg_1597178665428/_build_env/bin/x86_64-conda_cos6-linux-gnu-cc --disable-doc --disable-openssl --enable-avresample --enable-gnutls --enable-hardcoded-tables --enable-libfreetype --enable-libopenh264 --enable-pic --enable-pthreads --enable-shared --disable-static --enable-version3 --enable-zlib --enable-libmp3lame\n",
" libavutil 56. 51.100 / 56. 51.100\n",
" libavcodec 58. 91.100 / 58. 91.100\n",
" libavformat 58. 45.100 / 58. 45.100\n",
" libavdevice 58. 10.100 / 58. 10.100\n",
" libavfilter 7. 85.100 / 7. 85.100\n",
" libavresample 4. 0. 0 / 4. 0. 0\n",
" libswscale 5. 7.100 / 5. 7.100\n",
" libswresample 3. 7.100 / 3. 7.100\n",
"\u001b[1;31mUnrecognized option 'crf'.\n",
"\u001b[0m\u001b[4;31mError splitting the argument list: \u001b[0m\u001b[4;31mOption not found\n",
"\u001b[0m"
]
}
],
"source": [ "source": [
"! ffmpeg -i OUT/embedding_test/track-test/%04d.png -c:v libx264 -crf 10 OUT/embedding_test/track-test.mp4" "! ffmpeg -i OUT/embedding_test/track-test/%04d.png -c:v libx264 -crf 10 OUT/embedding_test/track-test.mp4"
] ]

View file

@ -100,8 +100,7 @@ def eval_seq(opt, dataloader, data_type, result_filename, save_dir=None, save_im
online_targets, frame_embeddings = tracker.update(blob, img0) online_targets, frame_embeddings = tracker.update(blob, img0)
online_tlwhs = [] online_tlwhs = []
online_ids = [] online_ids = []
# for t in online_targets: for t in online_targets:
for t in tracker.tracked_stracks:
tlwh = t.tlwh tlwh = t.tlwh
tid = t.track_id tid = t.track_id
vertical = tlwh[2] / tlwh[3] > 1.6 vertical = tlwh[2] / tlwh[3] > 1.6
@ -119,7 +118,7 @@ def eval_seq(opt, dataloader, data_type, result_filename, save_dir=None, save_im
if save_dir is not None: if save_dir is not None:
base_fn = os.path.join(save_dir, '{:05d}'.format(frame_id)) base_fn = os.path.join(save_dir, '{:05d}'.format(frame_id))
if save_img: if save_img:
cv2.imwrite(base_fn+'.jpg', online_im, [cv2.IMWRITE_JPEG_QUALITY, 100]) cv2.imwrite(base_fn+'.jpg', online_im)
if save_figures: if save_figures:
for i, fe in enumerate(frame_embeddings): for i, fe in enumerate(frame_embeddings):
tlwh, curr_feat = fe tlwh, curr_feat = fe