Laboratoriya mashg’uloti Mavzu: Videodagi obyektlarni aniqlash. Ishdan maqsad


Download 390.53 Kb.
Pdf ko'rish
Sana05.01.2022
Hajmi390.53 Kb.
#221812
Bog'liq
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) 

 

 

%% Slider Effect in a Video



 

% 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'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling