(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh(Luận văn thạc sĩ) Ứng dụng kỹ thuật phát hiện người trong giám sát an ninh
LỜI CAM ĐOAN Tơi cam đoan cơng trình nghiên c u c a Các số liệu, kết nêu luận văn trung thực chƣa đƣợc cơng bố cơng trình khác Tp Hồ Chí Minh, ngày 20 tháng năm 2017 (Ký tên ghi r họ tên) Nguyễn Thị Phong iii CẢM TẠ Em xin chân thành cám ơn quý Thầy, Cô khoa Điện – Điện Tử trang bị cho em kiến th c tảng giúp em hồn thành tốt luận văn Cám ơn bạn lớp KDT16A chia sẻ kinh nghiệm kiến th c suốt khóa học c ng nhƣ lúc làm luận văn Đặc biệt em xin chân thành cảm ơn Thầy hƣớng dẫn, T.S Hoàng Văn D ng T.S Lê Mỹ Hà hỗ trợ em lúc thực luận văn Học viên Nguyễn Thị Phong iv TÓM TẮT Phát đối tƣợng xác định diện c a đối tƣợng cụ thể c ng nhƣ xác định vị trí c a đối tƣợng Ba giai đoạn hệ thống phát đối tƣợng gồm trích rút đặc trƣng cụ thể từ đối tƣợng mẫu; Xây dựng mơ hình phân loại đối tƣợng theo mẫu xây dựng phát hiện, nhận dạng xác đối tƣợng vị trí ảnh video Phát ngƣời ch đề thu hút ý nghiên c u ng dụng đa dạng c a Đề tài nghiên c u phát ngƣời (upright people) dựa theo phƣơng pháp trƣợt cửa sổ (sliding window) để phát ngƣời ảnh tĩnh video Trích rút đặc trƣng HOG (Histogram of Oriented Gradients) từ đối tƣợng mẫu; dùng thuật toán SVM (Support Vector Machines) để thực phân loại Để tăng tốc độ hệ thống, dùng phƣơng pháp mô tả đặc trƣng HOG cải thiện tính nhanh mơ tả đặc trƣng HOG Cuối cùng, đề xuất ng dụng phát ngƣời vào mơ hình hệ thống nhận dạng cảnh báo an ninh Luận văn gồm bốn chƣơng: Chƣơng 1: Tổng quan Chƣơng 2: Cơ sở lý thuyết Chƣơng 3: Thực nghiệm - Đánh giá Chƣơng 4: Kết luận hƣớng phát triển v ABSTRACT Object detection is to determine the presence of a particular object as well as locate the object The three basic stages in an object detection system including extraction of specific features from the sample objects; Build an object classification model depending on a samples and build a detector that find exactly where objects are in the image or video Human detection is a topic that attracts attention researched by its various applications This topic explores detecting upright people based on the sliding window method to detect people on still images and videos Extract HOG (Histogram of Oriented Gradients) features from samples of objects; Use the SVM (Support Vector Machines) algorithm to perform the classifier To speed up the system, use the improved HOG feature descriptor method to compute the HOG feature descriptor Finally, the proposed people detector is suggested into applications for security alert identification system The thesis consists of four chapters: Chapter 1: Overview Chapter 2: Theoretical basis Chapter 3: Experiment - Evaluations Chapter 4: Conclusions and Development vi MỤC LỤC LÝ LỊCH KHOA HỌC i LỜI CAM ĐOAN ii CẢM TẠ iii TÓM TẮT iv MỤC LỤC vi DANH SÁCH CÁC HÌNH ix DANH SÁCH CÁC CHỮ VIẾT TẮT x CHƢƠNG 1: TỔNG QUAN 1.1.Giới thiệu 1.2.Các nghiên c u liên quan đến đề tài 1.2.1.Các nghiên c u nƣớc 1.2.2.Các nghiên c u nƣớc 1.3.Mục tiêu nghiên c u 1.4.Nhiệm vụ giới hạn c a đề tài 1.4.1.Nhiệm vụ c a đề tài 1.4.2 Giới hạn c a đề tài 1.5.Phƣơng pháp nghiên c u 1.6.Kế hoạch thực CHƢƠNG 2: CƠ SỞ LÝ THUYẾT 2.1.Tổng quan phƣơng pháp xử lý ảnh 2.2.Vector gradient ảnh 2.2.1.Vector gradient 2.2.2.Vector gradient ảnh 2.3.Đặc trƣng HOG 2.3.1.Bộ mô tả HOG tĩnh 11 2.3.2.Bộ mô tả HOG chuyển động 13 2.3.3.Trích rút đặc trƣng HOG 15 vii 2.3.4 Các biến thể c a phƣơng pháp HOG 20 2.3.5 Các mô tả đặc trƣng khác 21 2.4 Cải thiện cách tính đặc trƣng HOG 23 2.5 Máy vector hỗ trợ SVM (Support Vetor Machines) 25 2.5.1.Giới thiệu 25 2.5.2 Siêu phẳng (hyperplane) 27 2.5.3 Phân loại tuyến tính với lề cực đại (maximum-margin linear classifier) 28 2.5.4 Các điều kiện Karush-Kuhn-Tucker 31 2.5.5 Hàm phân loại tuyến tính với lề mềm cực đại (Soft Margin Classifiers) 31 2.5.6 Hàm nhân SVM phi tuyến (Kernel function and nonlinear SVMs) 31 2.6 Phƣơng pháp trƣợt window phát ngƣời 33 2.7 Đề xuất ng dụng phát ngƣời giám sát an ninh 39 2.7.1.Sự cấp thiết đề xuất mơ hình nhận dạng cảnh báo an ninh 39 2.7.2 Đề xuất mơ hình hệ thống nhận dạng cảnh báo an ninh 41 CHƢƠNG 3: THỰC NGHIỆM - ĐÁNH GIÁ 45 3.1 Thực nghiệm 45 3.1.1 Sơ đồ bƣớc thực 45 3.1.2 Trích rút đặc trƣng HOG 45 3.1.3 Huấn luyện test phân loại nhị phân 48 3.1.4 Xây dựng phát ngƣời ảnh tĩnh 52 3.1.5 Cải thiện thời gian tính đặc trƣng HOG dùng matlab 55 3.1.6 Phát ngƣời video 56 3.2 Đánh giá 57 3.2.1 Kết từ phân loại SVM 57 3.2.2 Kết cải thiện tính thời gian trích đặc trƣng HOG 60 CHƢƠNG KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 62 TÀI LIỆU THAM KHẢO 64 viii DANH SÁCH CÁC HÌNH HÌNH TRANG Hình 2.1: Sơ đồ bƣớc xử lý ảnh Hình 2.2: Đạo hàm theo hƣớng vector u Hình 2.3: Ví dụ pixel cần tính vector gradient Hình 2.4: Sơ đồ tổng quan trích rút đặc trƣng HOG tĩnh HOG chuyển động qua cửa sổ phát SVM phân loại đối tƣợng 10 Hình 2.5: Sơ đồ tổng quan trích rút đặc trƣng HOG tĩnh 13 Hình 2.6: Sơ đồ tổng quan trích rút đặc trƣng HOG chuyển động 15 Hình 2.7: Ví dụ cửa sổ nhận dạng cao 128 pixel x rộng 64 pixel 16 Hình 2.8: Ví dụ (a) ảnh xám; (b) ảnh gradient X; (c)ảnh gradient Y 17 Hình 2.9: Tính góc biên độ theo X-gradient Y-gradient 17 Hình 2.10: Mơ tả bin hƣớng c a HOG (a) ví dụ HOG c a cell ảnh (8x8 pixels) 18 Hình 2.11: Ví dụ HOG c a block ảnh (2x2 cells) 19 Hình 2.12: Ảnh (a) hình dung (Visualization) HOG c a ảnh: (b) kích thƣớc cell 8x8 pixel, (c) kích thƣớc cell 16x16 pixel 20 Hình 2.13: Mơ tả tồn q trình trích rút đặc trƣng HOG 20 Hình 2.14: Các biến thể c a mơ tả HOG tĩnh (a) Bộ mô tả R-HOG với block × cells (b) Bộ mơ tả C-HOG với cell trung tâm đƣợc chia thành phần nhỏ theo góc nhƣ shape contexts (c) Bộ mơ tả C-HOG với cell đơn trung tâm 21 Hình 2.15: Hai biến thể cƣờng độ gradient (GShapeC) biên có (E-ShapeC) dùng 1bin hƣớng C 21 Hình 2.16: Mơ tả hiệu c a HOG tốt so với phƣơng pháp trƣớc (a) thực tập liệu c a MIT; (b) thực tập liệu c a INRIA23 Hình 2.17: Xử lý gradient theo hƣớng c a ảnh phƣơng pháp tổng tích l y 24 ix Hình 2.18: Sơ đồ cải thiện tính đặc trƣng HOG 24 Hình 2.19: Có vơ số đƣờng thẳng phân chia tuyến tính, nhiên với đƣờng phân chia H5, có điểm bị phân loại nhầm 26 Hình 2.20: Khơng thể phân chia lớp liệu cách tuyến tính Ánh xạ liệu khơng gian ban đầu vào không gian nhiều chiều 27 Hình 2.21: Việc phân tách liệu trở nên dễ dàng không gian 27 Hình 2.22: Các siêu phẳng phân chia tập mẫu thành hai lớp support vector SVM 28 Hình 2.23: Các siêu phẳng H+ H- SVM 30 Hình 2.24: Mơ tả phƣơng pháp trƣợt window 34 Hình 2.25: Ví dụ hai window phát gần 34 Hình 2.26: Ví dụ loại bỏ khơng cực đại (Non-Maximum Suppression) 37 Hình 2.27: Minh họa hình chóp tỉ lệ, m c mô tả tỉ lệ so với ảnh gốc 38 Hình 2.28: Một vài kết phát trƣớc (a) sau (b) loại bỏ phát trùng lặp 39 Hình 2.29: Sơ đồ khối hệ thống nhận dạng cảnh báo an ninh 42 Hình 3.1: Sơ đồ bƣớc thực phát ngƣời 45 Hình 3.2: Một vài ảnh positive huấn luyện tập liệu c a INRIA 49 Hình 3.3: Một vài kết phát ngƣời ảnh tĩnh 55 Hình 3.4: Một vài kết phát ngƣời video 56 Hình 3.5: So sánh đƣờng cong ROC 59 Hình 3.6: Đƣờng cong ROC test với tập liệu c a INRIA 59 Hình 3.7: So sánh thời gian trích đặc trƣng trƣớc sau cải thiện phƣơng pháp tính vector đặc trƣng HOG c a ảnh - (a): Bƣớc trƣợt 4:4:32; (b) Bƣớc trƣợt 4:4:64 60 x DANH SÁCH CÁC CHỮ VIẾT TẮT ACF - Aggregated Channel Features C-HOG - Circle Histogram of Oriented Gradients DET - Detection Error Tradeoff EHOG - Enhanced Histogram of Oriented Gradients FN - False Negative FP - False Positive INRIA - French National Institute for Research in Computer Science and Control HOG - Histogram of Oriented Gradients HIKSVM - Histogram Intersection Kernel Support Vector Machine MHOG - Multiple Histogram of Oriented Gradients MIT - Massachusetts Institute of Technology RBF - Radial Basis Function R-HOG - Rectangle - Histogram of Oriented Gradients ROC - Receiver Operating Characteristic SS-HOG - Scale Space Histogram of Oriented Gradients SVM - Support Vector Machines TN - True Negative TP - True Positive xi Chƣơng TỔNG QUAN 1.1 Giới thiệu Trong thập kỷ qua, hệ thống tự động phát ngƣời thu hút ý đáng kể lĩnh vực thị giác máy tính nhận dạng mẫu đa dạng ng dụng c a Phát ngƣời đƣợc dùng rộng rãi nhiều lĩnh vực khác nhƣ phát hoạt động c a ngƣời an ninh, camera giám sát phát ngƣời ng dụng xe thông minh, Tự động phát ngƣời ảnh video gặp nhiều thách th c hệ thống thị giác máy tính Nguyên nhân ch yếu ảnh hƣởng c a mơi trƣờng, quang cảnh, trang phục, hình dáng đa dạng làm cho ngƣời khó nhận dạng Ví dụ nhƣ ngƣời mặc quần áo với đa dạng màu sắc, diện mạo tƣ khác nhau, che khuất lẫn c a ngƣời đám đông, điều kiện chiếu sáng khác nhau, Phát đối tƣợng xác định diện c a đối tƣợng cụ thể c ng nhƣ xác định vị trí c a đối tƣợng hình ảnh Ý tƣởng then chốt phƣơng pháp phát đối tƣợng dựa vào đặc trƣng cụ thể đƣợc trích rút từ đối tƣợng mẫu, nhờ thuật toán học xác định phân loại, so khớp đối tƣợng giống với đối tƣợng mẫu Bài toán phát ngƣời đƣợc phát biểu đơn giản là: cho ảnh cảnh video, xác định tất vị trí có đối tƣợng ngƣời Nghiên c u phát ngƣời dựa vào mô tả đặc trƣng, sau dùng giải thuật học máy để học đặc trƣng c a lớp đối tƣợng Cuối nhận dạng, phát đối tƣợng ảnh video dùng mơ hình đƣợc huấn luyện Phát đối tƣợng cụ thể ngƣời (pedestrian), đƣợc quan tâm nhiều năm gần Cùng với yêu cầu phát triển xã hội, hiệu hệ thống phát đòi hỏi ngày đƣợc cải thiện Có nhiều hƣớng tiếp cận khác để giải toán phát khác [1] nhƣ: phƣơng pháp tìm điểm quan trọng (Find hist_size = block_size*block_size*n_bins; descriptor_size = hist_size*(n_v_cells-block_size+desp)*(n_h_cellsblock_size+desp); H = zeros(descriptor_size, 1); col = 1; row = 1; % H = []; while row = 0.1 ok = ok + 1; true_positives = true_positives + 1; else ko = ko + 1; false_negatives = false_negatives + 1; % saving hard image for further retrain if safe [~, name, ext] = fileparts(positive_images(i).name); saving_path = [images_path,'/hard_examples/false_neg/', P9 name, '_n_wind_',num2str(l), ext]; % writting image imwrite(windows(:,:,:,l), saving_path); end end end end % hog extraction elapsed time pos_elapsed_time = toc(pos_start_time); fprintf('Elapsed time to classify positive images: %f seconds.\n',pos_elapsed_time); % ==================================================================== %% Reading all NEGATIVE images & computing the descriptor % Exhaustive search for hard examples % (space-scaled 64x128 windows) % ==================================================================== num_neg_images = size(negative_images,1); if strcmp(neg_method, 'pyramid') num_neg_windows = get_negative_windows_count(negative_images); elseif strcmp(neg_method, 'windows') num_neg_windows = num_neg_images*neg_chunk_size; end fprintf('testing with %d negative images and %d negative windows\n', num_neg_images,num_neg_windows); %% Computing HOG descriptor for all images (in chunks) neg_start_time = tic; false_positives = 0; true_negatives = 0; i = 0; while i < numel(negative_images) %% window obtaintion % All pyramid HOGS if strcmp(neg_method, 'pyramid') I = imread(negative_images(i+1).name); %% temporal [h,w,~] = size(I); if max(h,w) >= 160 ratio = max(96/w,160/h); I = imresize(I,ratio); end %% fin temporal [hogs, windows, wxl] = get_pyramid_hogs(I, descriptor_size, scale, stride); P10 labels = ones(size(hogs,1),1).*(-1); i = i+1; % random window HOG elseif strcmp(neg_method,'windows') this_chunk = min(neg_chunk_size, numel(negative_images)-i); windows = uint8(zeros(height,width,depth,this_chunk)); hogs = zeros(this_chunk, descriptor_size); labels = ones(size(hogs,1),1).*(-1); for l=1:this_chunk I = imread(negative_images(i+1).name); windows(:,:,:,l) = get_window(I,width,height, 'center'); hogs(l,:) = compute_HOG(windows(:,:,:,l),cell_size,block_size,n_bins); i = i+1; end end % just for fixing GUI freezing due to unic thread MatLab issue drawnow; %% prediction [predict_labels, ~, probs] = svmpredict(labels, hogs, model, '-b 1'); %% updating statistics for l=1:size(predict_labels) predict_label = predict_labels(l); if probs(l,1) < 0.1 ok = ok + 1; true_negatives = true_negatives + 1; else ko = ko + 1; false_positives = false_positives + 1; if safe % saving hard image for further retrain [~, name, ext] = fileparts(negative_images(i).name); if strcmp(neg_method, 'pyramid') [level, num_image] = get_window_indices(wxl, l); saving_path = [images_path,'/hard_examples/false_pos/', name, '_l',num2str(level), '_w',num2str(num_image),ext]; else saving_path = [images_path,'/hard_examples/false_pos/', name, '_n_wind_',num2str(l), ext]; end % writting image imwrite(windows(:,:,:,l), saving_path); P11 end end end end % hog extraction elapsed time neg_elapsed_time = toc(neg_start_time); fprintf('Elapsed time to classify negative images: %f seconds.\n',neg_elapsed_time); %% Printing gloabl results precision = true_positives/(true_positives+false_positives); recall = true_positives/(true_positives+false_negatives); fprintf('oks: %d \n',ok) fprintf('kos: %d \n',ko) fprintf('false positives: %d \n',false_positives) fprintf('false negatives: %d \n',false_negatives) fprintf('true positives: %d \n',true_positives) fprintf('true negatives: %d \n',true_negatives) fprintf('mis rate: %d \n',false_negatives / (true_positives + false_negatives)) fprintf('fppw: %d \n',false_positives / (ok + ko)) fprintf('Precision: %d \n',precision) fprintf('Recall: %d \n',recall) fprintf('F score: %d \n',2*((precision*recall)/(precision+recall))) % preparing values to return statistics = containers.Map; statistics('oks') = ok; statistics('kos') = ok; statistics('fp') = false_positives; statistics('tp') = true_positives; statistics('fn') = false_negatives; statistics('tn') = true_negatives; statistics('miss_rate') = false_negatives / (true_positives + false_negatives); statistics('fppw') = false_positives / (ok + ko); statistics('precision') = precision; statistics('recall') = recall; statistics('fscore') = 2*((precision*recall)/(precision+recall)); % -%% Aux function to obtain the test parameters % -function get_test_params() test_params = get_params('test_svm_params'); pos_chunk_size = test_params.pos_chunk_size; neg_chunk_size = test_params.neg_chunk_size; scale = test_params.scale; stride = test_params.stride; threshold = test_params.threshold; neg_method = test_params.neg_window_method; safe = test_params.safe; neg_instances = test_params.neg_instances; P12 pos_instances = test_params.pos_instances; w_params = get_params('window_params'); depth = w_params.color_depth; width = w_params.width; height = w_params.height; desc_params = get_params('desc_params'); cell_size = desc_params.cell_size; block_size = desc_params.block_size; n_bins = desc_params.n_bins; desp = 1; n_v_cells = floor(height/cell_size); n_h_cells = floor(width/cell_size); hist_size = block_size*block_size*n_bins; descriptor_size = hist_size*(n_v_cellsblock_size+desp)*(n_h_cells-block_size+desp); ok = 0; ko = 0; end end %% Aux function to know how many windows we'll have function count = get_negative_windows_count(negative_images) % computing number of levels in the pyramid count = 0; for i=1:numel(negative_images) I = imread(negative_images(i).name); %% temporal [h,w,~] = size(I); if max(h,w) >= 160 ratio = max(96/w,160/h); I = imresize(I,ratio); end %% fin temporal [~, windows] = get_pyramid_dimensions(I); count = count + windows; end end %% Aux function to know how the windows indices function [level, num_window] = get_window_indices(wxl, w_linear_index) accum_windows = 0; for i=1:size(wxl,2) accum_windows = accum_windows + wxl(i); if w_linear_index = 0.995); % positive match information coordinates = coordinates'; coordinates = coordinates(pos_indxs,:); probs = probs(pos_indxs,:); %% Computing level coordinates for drawing [bb_size, l0_coordinates] = compute_level0_coordinates(wxl, coordinates, pos_indxs, scale); %% Showing all positive windows in separate figures P14 if show_all windows = windows(:,:,:,pos_indxs); for w=1:size(pos_indxs,2) figure('name',sprintf('x=%d, y=%d', l0_coordinates(w,1),l0_coordinates(w,2))); % figure('name',sprintf('x=%d, y=%d', bb_size(w,1),bb_size(w,2))); ii = insertText(windows(:,:,:,w), [1,1], probs(w), 'FontSize',9,'BoxColor', 'green'); imshow(ii) end end %% Drawing detections over the original image draw = I; shape_inserter = other_shapeInserter; if ~draw_all shape_inserter = ok_shapeInserter; %% non-max-suppression! max_indxs = non_max_suppression(l0_coordinates, probs, bb_size); pos_indxs = pos_indxs(max_indxs); l0_coordinates = l0_coordinates(max_indxs,:); bb_size = bb_size(max_indxs, :); probs = probs(max_indxs,:); end draw = I; for w=1:size(pos_indxs,2) %% Drawing the rectangle on the original image x = l0_coordinates(w,1); y = l0_coordinates(w,2); % Rectangle conf bb_height = bb_size(w,1); bb_width = bb_size(w,2); rectangle = int32([x,y,bb_width,bb_height]); draw = step(shape_inserter, draw, rectangle); draw = insertText(draw, [x,y+bb_height], probs(w), 'FontSize',9,'BoxColor', 'green'); end % Showing image with all the detection boxes imshow(draw); figure(gcf); end %% Aux function to compute the windows coordiantes at level pyramid image function [bb_size, new_cords] = compute_level0_coordinates(wxl, coordinates, inds, scale) P15 % Consts bb_width = 64; bb_height = 128; % Vars new_cords = zeros(size(inds,2),2); bb_size = zeros(size(inds,2),2); % for each positive window index for i=1:size(inds,2) % linear index of the window ind = inds(i); % find the positive window original level level = 0; while ind > sum(wxl(1:level)) level = level + 1; end % fprintf('Match found at level %d\n', level); % compute original coordinates in Level0 image factor = (scale^(level-1)); new_cords(i,1) = floor(coordinates(i,1) * factor); new_cords(i,2) = floor(coordinates(i,2) * factor); % Bounding Box resizing? bb_size(i,1) = ceil(bb_height*factor); bb_size(i,2) = ceil(bb_width*factor); end end ///////////////////////////////////////////////////////// sliding_detector.m function sliding_detector(model) path = uigetdir('.\images','Select positive test image path'); if isa(path,'double') cprintf('Errors','Invalid paths \nexiting \n\n') return end images = rdir(strcat(path,filesep,'*.png')); for i=1:numel(images) file_name = images(i).name; disp(file_name); I = imread(file_name); [h,w,~] = size(I); scale = min(w/86, h/142); I = imresize(I, 1.2/scale); draw_sliding_window(I,model); end end P16 CODE PHÁT HIỆN NGƢỜI TRONG VIDEO Phong_nhandang.m %% Nhan dang nguoi video video=VideoReader('E:\PROJECT_VIDEO\VIDEO\video1.MP4'); nFrames=video.NumberOfFrames; % frame = read(video,[1 10]); fprintf('Totally, there are %d frames \n',nFrames); % j=1; h = figure; for ind=1:1:nFrames img=read(video,ind); img=imresize(img,1.5); peopleDetector = vision.PeopleDetector; ClassificationModel = 'UprightPeople_128x64'; ClassificationThreshold = 3; MinSize = []; MaxSize = []; ScaleFactor = 1.05; WindowStride = [8 8]; MergeDetections = true; UseROI = false; [bbox,score] = step(peopleDetector,img); % Detect people using the people detector object [selectedBbox, selectedScore] = selectStrongestBbox(bbox, score); img = insertObjectAnnotation(img,'rectangle', selectedBbox, cellstr(num2str(selectedScore)), 'Color', 'y'); figure(h); imshow(img); hold on hold off %refresh(h); %pause(0.1); I = getframe(h); imwrite(I.cdata,strcat('Output\image1(',num2str(ind),').jpg')); end % close(video); P17 S K L 0 ... Hình 2.28 Một vài kết phát trƣớc (a) sau (b) loại bỏ phát trùng lặp 2.7 Đề xuất ứng dụng phát ngƣời giám sát an ninh 2.7.1 Sự cấp thiết đề xuất mơ hình nhận dạng cảnh báo an ninh Đầu năm 2017 đến... vào nhà dân quan vào dịp tết, dịp lễ, vào ngày nghỉ ban đêm Đa số nhà c a nạn nhân bị cắp có trang bị camera an ninh, chí nhà vị trí an ninh tốt Các quan bị cắp có trang bị camera an ninh đội ng... function and nonlinear SVMs) 31 2.6 Phƣơng pháp trƣợt window phát ngƣời 33 2.7 Đề xuất ng dụng phát ngƣời giám sát an ninh 39 2.7.1.Sự cấp thiết đề xuất mô hình nhận dạng cảnh báo an ninh