Laboratoriya mashg’uloti Mavzu: Videodagi obyektlarni aniqlash. Ishdan maqsad
Download 390.53 Kb. Pdf ko'rish
|
14-15 laboratoriya
14-15-Laboratoriya mashg’uloti Mavzu: Videodagi obyektlarni aniqlash. Ishdan maqsad: Videodagi va rasmdagi obyektlarni aniqlash texnologiyasi haqida umumiy tushunchaga ega bo’lish hamda Matlab dasturida videodagi obyektni aniqlash uchun kerakli dasturni yaratish. Ob'ektni aniqlash - bu tasvirlar yoki videofilmlardagi narsalarni aniqlash uchun kompyuterni ko'rish texnikasi. Ob'ektni tanib olish - bu chuqur o'rganish va mashinada o'rganish algoritmlarining asosiy natijasidir. Odamlar fotosuratni tomosha qilganda yoki video tomosha qilganda biz odamlarni, narsalarni, sahnalarni va vizual tafsilotlarni osongina aniqlashimiz mumkin. Maqsad - kompyuterga odamlarga tabiiy ravishda keladigan narsalarni qilishni o'rgatish: tasvir tarkibida nimani o'z ichiga olganligi to'g'risida tushunchaga ega bo'lish.
1-rasm. Ob'ektlarni tanib olish yordamida ob'ektlarning turli toifalarini aniqlash. Ob'ektni tanib olish haydovchisiz avtomashinalarning asosiy texnologiyasi bo'lib, ularga to'xtash belgisini tanib olish yoki piyodalarni chiroq ustunidan farqlash imkoniyatini beradi. Shuningdek, u biomaging, sanoat nazorati va robotlashtirilgan ko'rishdagi kasalliklarni aniqlash kabi turli xil dasturlarda foydalidir. Ob'ektni aniqlash va ob'ektni topish Ob'ektni aniqlash va ob'ektni tanib olish - ob'ektlarni aniqlashning o'xshash texnikasi, ammo ular bajarilishida turlicha. Ob'ektni aniqlash - bu rasmlardagi ob'ektlarning nusxalarini topish jarayoni. Chuqur o'rganish sharoitida ob'ektni aniqlash - bu ob'ektni topishning kichik to'plami, bu erda ob'ekt nafaqat aniqlanadi, balki tasvirda ham joylashgan. Bu bir nechta ob'ektlarni aniqlashga va bitta rasm ichida joylashgan bo'lishiga imkon beradi.
Ob'ektni aniqlash uchun siz turli xil yondashuvlardan foydalanishingiz mumkin. So'nggi paytlarda mashinani o'rganish va chuqur o'rganish texnikasi ob'ektlarni tanib olish muammolariga mashhur yondashuvlarga aylandi. Ikkala usul ham tasvirdagi ob'ektlarni aniqlashni o'rganadi, ammo ular bajarilishida farq qiladi.
Quyidagi bo'limda ob'ektni tanib olish uchun mashinani o'rganish va chuqur o'rganish o'rtasidagi farqlar tushuntiriladi va bu ikkala texnikani qanday amalga oshirish kerakligi ko'rsatilgan. Ob'ektlarni aniqlash usullari Chuqur o'rganish texnikasi ob'ektni tanib olishning mashhur uslubiga aylandi. Konvolyutsion neyron tarmoqlari yoki CNNlar kabi chuqur o'rganish modellari ushbu ob'ektni aniqlash uchun ob'ektga xos xususiyatlarni avtomatik ravishda o'rganish uchun ishlatiladi. Masalan, CNN minglab o'quv rasmlarini tahlil qilish va mushuk va itlarni farq qiladigan xususiyatlarini o'rganish orqali mushuk va itlar o'rtasidagi farqlarni aniqlashni o'rganishi mumkin. Chuqur o'rganish yordamida ob'ektni aniqlashni amalga oshirishda ikkita yondashuv mavjud: Modelni noldan o'rgatish: Chuqur tarmoqni noldan o'rgatish uchun siz juda katta yorliqli ma'lumotlar to'plamini to'playsiz va xususiyatlarni o'rganadigan va modelni yaratadigan tarmoq arxitekturasini yaratasiz. Natija ta'sirchan bo'lishi mumkin, ammo bu yondashuv katta miqdordagi trening ma'lumotlarini talab qiladi va siz CNN-da qatlamlar va vaznlarni o'rnatishingiz kerak. Oldindan o'rganilgan chuqur o'rganish modelidan foydalanish: Ko'pgina chuqur o'quv dasturlari transferni o'rganish yondashuvidan foydalanadi, bu jarayon oldindan tayyorlangan modelni aniq sozlashni o'z ichiga oladi. Siz AlexNet yoki GoogLeNet kabi mavjud bo'lgan tarmoqdan boshlaysiz va ilgari noma'lum sinflarni o'z ichiga olgan yangi ma'lumotlarni to'ldirasiz. Ushbu usul kamroq vaqtni talab qiladi va tezroq natijani ta'minlashi mumkin, chunki model allaqachon minglab yoki millionlab tasvirlar bo'yicha o'qitilgan. Chuqur o'rganish yuqori aniqlikni taklif qiladi, ammo aniq bashorat qilish uchun katta hajmdagi ma'lumotlar talab qilinadi. Mashinada o'qitish texnikasi ob'ektlarni tanib olishda ham mashhur bo'lib, chuqur o'rganishdan ko'ra turli xil yondashuvlarni taklif etadi. Mashinada o'qitish texnikasining keng tarqalgan namunalari: Viyola-Jons algoritmi, uning yordamida turli xil narsalarni, shu jumladan yuzlar va yuqori tanalarni tanib olish mumkin Mashinalarni o'rganish bo'yicha ish jarayoni Mashinani o'rganishning standart yondashuvi yordamida ob'ektni aniqlashni amalga oshirish uchun siz rasmlar to'plamidan (yoki video) boshlaysiz va har bir rasmdagi tegishli xususiyatlarni tanlaysiz. Masalan, funktsiyalarni chiqarish algoritmi sizning ma'lumotlaringizdagi sinflar o'rtasida farqlash uchun ishlatilishi mumkin bo'lgan chekka yoki burchak xususiyatlarini chiqarishi mumkin.
Ushbu xususiyatlar mashinada o'rganish modeliga qo'shiladi, bu ushbu xususiyatlarni alohida toifalariga ajratadi, so'ngra yangi ob'ektlarni tahlil qilish va tasniflashda ushbu ma'lumotlardan foydalanadi. Ob'ektni aniq tanib olish modelini yaratish uchun ko'plab kombinatsiyalarni taklif qiladigan turli xil mashinalarni o'rganish algoritmlaridan va xususiyatlarni ajratib olish usullaridan foydalanishingiz mumkin.
Ob'ektni tanib olish uchun mashinasozlikdan foydalanish o'rganish uchun xususiyatlar va klassifikatorlarning eng yaxshi kombinatsiyasini tanlash uchun moslashuvchanlikni taklif etadi. Minimal ma'lumotlar bilan aniq natijalarga erishishi mumkin. Mashinada o'rganish va ob'ektni tanib olish uchun chuqur o'rganish Ob'ektni aniqlash uchun eng yaxshi yondashuvni aniqlash sizning arizangizga va siz hal qilmoqchi bo'lgan muammoga bog'liq. Ko'pgina hollarda, mashinada o'rganish samarali texnika bo'lishi mumkin, ayniqsa, tasvirning qaysi xususiyatlari yoki xususiyatlarini ob'ektlarning sinflarini farqlash uchun eng yaxshi usullardan foydalanishni bilsangiz. Mashinali o'qitish va chuqur o'rganish o'rtasida tanlovni amalga oshirishda e'tiborga olish kerak bo'lgan asosiy narsa - bu sizning kuchli GPU-ga va ko'plab etiketlangan o'quv rasmlariga ega bo'lishingiz. Agar ushbu savollarning biriga javob yo'q bo'lsa, mashinani o'rganish yondashuvi eng yaxshi tanlov bo'lishi mumkin. Chuqur o'rganish texnikasi ko'proq rasmlar bilan ishlashga moyildir va GPU modelni o'qitish uchun zarur bo'lgan vaqtni kamaytirishga yordam beradi.
Ob'ektni tanib olish uchun boshqa asosiy yondashuvlar dasturga qarab etarli bo'lishi mumkin. Shablonni moslashtirish - bu kattaroq rasmda mos keladigan hududlarni topish uchun kichik rasm yoki shablonni ishlatadi. Rasm segmentatsiyasi va blokirovka tahlili - bu o'lcham, rang yoki shakl kabi oddiy ob'ekt xususiyatlaridan foydalanadi. Odatda, agar ob'ektni tasvir segmentatsiyasi kabi oddiy yondashuv yordamida tanib olish mumkin bo'lsa, uni eng sodda yondashuvdan boshlash yaxshidir. Bu yuzlab yoki minglab o'quv rasmlarini yoki o'ta murakkab echimlarni talab qilmaydigan ishonchli echimni taqdim etishi mumkin. Matlab dasturida rasmdagi va videodagi obyektlarni tanib oluvchi bir nechta dasturlarni misol keltiramiz. %% Estimating Optical Flow
% This example uses the Farneback Method to to estimate the direction and speed of moving
% cars in the video % Copyright 2018 The MathWorks, Inc.
%% Read the video into MATLAB vidReader = VideoReader( 'visiontraffic.avi' );
opticFlow = opticalFlowFarneback; %% Estimate Optical Flow of each frame
while
hasFrame(vidReader) frameRGB = readFrame(vidReader); frameGray = rgb2gray(frameRGB); flow = estimateFlow(opticFlow,frameGray); imshow(frameRGB) hold
on
% Plot the flow vectors plot(flow, 'DecimationFactor' ,[25 25], 'ScaleFactor' , 2)
% Find the handle to the quiver object
q = findobj(gca, 'type' , 'Quiver' ); % Change the color of the arrows to red
q.Color = 'r' ; drawnow hold off
end
%% Face Detection in a Video % This example uses the Viola-Jones Algorithm to detect a face in the
% video. It shows how to read, write, process and display videos. % Copyright 2018 The MathWorks, Inc.
%% Read a video into MATLAB videoFileReader = VideoReader( 'tilted_face.avi' );
myVideo = VideoWriter( 'myFile.avi' ); depVideoPlayer = vision.DeployableVideoPlayer; % Initialize the Detector
faceDetector = vision.CascadeObjectDetector(); open(myVideo); %% Detect faces in each frame
while
hasFrame(videoFileReader) videoFrame = readFrame(videoFileReader);
% Detect the face bbox = faceDetector(videoFrame);
% Insert a box around the detected face videoFrame = insertShape(videoFrame, 'Rectangle' , bbox);
% Display video depVideoPlayer(videoFrame); % Write frame to a video
writeVideo(myVideo, videoFrame); %pause(1/videoFileReader.FrameRate);
end
close(myVideo)
% This example shows how to create the slider effect in a video. One part
% of it detects edges using the Canny Method. % Copyright 2018 The MathWorks, Inc.
%% Read the video into MATLAB videoFileReader = VideoReader( 'tilted_face.avi' );
% This value determine the speed of the sliding effect
speed = 10; col = videoFileReader.width; % Display video
depVideoPlayer = vision.DeployableVideoPlayer; %% Process each frame
while hasFrame(videoFileReader) % Left to Right
for idx = 1:speed:col videoFrame = readFrame(videoFileReader);
% Detect edges in the grayscale image
edgeFrame = edge(rgb2gray(videoFrame), 'canny' );
edgeFrame = edgeFrame * 255;
% Part of the Input Frame
n1 = videoFrame(:, 1 : idx,:); % Part of the Edge Detected Frame
n2 = edgeFrame(:, idx+1 : col ); % Concatenating them together
finalFrame = [n1 cat(3,n2,n2,n2)]; depVideoPlayer(finalFrame);
end
% Right to Left
for idx = col:-speed:1 videoFrame = readFrame(videoFileReader);
% Detect edges in the grayscale image
edgeFrame = edge(rgb2gray(videoFrame), 'canny' );
edgeFrame = edgeFrame * 255;
% Part of the Input Frame
n1 = videoFrame(:, 1 : idx,:); % Part of the Edge Detected Frame
n2 = edgeFrame(:, idx+1 : col ); % Concatenating them together
finalFrame = [n1 cat(3,n2,n2,n2)]; depVideoPlayer(finalFrame);
end
end
% for idx=1:10:e
% n1 = i(:, 1 : idx); % n2 = i2(:, idx+1 : e );
% imshow([n1 im2uint8(n2)]) %
% end
% for idx=e:-10:1 % n1 = i(:, 1 : idx);
% n2 = i2(:, idx+1 : e ); % imshow([n1 im2uint8(n2)])
%
% end
Download 390.53 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling