블로그 이미지
사람이 하늘처럼 맑아 보일때가 있다. 그때 나는 하늘 냄새를 맡는다.
by cheonbi

CALENDAR

«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
  • Total :
  • Today :  | Yesterday :

CATEGORY

분류 전체보기 (43)
빅데이터분석 (19)
경제전략 (8)
인문학 (5)
언어 (5)
일상 (6)

RECENT ARTICLE

RECENT COMMENT

RECENT TRACKBACK



from keras import backend as K

from keras.utils import np_utils

from keras.layers.core import Dense, Dropout, Activation, Flatten, Reshape

from keras.layers.convolutional import Convolution3D, MaxPooling3D, AveragePooling3D

from keras.layers.convolutional import Convolution2D, MaxPooling2D, AveragePooling2D

from keras.layers import LSTM, TimeDistributed

from keras.layers import Input

from keras.models import Model

from keras.models import load_model

from keras.metrics import top_k_categorical_accuracy

from sklearn import preprocessing

from sklearn.manifold import TSNE

from sklearn.model_selection import train_test_split

from sklearn.metrics import confusion_matrix

from PIL import Image

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

import glob

import itertools

%matplotlib inline

 

# Hyperparameter Definition

ped2_label_by_frame = pd.read_table('./dataset/UCSDped2/label.m', header=None, skiprows=0).values

resized_as = (30, 40)

window_size = 10

label_threshold = int(window_size*0.5)

 

 

ped1_dataset_feature, ped1_dataset_label = np.zeros((0, window_size, resized_as[0], resized_as[1])), np.zeros((0, ))

normal_video_list, abnormal_video_list = sorted(glob.glob('../../../dataset_tmp/ucsd/UCSDped1/Train/*')), sorted(glob.glob('../../../dataset_tmp/ucsd/UCSDped1/Test/*'))

 

 

# Preprocessing Ped1

ped1_dataset_feature, ped1_dataset_label = np.zeros((0, window_size, resized_as[0], resized_as[1])), np.zeros((0, ))

normal_video_list, abnormal_video_list = sorted(glob.glob('../../../dataset_tmp/ucsd/UCSDped1/Train/*')), sorted(glob.glob('../../../dataset_tmp/ucsd/UCSDped1/Test/*'))

for v in abnormal_video_list:

    video_index = int(v.split('/')[-1].split('Test')[-1])

    video_label = ped1_label_by_frame[video_index-1]

    frames = sorted(glob.glob(v+'/*.tif'))

    n_frames = len(frames)

    n_windows = n_frames-window_size+1

    window_buffer_feature = np.zeros((n_windows, window_size, resized_as[0], resized_as[1]), dtype='int')

    window_buffer_label = np.zeros((n_windows,), dtype='int')

    for wi in range(n_windows):

        for w in range(window_size):

            n_abnormal_frame = 0

            for vl in range(len(video_label[0].split(','))):

                for li in range(wi+w, wi+w+window_size):

                    if(int(video_label[0].split(',')[vl].split(':')[0])-1<=li and li<=int(video_label[0].split(',')[vl].split(':')[1])-1):

                        n_abnormal_frame += 1

            if(label_threshold<=n_abnormal_frame):

                window_buffer_label[wi] = 1

            window_buffer_feature[wi][w] = np.asarray(Image.open(frames[wi+w]).resize((resized_as[1], resized_as[0]), Image.ANTIALIAS))

    ped1_dataset_feature, ped1_dataset_label = np.concatenate((ped1_dataset_feature, window_buffer_feature), axis=0), np.concatenate((ped1_dataset_label, window_buffer_label), axis=0)

    print("File name: %s, n_frames: %d, n_windows: %d, Abnormal frame range: %s, n_abnormal_window: %d" %(v.split('/')[-1], n_frames, n_windows, video_label[0], len(window_buffer_label[window_buffer_label==1])))

for v in normal_video_list:

    video_index = int(v.split('/')[-1].split('Train')[-1])

    frames = sorted(glob.glob(v+'/*.tif'))

    n_frames = len(frames)

    n_windows = n_frames-window_size+1

    window_buffer_feature = np.zeros((n_windows, window_size, resized_as[0], resized_as[1]), dtype='int')

    window_buffer_label = np.zeros((n_windows,), dtype='int')

    for wi in range(n_windows):

        for w in range(window_size):

            window_buffer_label[wi] = 0

            window_buffer_feature[wi][w] = np.asarray(Image.open(frames[wi+w]).resize((resized_as[1], resized_as[0]), Image.ANTIALIAS))

    ped1_dataset_feature, ped1_dataset_label = np.concatenate((ped1_dataset_feature, window_buffer_feature), axis=0), np.concatenate((ped1_dataset_label, window_buffer_label), axis=0)

    print("File name: %s, n_frame: %d, n_windows: %d, Abnormal frame range: None, n_abnormal_window: %d" %(v.split('/')[-1], n_frames, n_windows, len(window_buffer_label[window_buffer_label==1])))

np.save('../../../dataset_tmp/ucsd/ped1_np/ped1_X_win'+str(window_size), ped1_dataset_feature), np.save('../../../dataset_tmp/ucsd/ped1_np/ped1_Y_win'+str(window_size), ped1_dataset_label)

print("Done. Dataset generated: %s, %s. Class balance: %d: %d" %(ped1_dataset_feature.shape, ped1_dataset_label.shape, ped1_dataset_label[ped1_dataset_label==0].shape[0], ped1_dataset_label[ped1_dataset_label==1].shape[0]))

 

 

# Preprocessing Ped2

ped2_dataset_feature, ped2_dataset_label = np.zeros((0, window_size, resized_as[0], resized_as[1])), np.zeros((0, ))

normal_video_list, abnormal_video_list = sorted(glob.glob('../../../dataset_tmp/ucsd/UCSDped2/Train/*')), sorted(glob.glob('../../../dataset_tmp/ucsd/UCSDped2/Test/*'))

for v in abnormal_video_list:

    video_index = int(v.split('/')[-1].split('Test')[-1])

    video_label = ped2_label_by_frame[video_index-1]

    frames = sorted(glob.glob(v+'/*.tif'))

    n_frames = len(frames)

    n_windows = n_frames-window_size+1

    window_buffer_feature = np.zeros((n_windows, window_size, resized_as[0], resized_as[1]), dtype='int')

    window_buffer_label = np.zeros((n_windows,), dtype='int')

    for wi in range(n_windows):

        for w in range(window_size):

            n_abnormal_frame = 0

            for vl in range(len(video_label[0].split(','))):

                for li in range(wi+w, wi+w+window_size):

                    if(int(video_label[0].split(',')[vl].split(':')[0])-1<=li and li<=int(video_label[0].split(',')[vl].split(':')[1])-1):

                        n_abnormal_frame += 1

            if(label_threshold<=n_abnormal_frame):

                window_buffer_label[wi] = 1

            window_buffer_feature[wi][w] = np.asarray(Image.open(frames[wi+w]).resize((resized_as[1], resized_as[0]), Image.ANTIALIAS))

    ped2_dataset_feature, ped2_dataset_label = np.concatenate((ped2_dataset_feature, window_buffer_feature), axis=0), np.concatenate((ped2_dataset_label, window_buffer_label), axis=0)

    print("File name: %s, n_frames: %d, n_windows: %d, Abnormal frame range: %s, n_abnormal_window: %d" %(v.split('/')[-1], n_frames, n_windows, video_label[0], len(window_buffer_label[window_buffer_label==1])))

for v in normal_video_list:

    video_index = int(v.split('/')[-1].split('Train')[-1])

    frames = sorted(glob.glob(v+'/*.tif'))

    n_frames = len(frames)

    n_windows = n_frames-window_size+1

    window_buffer_feature = np.zeros((n_windows, window_size, resized_as[0], resized_as[1]), dtype='int')

    window_buffer_label = np.zeros((n_windows,), dtype='int')

    for wi in range(n_windows):

        for w in range(window_size):

            window_buffer_label[wi] = 0

            window_buffer_feature[wi][w] = np.asarray(Image.open(frames[wi+w]).resize((resized_as[1], resized_as[0]), Image.ANTIALIAS))

    ped2_dataset_feature, ped2_dataset_label = np.concatenate((ped2_dataset_feature, window_buffer_feature), axis=0), np.concatenate((ped2_dataset_label, window_buffer_label), axis=0)

    print("File name: %s, n_frame: %d, n_windows: %d, Abnormal frame range: None, n_abnormal_window: %d" %(v.split('/')[-1], n_frames, n_windows, len(window_buffer_label[window_buffer_label==1])))

np.save('../../../dataset_tmp/ucsd/ped2_np/ped2_X_win'+str(window_size), ped2_dataset_feature), np.save('../../../dataset_tmp/ucsd/ped2_np/ped2_Y_win'+str(window_size), ped2_dataset_label)

print("Done. Dataset generated: %s, %s. Class balance: %d: %d" %(ped2_dataset_feature.shape, ped2_dataset_label.shape, ped2_dataset_label[ped2_dataset_label==0].shape[0], ped2_dataset_label[ped2_dataset_label==1].shape[0]))

'빅데이터분석 > 파이썬 활용' 카테고리의 다른 글

Python Code 함수1  (0) 2019.11.15
Python Code 로직  (0) 2019.11.15
!TSNE  (0) 2019.11.11
!UCSD_ANAMALY_DATASET + LRCN  (0) 2019.11.11
Python Code 편의 기능  (0) 2019.11.11
And