<jupyter_start><jupyter_text>STEP 1: Clonazione DarknetClonazione della repository personale (mi ha consentito di modificare il file "image.c" per croppare le immagini). All'interno sono presenti anche gli stream video (dir. "Video")Repository di origine: https://github.com/AlexeyAB/darknet.git<jupyter_code>!git clone https://github.com/SpanoChristian/darknet.git<jupyter_output><empty_output><jupyter_text>Creazione directory "dataset" che conterrà tutti i frame campionati dal video sorgente<jupyter_code>%cd ./darknet
%mkdir dataset/
%cd dataset/<jupyter_output><empty_output><jupyter_text>STEP 2: Campionamento frame da stream video<jupyter_code>%cd ../..
!wget http://hitis.altervista.org/CocktailParty.zip
!unzip CocktailParty.zip
%cd ./darknet/dataset/
import cv2
import random

def get_frame(stream):

  success = True
  count = 0

  video_sorgente = cv2.VideoCapture('../../CocktailParty/' + stream)
  fps = int(video_sorgente.get(cv2.CAP_PROP_FPS))

  if stream == "Cam_1.avi":
    camera = "c1"
  elif stream == "Cam_2.avi":
    camera = "c2"
  elif stream == "Cam_3.avi":
    camera = "c3"
  else:
    camera = "c4"

  while success:
    fps = int(video_sorgente.get(cv2.CAP_PROP_FPS))
    rnd_id = random.randint(0, 100000)
    success, image = video_sorgente.read()
    print('Lettura frame:', success)
    print('#Frame: ', fps)
    if count%(fps*20) == 0 and success==True:
         cv2.imwrite(str(rnd_id) + '_' + camera + '_%d.jpg'%count, image)
         print('Frame salvato con successo.')
    count += 1<jupyter_output><empty_output><jupyter_text>**Campionamento frame dalle telecamere**<jupyter_code>get_frame("Cam_1.avi")
get_frame("Cam_2.avi")
get_frame("Cam_3.avi")
get_frame("Cam_4.avi")<jupyter_output><empty_output><jupyter_text>Salvataggio del dataset scaricabile<jupyter_code>#!zip -r ../dataset.zip ../dataset/<jupyter_output><empty_output><jupyter_text>STEP 3: Verifica pre-requisiti e costruzione di DarknetLa costruzione consente di utilizzare il file eseguibile "darknet" che permette di avviare l'identificazione degli oggetti<jupyter_code># change makefile to have GPU and OPENCV enabled
%cd ..
!sed -i 's/OPENCV=0/OPENCV=1/' Makefile
!sed -i 's/GPU=0/GPU=1/' Makefile
!sed -i 's/CUDNN=0/CUDNN=1/' Makefile
!sed -i 's/CUDNN_HALF=0/CUDNN_HALF=1/' Makefile
# verify CUDA
!/usr/local/cuda/bin/nvcc --version
# make darknet (builds darknet so that you can then use the darknet executable file to run or train object detectors)
!make<jupyter_output><empty_output><jupyter_text>STEP 4: Download pesi YOLOv4 pretrainatiUtilizziamo questi pesi pretrainati per eseguire YOLOv4 ed identificare le persone.<jupyter_code>!wget https://github.com/AlexeyAB/darknet/releases/download/darknet_yolo_v3_optimal/yolov4.weights<jupyter_output><empty_output><jupyter_text>STEP 5: Avvio dell'identificazione e crop delle immaginiPer ogni frame ricavato allo STEP 2) viene avviata l'identificazione delle persone presenti nell'immagine e, per ognuna di queste, viene salvata la relativa immagine croppata nella directory "bounding_box_test". Il dataset che si verrà a creare sarà successivamente dato in pasto all'algoritmo di person re-identification.<jupyter_code># Creazione della directory dove si salveranno le persone croppate
%mkdir bounding_box_test/<jupyter_output><empty_output><jupyter_text><jupyter_code>%%bash

cd ./dataset/
for f in *.jpg; do
    cd ..
    ./darknet detector test cfg/coco.data cfg/yolov4.cfg yolov4.weights ./dataset/"$f"
    cd dataset/
done
!zip -r ./bounding_box_test.zip ./bounding_box_test/<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11446963336132102, 'fraction_numerical': 0.01343408900083963, 'mean_word_length': 5.32566371681416, 'pattern_counts': {'":': 3, '<': 37, '<?xml version=': 0, '>': 37, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '9', 'dir': 'jupyter-structured-clean-dedup', 'id': '210956', 'license': 'MIT', 'n_tokens_mistral': 1348, 'n_tokens_neox': 1315, 'n_words': 307, 'path': 'algorithms/Person_Re_Identification_Get_Frame.ipynb', 'repo_name': 'SpanoChristian/Person_reID_baseline_pytorch', 'size': '3573'}