Compare commits
3 Commits
c81d9106d5
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| bae1b00bdc | |||
| c6794e7f03 | |||
| 9b469860fa |
Binary file not shown.
611
example.ipynb
Normal file
611
example.ipynb
Normal file
@@ -0,0 +1,611 @@
|
||||
{
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 0,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"provenance": [],
|
||||
"collapsed_sections": []
|
||||
},
|
||||
"kernelspec": {
|
||||
"name": "python3",
|
||||
"display_name": "Python 3"
|
||||
},
|
||||
"language_info": {
|
||||
"name": "python"
|
||||
},
|
||||
"accelerator": "GPU",
|
||||
"gpuClass": "standard"
|
||||
},
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "DbeYatBLu8pf",
|
||||
"outputId": "4ed57e67-ae61-4662-e0cc-faed1c4062e4"
|
||||
},
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"text": [
|
||||
"Cloning into 'triplet-loss-cars'...\n",
|
||||
"remote: Enumerating objects: 17560, done.\u001b[K\n",
|
||||
"remote: Counting objects: 100% (17560/17560), done.\u001b[K\n",
|
||||
"remote: Compressing objects: 100% (9229/9229), done.\u001b[K\n",
|
||||
"remote: Total 17560 (delta 8336), reused 17531 (delta 8326)\u001b[K\n",
|
||||
"Receiving objects: 100% (17560/17560), 773.26 MiB | 16.83 MiB/s, done.\n",
|
||||
"Resolving deltas: 100% (8336/8336), done.\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"!git clone https://git.drivecast.tech/vd/triplet-loss-cars.git"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"%cd triplet-loss-cars/"
|
||||
],
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "264RI2RHu_u4",
|
||||
"outputId": "5cea8550-3c8f-453f-ee09-de205e117769"
|
||||
},
|
||||
"execution_count": 2,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"text": [
|
||||
"/content/triplet-loss-cars\n"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"!./download-dataset"
|
||||
],
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "lboCMkqrvQtO",
|
||||
"outputId": "015dad3e-fda4-4daf-a86c-54bf37253fa4"
|
||||
},
|
||||
"execution_count": 3,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"text": [
|
||||
"Downloading...\n",
|
||||
"From: https://drive.google.com/uc?id=1rP7GHDqx6BKTGTh9I6ecEmRgn5-HG1N0\n",
|
||||
"To: /content/triplet-loss-cars/triplet_dataset.zip\n",
|
||||
"100% 27.3M/27.3M [00:01<00:00, 20.6MB/s]\n"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [],
|
||||
"metadata": {
|
||||
"id": "Jx07-q67wGfD"
|
||||
},
|
||||
"execution_count": null,
|
||||
"outputs": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"!python3 train-embedding.py"
|
||||
],
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "iat8B1qNv96T",
|
||||
"outputId": "712601bf-9a2a-44d9-8d27-6dbc82a941f1"
|
||||
},
|
||||
"execution_count": 7,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"text": [
|
||||
"Using GPU.\n",
|
||||
"Training.\n",
|
||||
"Epoch: 1/10 - Training loss: 0.2827 - Test loss: 0.1240\n",
|
||||
"Epoch: 2/10 - Training loss: 0.1167 - Test loss: 0.1096\n",
|
||||
"Epoch: 3/10 - Training loss: 0.0887 - Test loss: 0.0779\n",
|
||||
"Epoch: 4/10 - Training loss: 0.0789 - Test loss: 0.0882\n",
|
||||
"Epoch: 5/10 - Training loss: 0.0718 - Test loss: 0.0383\n",
|
||||
"Epoch: 6/10 - Training loss: 0.0643 - Test loss: 0.0566\n",
|
||||
"^C\n"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"!python3 train-classifier.py"
|
||||
],
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "XhCmibyKwC-U",
|
||||
"outputId": "e4b28c5a-d878-40d5-aaaf-f256e1ab2fa7"
|
||||
},
|
||||
"execution_count": 8,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"text": [
|
||||
"Using GPU.\n",
|
||||
"Score: 0.9918\n"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"!./download-test-videos"
|
||||
],
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "9PRr_7pV4qwE",
|
||||
"outputId": "a71579b1-992b-41db-a275-79e5e55b5715"
|
||||
},
|
||||
"execution_count": 10,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"text": [
|
||||
"Downloading...\n",
|
||||
"From: https://drive.google.com/uc?id=1Mm24z7fe1fkbcTt05IQpLlNdSALJQFRc\n",
|
||||
"To: /content/triplet-loss-cars/test_videos_2022.zip\n",
|
||||
"100% 212M/212M [00:03<00:00, 63.2MB/s]\n"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"!unzip -q ./yolov5.zip"
|
||||
],
|
||||
"metadata": {
|
||||
"id": "wZjPyaNo6XAa"
|
||||
},
|
||||
"execution_count": 11,
|
||||
"outputs": []
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [
|
||||
"!python3 model_inference.py"
|
||||
],
|
||||
"metadata": {
|
||||
"colab": {
|
||||
"base_uri": "https://localhost:8080/"
|
||||
},
|
||||
"id": "EW8pO4f86fBj",
|
||||
"outputId": "15c057b3-c4df-43cb-9a6a-4201404b226e"
|
||||
},
|
||||
"execution_count": 12,
|
||||
"outputs": [
|
||||
{
|
||||
"output_type": "stream",
|
||||
"name": "stdout",
|
||||
"text": [
|
||||
"Using GPU.\n",
|
||||
"Fusing layers... \n",
|
||||
"custom_YOLOv5l summary: 290 layers, 20852934 parameters, 0 gradients\n",
|
||||
"WARNING: --img-size [1920, 1080] must be multiple of max stride 32, updating to [1920, 1088]\n",
|
||||
"0\n",
|
||||
"Downloading https://ultralytics.com/assets/Arial.ttf to /root/.config/Ultralytics/Arial.ttf...\n",
|
||||
"1\n",
|
||||
"2\n",
|
||||
"3\n",
|
||||
"4\n",
|
||||
"5\n",
|
||||
"6\n",
|
||||
"7\n",
|
||||
"8\n",
|
||||
"9\n",
|
||||
"10\n",
|
||||
"11\n",
|
||||
"12\n",
|
||||
"13\n",
|
||||
"14\n",
|
||||
"15\n",
|
||||
"16\n",
|
||||
"17\n",
|
||||
"18\n",
|
||||
"19\n",
|
||||
"20\n",
|
||||
"21\n",
|
||||
"22\n",
|
||||
"23\n",
|
||||
"24\n",
|
||||
"25\n",
|
||||
"26\n",
|
||||
"27\n",
|
||||
"28\n",
|
||||
"29\n",
|
||||
"30\n",
|
||||
"31\n",
|
||||
"32\n",
|
||||
"33\n",
|
||||
"34\n",
|
||||
"35\n",
|
||||
"36\n",
|
||||
"37\n",
|
||||
"38\n",
|
||||
"39\n",
|
||||
"40\n",
|
||||
"41\n",
|
||||
"42\n",
|
||||
"43\n",
|
||||
"44\n",
|
||||
"45\n",
|
||||
"46\n",
|
||||
"47\n",
|
||||
"48\n",
|
||||
"49\n",
|
||||
"50\n",
|
||||
"51\n",
|
||||
"52\n",
|
||||
"53\n",
|
||||
"54\n",
|
||||
"55\n",
|
||||
"56\n",
|
||||
"57\n",
|
||||
"58\n",
|
||||
"59\n",
|
||||
"60\n",
|
||||
"61\n",
|
||||
"62\n",
|
||||
"63\n",
|
||||
"64\n",
|
||||
"65\n",
|
||||
"66\n",
|
||||
"67\n",
|
||||
"68\n",
|
||||
"69\n",
|
||||
"70\n",
|
||||
"71\n",
|
||||
"72\n",
|
||||
"73\n",
|
||||
"74\n",
|
||||
"75\n",
|
||||
"76\n",
|
||||
"77\n",
|
||||
"78\n",
|
||||
"79\n",
|
||||
"80\n",
|
||||
"81\n",
|
||||
"82\n",
|
||||
"83\n",
|
||||
"84\n",
|
||||
"85\n",
|
||||
"86\n",
|
||||
"87\n",
|
||||
"88\n",
|
||||
"89\n",
|
||||
"90\n",
|
||||
"91\n",
|
||||
"92\n",
|
||||
"93\n",
|
||||
"94\n",
|
||||
"95\n",
|
||||
"96\n",
|
||||
"97\n",
|
||||
"98\n",
|
||||
"99\n",
|
||||
"100\n",
|
||||
"101\n",
|
||||
"102\n",
|
||||
"103\n",
|
||||
"104\n",
|
||||
"105\n",
|
||||
"106\n",
|
||||
"107\n",
|
||||
"108\n",
|
||||
"109\n",
|
||||
"110\n",
|
||||
"111\n",
|
||||
"112\n",
|
||||
"113\n",
|
||||
"114\n",
|
||||
"115\n",
|
||||
"116\n",
|
||||
"117\n",
|
||||
"118\n",
|
||||
"119\n",
|
||||
"120\n",
|
||||
"121\n",
|
||||
"122\n",
|
||||
"123\n",
|
||||
"124\n",
|
||||
"125\n",
|
||||
"126\n",
|
||||
"127\n",
|
||||
"128\n",
|
||||
"129\n",
|
||||
"130\n",
|
||||
"131\n",
|
||||
"132\n",
|
||||
"133\n",
|
||||
"134\n",
|
||||
"135\n",
|
||||
"136\n",
|
||||
"137\n",
|
||||
"138\n",
|
||||
"139\n",
|
||||
"140\n",
|
||||
"141\n",
|
||||
"142\n",
|
||||
"143\n",
|
||||
"144\n",
|
||||
"145\n",
|
||||
"146\n",
|
||||
"147\n",
|
||||
"148\n",
|
||||
"149\n",
|
||||
"150\n",
|
||||
"151\n",
|
||||
"152\n",
|
||||
"153\n",
|
||||
"154\n",
|
||||
"155\n",
|
||||
"156\n",
|
||||
"157\n",
|
||||
"158\n",
|
||||
"159\n",
|
||||
"160\n",
|
||||
"161\n",
|
||||
"162\n",
|
||||
"163\n",
|
||||
"164\n",
|
||||
"165\n",
|
||||
"166\n",
|
||||
"167\n",
|
||||
"168\n",
|
||||
"169\n",
|
||||
"170\n",
|
||||
"171\n",
|
||||
"172\n",
|
||||
"173\n",
|
||||
"174\n",
|
||||
"175\n",
|
||||
"176\n",
|
||||
"177\n",
|
||||
"178\n",
|
||||
"179\n",
|
||||
"180\n",
|
||||
"181\n",
|
||||
"182\n",
|
||||
"183\n",
|
||||
"184\n",
|
||||
"185\n",
|
||||
"186\n",
|
||||
"187\n",
|
||||
"188\n",
|
||||
"189\n",
|
||||
"190\n",
|
||||
"191\n",
|
||||
"192\n",
|
||||
"193\n",
|
||||
"194\n",
|
||||
"195\n",
|
||||
"196\n",
|
||||
"197\n",
|
||||
"198\n",
|
||||
"199\n",
|
||||
"200\n",
|
||||
"201\n",
|
||||
"202\n",
|
||||
"203\n",
|
||||
"204\n",
|
||||
"205\n",
|
||||
"206\n",
|
||||
"207\n",
|
||||
"208\n",
|
||||
"209\n",
|
||||
"210\n",
|
||||
"211\n",
|
||||
"212\n",
|
||||
"213\n",
|
||||
"214\n",
|
||||
"215\n",
|
||||
"216\n",
|
||||
"217\n",
|
||||
"218\n",
|
||||
"219\n",
|
||||
"220\n",
|
||||
"221\n",
|
||||
"222\n",
|
||||
"223\n",
|
||||
"224\n",
|
||||
"225\n",
|
||||
"226\n",
|
||||
"227\n",
|
||||
"228\n",
|
||||
"229\n",
|
||||
"230\n",
|
||||
"231\n",
|
||||
"232\n",
|
||||
"233\n",
|
||||
"234\n",
|
||||
"235\n",
|
||||
"236\n",
|
||||
"237\n",
|
||||
"238\n",
|
||||
"239\n",
|
||||
"240\n",
|
||||
"241\n",
|
||||
"242\n",
|
||||
"243\n",
|
||||
"244\n",
|
||||
"245\n",
|
||||
"246\n",
|
||||
"247\n",
|
||||
"248\n",
|
||||
"249\n",
|
||||
"250\n",
|
||||
"251\n",
|
||||
"252\n",
|
||||
"253\n",
|
||||
"254\n",
|
||||
"255\n",
|
||||
"256\n",
|
||||
"257\n",
|
||||
"258\n",
|
||||
"259\n",
|
||||
"260\n",
|
||||
"261\n",
|
||||
"262\n",
|
||||
"263\n",
|
||||
"264\n",
|
||||
"265\n",
|
||||
"266\n",
|
||||
"267\n",
|
||||
"268\n",
|
||||
"269\n",
|
||||
"270\n",
|
||||
"271\n",
|
||||
"272\n",
|
||||
"273\n",
|
||||
"274\n",
|
||||
"275\n",
|
||||
"276\n",
|
||||
"277\n",
|
||||
"278\n",
|
||||
"279\n",
|
||||
"280\n",
|
||||
"281\n",
|
||||
"282\n",
|
||||
"283\n",
|
||||
"284\n",
|
||||
"285\n",
|
||||
"286\n",
|
||||
"287\n",
|
||||
"288\n",
|
||||
"289\n",
|
||||
"290\n",
|
||||
"291\n",
|
||||
"292\n",
|
||||
"293\n",
|
||||
"294\n",
|
||||
"295\n",
|
||||
"296\n",
|
||||
"297\n",
|
||||
"298\n",
|
||||
"299\n",
|
||||
"300\n",
|
||||
"301\n",
|
||||
"302\n",
|
||||
"303\n",
|
||||
"304\n",
|
||||
"305\n",
|
||||
"306\n",
|
||||
"307\n",
|
||||
"308\n",
|
||||
"309\n",
|
||||
"310\n",
|
||||
"311\n",
|
||||
"312\n",
|
||||
"313\n",
|
||||
"314\n",
|
||||
"315\n",
|
||||
"316\n",
|
||||
"317\n",
|
||||
"318\n",
|
||||
"319\n",
|
||||
"320\n",
|
||||
"321\n",
|
||||
"322\n",
|
||||
"323\n",
|
||||
"324\n",
|
||||
"325\n",
|
||||
"326\n",
|
||||
"327\n",
|
||||
"328\n",
|
||||
"329\n",
|
||||
"330\n",
|
||||
"331\n",
|
||||
"332\n",
|
||||
"333\n",
|
||||
"334\n",
|
||||
"335\n",
|
||||
"336\n",
|
||||
"337\n",
|
||||
"338\n",
|
||||
"339\n",
|
||||
"340\n",
|
||||
"341\n",
|
||||
"342\n",
|
||||
"343\n",
|
||||
"344\n",
|
||||
"345\n",
|
||||
"346\n",
|
||||
"347\n",
|
||||
"348\n",
|
||||
"349\n",
|
||||
"350\n",
|
||||
"351\n",
|
||||
"352\n",
|
||||
"353\n",
|
||||
"354\n",
|
||||
"355\n",
|
||||
"356\n",
|
||||
"357\n",
|
||||
"358\n",
|
||||
"359\n",
|
||||
"360\n",
|
||||
"361\n",
|
||||
"362\n",
|
||||
"363\n",
|
||||
"364\n",
|
||||
"365\n",
|
||||
"366\n",
|
||||
"367\n",
|
||||
"368\n",
|
||||
"369\n",
|
||||
"370\n",
|
||||
"371\n",
|
||||
"372\n",
|
||||
"373\n",
|
||||
"374\n"
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"source": [],
|
||||
"metadata": {
|
||||
"id": "jVEQTWoW6l_9"
|
||||
},
|
||||
"execution_count": null,
|
||||
"outputs": []
|
||||
}
|
||||
]
|
||||
}
|
||||
BIN
model_classifier.obj
Normal file
BIN
model_classifier.obj
Normal file
Binary file not shown.
@@ -96,12 +96,12 @@ model_embedding.load_state_dict(torch.load('./embedding-output/model_embedding.p
|
||||
model_embedding.to(device)
|
||||
model_embedding.eval()
|
||||
|
||||
with open('/model_classifier.obj','rb') as file:
|
||||
with open('./model_classifier.obj','rb') as file:
|
||||
model_classifier = pickle.load(file)
|
||||
|
||||
classes = model_classifier.__getstate__()['classes_']
|
||||
|
||||
video = Path('/content/test_videos_2022/2022-NLS-5-NLS_05_2022_Heli_UHD_01-000140-000155-Karussell.mp4')
|
||||
video = Path('./test_videos_2022/2022-NLS-5-NLS_05_2022_Heli_UHD_01-000140-000155-Karussell.mp4')
|
||||
|
||||
reader = cv2.VideoCapture(str(video))
|
||||
fps = reader.get(cv2.CAP_PROP_FPS)
|
||||
@@ -109,18 +109,19 @@ w = int(reader.get(cv2.CAP_PROP_FRAME_WIDTH))
|
||||
h = int(reader.get(cv2.CAP_PROP_FRAME_HEIGHT))
|
||||
reader.release()
|
||||
|
||||
imgsz = check_img_size((w, h), s=model.stride)
|
||||
dataset = LoadImages(video, img_size=imgsz, stride=model.stride, auto=model.pt)
|
||||
|
||||
weights_path = Path('./yolov5/best.pt')
|
||||
model = DetectMultiBackend(weights_path, device=torch.device(device))
|
||||
|
||||
imgsz = check_img_size((w, h), s=model.stride)
|
||||
dataset = LoadImages(video, img_size=imgsz, stride=model.stride, auto=model.pt)
|
||||
|
||||
save_dir = Path('./detection-output/')
|
||||
os.makedirs(save_dir)
|
||||
|
||||
writer = cv2.VideoWriter(str(save_dir / 'res.mp4'), cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h))
|
||||
|
||||
for frame_n, (path, im, im0s, vid_cap, s) in enumerate(dataset):
|
||||
print(frame_n)
|
||||
im = torch.from_numpy(im).to(device)
|
||||
im = im.half() if model.fp16 else im.float() # uint8 to fp16/32
|
||||
im /= 255 # 0 - 255 to 0.0 - 1.0
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
gdown
|
||||
seaborn
|
||||
torch
|
||||
torchvision
|
||||
sklearn
|
||||
|
||||
Reference in New Issue
Block a user