final commit
BIN
examples_movie/jelly2.mp4
Normal file
BIN
examples_movie/jelly3.mp4
Normal file
BIN
examples_movie/rybki.mp4
Normal file
BIN
examples_movie/rybki2.mp4
Normal file
BIN
examples_movie/rybki3.mp4
Normal file
BIN
examples_movie/rybki4.mp4
Normal file
BIN
examples_movie/rybki5.mp4
Normal file
BIN
examples_photo/fellyfishes.jpg
Normal file
After Width: | Height: | Size: 750 KiB |
BIN
examples_photo/fish2.jpg
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
examples_photo/fish3.jpg
Normal file
After Width: | Height: | Size: 84 KiB |
BIN
examples_photo/fish4.jpg
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
examples_photo/fish5.jpg
Normal file
After Width: | Height: | Size: 156 KiB |
BIN
examples_photo/fish_example.jpg
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
examples_photo/fishes.jpg
Normal file
After Width: | Height: | Size: 111 KiB |
BIN
examples_photo/jelly_draw.jpg
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
examples_photo/jellyfish.jpg
Normal file
After Width: | Height: | Size: 77 KiB |
BIN
examples_photo/jellyfish4.jpg
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
examples_photo/jellyfishes3.jpg
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
examples_photo/meme.jpg
Normal file
After Width: | Height: | Size: 595 KiB |
BIN
examples_photo/new.png
Normal file
After Width: | Height: | Size: 1.1 MiB |
BIN
examples_photo/shark2.jpg
Normal file
After Width: | Height: | Size: 87 KiB |
BIN
examples_photo/shark3.jpg
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
examples_photo/shark4.jpg
Normal file
After Width: | Height: | Size: 77 KiB |
BIN
examples_photo/shark5.jpg
Normal file
After Width: | Height: | Size: 228 KiB |
BIN
examples_photo/star.jpg
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
examples_photo/star2.jpg
Normal file
After Width: | Height: | Size: 7.5 MiB |
BIN
examples_photo/star3.jpg
Normal file
After Width: | Height: | Size: 134 KiB |
BIN
examples_photo/star4.jpg
Normal file
After Width: | Height: | Size: 142 KiB |
BIN
examples_photo/star5.jpg
Normal file
After Width: | Height: | Size: 152 KiB |
BIN
examples_photo/star6.jpg
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
examples_photo/starfish.jpg
Normal file
After Width: | Height: | Size: 187 KiB |
BIN
examples_photo/starfishes.jpg
Normal file
After Width: | Height: | Size: 1.5 MiB |
BIN
examples_photo/starfishes2.jpg
Normal file
After Width: | Height: | Size: 354 KiB |
BIN
examples_photo/starfishes3.jpg
Normal file
After Width: | Height: | Size: 617 KiB |
BIN
examples_photo/starfishes_2.jpg
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
examples_photo/stingray.jpg
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
examples_photo/stingray2.jpg
Normal file
After Width: | Height: | Size: 3.2 MiB |
BIN
examples_photo/stingray3.jpg
Normal file
After Width: | Height: | Size: 180 KiB |
BIN
examples_photo/stingray4.jpg
Normal file
After Width: | Height: | Size: 367 KiB |
BIN
examples_photo/stingray5.jpg
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
examples_photo/stingray6.jpg
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
examples_photo/test_fish.jpg
Normal file
After Width: | Height: | Size: 754 KiB |
BIN
examples_photo/test_fish_2.jfif
Normal file
After Width: | Height: | Size: 84 KiB |
BIN
examples_photo/turtles.jpg
Normal file
After Width: | Height: | Size: 52 KiB |
627
notepads/rybki.ipynb
Normal file
@ -0,0 +1,627 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import cv2\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import keras\n",
|
||||
"import numpy as np\n",
|
||||
"import threading\n",
|
||||
"from tqdm import tqdm\n",
|
||||
"import torch\n",
|
||||
"from ultralytics import YOLO\n",
|
||||
"import tensorflow as tf"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def object_movie_detection(movie_name, background_substract_method, substractor_threshold, mask_parameters, movie_resize, detection_area,object_area_to_detect):\n",
|
||||
" if background_substract_method == 'KNN':\n",
|
||||
" object_detector = cv2.createBackgroundSubtractorKNN(history=500, dist2Threshold=substractor_threshold)\n",
|
||||
" else :\n",
|
||||
" object_detector = cv2.createBackgroundSubtractorMOG2(history=500, varThreshold=substractor_threshold)\n",
|
||||
" \n",
|
||||
" cap = cv2.VideoCapture(movie_name)\n",
|
||||
" #cap.set(cv2.CAP_PROP_FPS, 60)\n",
|
||||
" frames = []\n",
|
||||
" pbar = tqdm(total = cap.get(cv2.CAP_PROP_FRAME_COUNT))\n",
|
||||
" while True:\n",
|
||||
" _, frame = cap.read()\n",
|
||||
" if(frame is not None):\n",
|
||||
" pbar.update(1)\n",
|
||||
" detection_field = frame[detection_area[0][0]: detection_area[0][1],detection_area[1][0]:detection_area[1][1]]\n",
|
||||
" mask = object_detector.apply(detection_field)\n",
|
||||
" _, mask = cv2.threshold(mask,mask_parameters[0],mask_parameters[1], cv2.THRESH_BINARY)\n",
|
||||
" conturs, _ =cv2.findContours(mask, cv2.RETR_LIST , cv2.CHAIN_APPROX_TC89_L1)\n",
|
||||
"\n",
|
||||
" images = []\n",
|
||||
" counter = 0\n",
|
||||
" for cnt in conturs:\n",
|
||||
" area = cv2.contourArea(cnt)\n",
|
||||
" if area > object_area_to_detect:\n",
|
||||
" counter += 1\n",
|
||||
" x,y,w,h = cv2.boundingRect(cnt)\n",
|
||||
" rectangle = cv2.rectangle(detection_field,(x,y),(x+w,y+h),(0,255,0),3)\n",
|
||||
" rectangle = cv2.rectangle(frame,(330,100),(1900,900),(255,0,0),3)\n",
|
||||
" cv2.putText(rectangle,f'DETECTION AREA DETECTED OBJECTS: {counter}',(330,80),cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0,0,255), 4)\n",
|
||||
" frames.append(frame)\n",
|
||||
" frame = cv2.resize(frame, (movie_resize[0], movie_resize[1])) \n",
|
||||
" #cv2.imshow(\"roi\", frame)\n",
|
||||
"\n",
|
||||
" key = cv2.waitKey(30)\n",
|
||||
" if key == 27:\n",
|
||||
" cv2.destroyAllWindows()\n",
|
||||
" pbar.close()\n",
|
||||
" return frames\n",
|
||||
" else:\n",
|
||||
" cv2.destroyAllWindows()\n",
|
||||
" pbar.close()\n",
|
||||
" return frames"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def save_video(video_name, frames, frame_sizes,fps):\n",
|
||||
" out = cv2.VideoWriter(f'{video_name}.avi', cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), fps, (frame_sizes[1], frame_sizes[0]))\n",
|
||||
" for frame in frames:\n",
|
||||
" out.write(frame)\n",
|
||||
" out.release()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 25,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"100%|██████████| 660/660.0 [01:12<00:00, 9.14it/s]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"movie_detection_1 = object_movie_detection(\n",
|
||||
" '../examples_movie/rybki.mp4',\n",
|
||||
" background_substract_method='KNN',\n",
|
||||
" substractor_threshold=100,\n",
|
||||
" mask_parameters=[254,255],\n",
|
||||
" movie_resize=[960,540],\n",
|
||||
" detection_area=[(100,900),(330,1900)],\n",
|
||||
" object_area_to_detect=1000\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 30,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"save_video('saved_movies/example_detection_1',movie_detection_1,movie_detection_1[0].shape,60)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 31,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"100%|██████████| 1037/1037.0 [03:21<00:00, 5.15it/s]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"movie_detection_2 = object_movie_detection(\n",
|
||||
" '../examples_movie/rybki2.mp4',\n",
|
||||
" background_substract_method='KNN',\n",
|
||||
" substractor_threshold=100,\n",
|
||||
" mask_parameters=[254,255],\n",
|
||||
" movie_resize=[960,540],\n",
|
||||
" detection_area=[(100,900),(330,1900)],\n",
|
||||
" object_area_to_detect=1000\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 32,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"save_video('saved_movies/example_detection_2',movie_detection_2,movie_detection_2[0].shape,60)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"100%|█████████▉| 962/963.0 [01:20<00:00, 11.98it/s]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"movie_detection_3 = object_movie_detection(\n",
|
||||
" '../examples_movie/rybki3.mp4',\n",
|
||||
" background_substract_method='KNN',\n",
|
||||
" substractor_threshold=100,\n",
|
||||
" mask_parameters=[254,255],\n",
|
||||
" movie_resize=[960,540],\n",
|
||||
" detection_area=[(100,900),(330,1900)],\n",
|
||||
" object_area_to_detect=1000\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 9,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"save_video('saved_movies/example_detection_3',movie_detection_3,movie_detection_3[0].shape,60)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"100%|█████████▉| 857/858.0 [01:55<00:00, 7.43it/s]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"movie_detection_4 = object_movie_detection(\n",
|
||||
" '../examples_movie/rybki4.mp4',\n",
|
||||
" background_substract_method='KNN',\n",
|
||||
" substractor_threshold=100,\n",
|
||||
" mask_parameters=[254,255],\n",
|
||||
" movie_resize=[960,540],\n",
|
||||
" detection_area=[(100,900),(330,1900)],\n",
|
||||
" object_area_to_detect=1000\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"save_video('saved_movies/example_detection_4',movie_detection_4,movie_detection_4[0].shape,60)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"100%|█████████▉| 779/780.0 [01:01<00:00, 12.64it/s]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"movie_detection_5 = object_movie_detection(\n",
|
||||
" '../examples_movie/rybki5.mp4',\n",
|
||||
" background_substract_method='KNN',\n",
|
||||
" substractor_threshold=100,\n",
|
||||
" mask_parameters=[254,255],\n",
|
||||
" movie_resize=[960,540],\n",
|
||||
" detection_area=[(100,900),(330,1900)],\n",
|
||||
" object_area_to_detect=1000\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"save_video('saved_movies/example_detection_5',movie_detection_5,movie_detection_5[0].shape,60)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"100%|██████████| 388/388.0 [00:26<00:00, 14.55it/s]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"movie_detection_6 = object_movie_detection(\n",
|
||||
" '../examples_movie/jelly2.mp4',\n",
|
||||
" background_substract_method='KNN',\n",
|
||||
" substractor_threshold=100,\n",
|
||||
" mask_parameters=[254,255],\n",
|
||||
" movie_resize=[960,540],\n",
|
||||
" detection_area=[(100,900),(330,1900)],\n",
|
||||
" object_area_to_detect=1000\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"save_video('saved_movies/example_detection_6',movie_detection_6,movie_detection_6[0].shape,60)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"100%|██████████| 388/388.0 [00:37<00:00, 10.38it/s]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"movie_detection_7 = object_movie_detection(\n",
|
||||
" '../examples_movie/jelly3.mp4',\n",
|
||||
" background_substract_method='KNN',\n",
|
||||
" substractor_threshold=100,\n",
|
||||
" mask_parameters=[254,255],\n",
|
||||
" movie_resize=[960,540],\n",
|
||||
" detection_area=[(100,900),(330,1900)],\n",
|
||||
" object_area_to_detect=1000\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 8,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"save_video('saved_movies/example_detection_7',movie_detection_7,movie_detection_7[0].shape,60)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"frames = object_movie_detection(\n",
|
||||
" '../examples_movie/rybki.mp4',\n",
|
||||
" background_substract_method='KNN',\n",
|
||||
" substractor_threshold=100,\n",
|
||||
" mask_parameters=[254,255],\n",
|
||||
" movie_resize=[960,540],\n",
|
||||
" detection_area=[(100,900),(330,1900)],\n",
|
||||
" object_area_to_detect=1000\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 24,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def object_movie_yolo_detection(movie_name,model,detection_time):\n",
|
||||
"\n",
|
||||
" cap = cv2.VideoCapture(movie_name)\n",
|
||||
" cap.set(cv2.CAP_PROP_FPS, 60)\n",
|
||||
"\n",
|
||||
" frames = []\n",
|
||||
" pbar = tqdm(total = detection_time * 60)\n",
|
||||
" i = 0\n",
|
||||
"\n",
|
||||
" while True:\n",
|
||||
" i += 1\n",
|
||||
" ret, frame = cap.read()\n",
|
||||
" if(frame is not None):\n",
|
||||
" pbar.update(1)\n",
|
||||
" model.predict(frame,save_crop=True)\n",
|
||||
" frames.append(frame)\n",
|
||||
" key = cv2.waitKey(30)\n",
|
||||
" if key == 27:\n",
|
||||
" cv2.destroyAllWindows()\n",
|
||||
" return frames\n",
|
||||
" if i >= detection_time * 60:\n",
|
||||
" pbar.close\n",
|
||||
" cv2.destroyAllWindows()\n",
|
||||
" return frames\n",
|
||||
" else:\n",
|
||||
" cv2.destroyAllWindows()\n",
|
||||
" pbar.close\n",
|
||||
" return frames"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"model = YOLO(\"../yolo_model/best.pt\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"jelly2 = object_movie_yolo_detection('../examples_movie/jelly2.mp4',model)\n",
|
||||
"jelly3 = object_movie_yolo_detection('../examples_movie/jelly3.mp4',model)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 93,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"save_video('saved_movies/yolo_jelly1', jelly2,jelly2[0].shape,60)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"save_video('saved_movies/yolo_jelly2', jelly3,jelly3[0].shape,60)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"yolo_detect_1 = object_movie_yolo_detection('../examples_movie/rybki3.mp4',model,1)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 26,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"save_video('saved_movies/example_detection_8', yolo_detect_1,yolo_detect_1[0].shape,60)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def object_detection_with_neural_pred(\n",
|
||||
" movie_name, \n",
|
||||
" background_substract_method, \n",
|
||||
" substractor_threshold, \n",
|
||||
" mask_parameters, \n",
|
||||
" movie_resize, \n",
|
||||
" detection_area,\n",
|
||||
" object_area_to_detect,\n",
|
||||
" model,\n",
|
||||
" class_names,\n",
|
||||
" time_to_capture):\n",
|
||||
" if background_substract_method == 'KNN':\n",
|
||||
" object_detector = cv2.createBackgroundSubtractorKNN(history=500, dist2Threshold=substractor_threshold)\n",
|
||||
" else :\n",
|
||||
" object_detector = cv2.createBackgroundSubtractorMOG2(history=500, varThreshold=substractor_threshold)\n",
|
||||
" \n",
|
||||
" cap = cv2.VideoCapture(movie_name)\n",
|
||||
" cap.set(cv2.CAP_PROP_FPS, 60)\n",
|
||||
"\n",
|
||||
" pbar = tqdm(total = time_to_capture * 60)\n",
|
||||
" i = 0\n",
|
||||
" frames = []\n",
|
||||
" while True:\n",
|
||||
" ret, frame = cap.read()\n",
|
||||
" if(frame is not None):\n",
|
||||
" pbar.update(1)\n",
|
||||
" i += 1\n",
|
||||
" detection_field = frame[detection_area[0][0]: detection_area[0][1],detection_area[1][0]:detection_area[1][1]]\n",
|
||||
" mask = object_detector.apply(detection_field)\n",
|
||||
" _, mask = cv2.threshold(mask,mask_parameters[0],mask_parameters[1], cv2.THRESH_BINARY)\n",
|
||||
" conturs, _ =cv2.findContours(mask, cv2.RETR_LIST , cv2.CHAIN_APPROX_TC89_L1)\n",
|
||||
"\n",
|
||||
" images = []\n",
|
||||
" counter = 0\n",
|
||||
" for cnt in conturs:\n",
|
||||
" area = cv2.contourArea(cnt)\n",
|
||||
" if area > object_area_to_detect:\n",
|
||||
" counter += 1\n",
|
||||
" x,y,w,h = cv2.boundingRect(cnt)\n",
|
||||
" rectangle = cv2.rectangle(detection_field,(x,y),(x+w,y+h),(0,255,0),3)\n",
|
||||
" image_to_predict = detection_field[y:y+h,x:x+w]\n",
|
||||
" image_to_predict = cv2.resize(image_to_predict,(224,224))\n",
|
||||
" images.append((x,y,rectangle,image_to_predict))\n",
|
||||
" if images:\n",
|
||||
" for i,image in enumerate(images):\n",
|
||||
" pred = model(x=tf.convert_to_tensor(image[3][None, :], dtype='float32'))\n",
|
||||
" labels = [class_names[np.argmax(pre)] for pre in pred]\n",
|
||||
" cv2.putText(image[2], labels[0], (image[0], image[1]-10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (36,255,12), 1)\n",
|
||||
" rectangle = cv2.rectangle(frame,(detection_area[1][0],detection_area[0][0]),(detection_area[1][1],detection_area[0][1]),(255,0,0),3)\n",
|
||||
" cv2.putText(rectangle,f'DETECTION AREA DETECTED OBJECTS: {counter}',(330,80),cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0,0,255), 4)\n",
|
||||
" frames.append(frame)\n",
|
||||
" if i >= time_to_capture * 60:\n",
|
||||
" cv2.destroyAllWindows()\n",
|
||||
" pbar.close()\n",
|
||||
" return frames\n",
|
||||
" #frame = cv2.resize(frame, (movie_resize[0], movie_resize[1])) \n",
|
||||
" #cv2.imshow(\"roi\", frame)\n",
|
||||
"\n",
|
||||
" key = cv2.waitKey(30)\n",
|
||||
" if key == 27:\n",
|
||||
" cv2.destroyAllWindows()\n",
|
||||
" pbar.close()\n",
|
||||
" return frames\n",
|
||||
" else:\n",
|
||||
" cv2.destroyAllWindows()\n",
|
||||
" pbar.close()\n",
|
||||
" return frames"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 3,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def wrap_frozen_graph(graph_def, inputs, outputs, print_graph=False):\n",
|
||||
" def _imports_graph_def():\n",
|
||||
" tf.compat.v1.import_graph_def(graph_def, name=\"\")\n",
|
||||
"\n",
|
||||
" wrapped_import = tf.compat.v1.wrap_function(_imports_graph_def, [])\n",
|
||||
" import_graph = wrapped_import.graph\n",
|
||||
"\n",
|
||||
" if print_graph == True:\n",
|
||||
" print(\"-\" * 50)\n",
|
||||
" print(\"Frozen model layers: \")\n",
|
||||
" layers = [op.name for op in import_graph.get_operations()]\n",
|
||||
" for layer in layers:\n",
|
||||
" print(layer)\n",
|
||||
" print(\"-\" * 50)\n",
|
||||
"\n",
|
||||
" return wrapped_import.prune(\n",
|
||||
" tf.nest.map_structure(import_graph.as_graph_element, inputs),\n",
|
||||
" tf.nest.map_structure(import_graph.as_graph_element, outputs))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"with tf.io.gfile.GFile(\"../frozen_models/frozen_graph_best_vgg.pb\", \"rb\") as f:\n",
|
||||
" graph_def = tf.compat.v1.GraphDef()\n",
|
||||
" loaded = graph_def.ParseFromString(f.read())"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 5,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"frozen_func = wrap_frozen_graph(graph_def=graph_def,\n",
|
||||
" inputs=[\"x:0\"],\n",
|
||||
" outputs=[\"Identity:0\"],\n",
|
||||
" print_graph=False)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 6,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"class_names=sorted(['Fish', \"Jellyfish\", 'Lionfish', 'Shark', 'Stingray', 'Turtle'])"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 7,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stderr",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"1037it [27:07, 1.57s/it] \n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"frames = object_detection_with_neural_pred(\n",
|
||||
" '../examples_movie/rybki2.mp4',\n",
|
||||
" background_substract_method='KNN',\n",
|
||||
" substractor_threshold=100,\n",
|
||||
" mask_parameters=[254,255],\n",
|
||||
" movie_resize=[960,540],\n",
|
||||
" detection_area=[(500,900),(800,1900)],\n",
|
||||
" object_area_to_detect=1000,\n",
|
||||
" model=frozen_func,\n",
|
||||
" class_names=class_names,\n",
|
||||
" time_to_capture = 5\n",
|
||||
")"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 10,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"save_video('saved_movies/example_detection_9', frames,frames[0].shape,60)"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"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.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)]"
|
||||
},
|
||||
"orig_nbformat": 4,
|
||||
"vscode": {
|
||||
"interpreter": {
|
||||
"hash": "393784674bcf6e74f2fc9b1b5fb3713f9bd5fc6f8172c594e5cfa8e8c12849bc"
|
||||
}
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 2
|
||||
}
|
2240
notepads/yolo_examples.ipynb
Normal file
BIN
vgg-stopklatka.png
Normal file
After Width: | Height: | Size: 1.8 MiB |
BIN
yolo-stopklatka.png
Normal file
After Width: | Height: | Size: 1.6 MiB |