პატარა მათემატიკა / ხაზოვანი ალგებრა Instagram– ის Face 3D ფილტრების უკან

ჩემი ძლიერი რწმენაა, რომ ყველა ჩვენგანს ოდესმე გამოუყენებია Snapchat / Instagram- ის ფილტრები, ან ყოველ შემთხვევაში, ვხედავთ, რომ ჩვენი მეგობრები იყენებენ მას და იზიარებენ მის სოციალურ მედიაში.

ჩვენ ვიწყებთ ვიცით ტერმინი "ფილტრები", როგორც მშვენიერი ან ფონზე, რომელიც დამატებულია ორნამენტებით, მოგვიანებით იგი უფრო პოპულარული გახდა, რადგან ეს ჩანს თითოეულ სახეზე კამერაზე, როგორიცაა სათვალეების სათვალეების ჩასმა, ბუასილის თავი, ასაკის გარდაქმნა და ა.შ. საკუთარი სახე

კონკრეტულად ამ პოსტში, ჩვენ განვიხილავთ, რას უნდა აკეთებდეს ჩვენი ტელეფონი / ინსტაგრამი, როდესაც ვაკეთებთ სახის ფილტრებს, ასე რომ სათვალეები ჩდება სწორ ადგილას და შეძლებს დაიცვას ჩვენი ხელმძღვანელის პოზიციები.

მოკლედ რომ ვთქვათ, სახის 3D ფილტრის ძირითადი პროცესი თანმიმდევრულად იყოფა 3 ფაზად:

  1. სახეების გამოვლენა
  2. სახის ღირშესანიშნაობების დადგენა
  3. ნივთის პროექცია

სახეების გამოვლენა და ღირშესანიშნაობების ამოცნობა მანქანების სწავლის / ღრმა სწავლის ნაწილია, რომელიც ობიექტის გამოვლენას ახდენს მთელი სურათიდან და რეგრესის აკეთებს. აღმოჩენილი თითოეული სახისთვის, იგი გადაეგზავნება მეორე ფაზის ალგორითმს, რათა შეაფასოს, თუ სად არის ცხვირი, თვალები, პირი და ა.შ., აქამდე უამრავი ალგორითმი და მონაცემთა ნაკრები მოიცავს 68 სახის ნიშანს. აქ არის შესანიშნავი წყარო შემდგომი მოსმენით.

სახის საეტაპო pyimagesearch.com

ამასთან, ჩვენ ფოკუსირებას გავაკეთებთ მესამე ფაზაზე (ნივთის პროექცია), რადგან ამაზე ვსაუბრობთ მათემატიკის / ხაზოვანი ალგებრა / მატრიცის ტრანსფორმაციაზე. რასაკვირველია, პირველ ორ ფაზას უამრავი მათემატიკა აქვს გასაშუქებელი, მაგრამ თითოეულ მათგანს აქვს დიდი ფირფიტა, რომ თავად განიხილავენ.

ნივთის პროექცია

საეტაპო ნიშნის გამოვლენის შედეგი არის x და y წერტილების კოორდინატების ნაკრები, რაც მხოლოდ 2D ინფორმაციას წარმოადგენს. ამასთან, ჩვენ უნდა ვიცოდეთ z- კოორდინატები, არის თუ არა მარცხენა თვალი უფრო შორს, ვიდრე კამერადან სწორი თვალი, ასე რომ, შეიძლება ითქვას, რომ სახე არის მარცხენა მხარეს ვუყურებთ, რადგან სათვალე მოჰყვებოდა რომელი გზით მივდივართ.

პრობლემა / მეთოდი, რომელსაც ჩვენ ვიყენებთ ასეთი პროექციის შესაქმნელად, ეწოდება "პერსპექტივა- n-წერტილი (PnP)" ან "Pinhole Camera Model". ეს ათწლეულების წინ არის მეთოდი, მაგრამ მაინც ხშირად გამოიყენება კომპიუტერის ხედვის მრავალი შემთხვევა, მათ შორის, რობოტები, რეალობის გაძლიერება და ჩვენი განხილვა. ამ მეთოდის შესაქმნელად, მას სჭირდება 3 ელემენტი:

1. მსოფლიოს წერტილები კოორდინაციას უწევს სივრცეს, როგორც მითითებას

ტერმინი არის ძალიან მაგარი ”მსოფლიო კოორდინატთა სივრცე”, ეს არის რამოდენიმე პუნქტი, რომლის შესახებაც შეგვიძლია ვთქვათ, როგორც საცნობარო პუნქტები ან ნორმალურ მდგომარეობაში, რადგან მსოფლიოში იცის, რომ მართალია !!! ამ შემთხვევაში, ჩვენ ამ 14 წერტილს ვიყენებთ.

ამ წერტილების პოზიცია ჰგავს ადამიანის სახის საეტაპო კოორდინატებს ცხვირით პირის წინა და ცენტრში, ბოლოში ნიკაპი და ა.შ.

2. საპროექტო წერტილების 2D წერტილები, ერთმანეთთან მიმოწერა მსოფლიო კოორდინატთა სივრცეში

საპროექტო წერტილები ღრმა სწავლის მოდელობიდან გამომდინარეობს მეორე ფაზაში, ეს არის სახის საეტაპო მოდელი და ჩვენ მხოლოდ მოდელის გამომავალი 68 ქულიდან 14 ქულას ვიყენებთ.

3. კამერის მატრიცა

მატრიცა შეიცავს ინფორმაციას კამერის ფოკუსური სიგრძისა და ძირითადი წერტილის შესახებ, რომელიც პრაქტიკულად იცვლება გამოსახულების ცენტრის კოორდინატთან. ხოლო ფოკალური სიგრძე, როგორც წესი, იგივეა სურათის სიგანის საერთო პიქსელებით.

პერსპექტივა-n-წერტილი (PnP) / Pinhole კამერის მოდელი

ზემოთ მოყვანილი 3 ინფორმაციის გამოყენებით, გვსურს მივიღოთ ბრუნვის მატრიცა (R) და თარგმანის ვექტორი (t) ამ ფორმულიდან.

წყარო: OpenCV დოკუმენტაცია

იგი შეესაბამება მსოფლიოს კოორდინატთა სივრცის 14 წერტილს რეალურ გამოვლენილ სახეზე 14 წერტილამდე, იმისთვის, რომ რამდენი სახე შეიცვალოს და ითარგმნოს თითოეულ განზომილებაში.

ახალი წერტილის პროექტირება

წყარო: OpenCV დოკუმენტაცია

როტაციის მატრიცის და მთარგმნელობითი ვექტორის შეცნობის შემდეგ, გვსურს ახალი ქულების დაპროექტება (შეიძლება იყოს 14 შესასვლელი წერტილი). შეყვანა არის 3D კოორდინატი (X, Y, Z) და ჰგავს მსოფლიოს კოორდინატთა სივრცის წერტილებს 2D კოორდინატზე (u, v), რომელიც ბოლოს ჩვენ მხოლოდ 2D- ში ვაჩვენებთ სურათს.

წყარო: სათვალე და სათვალე

მაგალითად, თუ გსურთ დაპროექტდეთ ობიექტივის 2 წერტილის ახალი წერტილი, აირჩიოთ შეყვანა 3D თვალის კოორდინატზე მთელს მსოფლიოში, პლუს მცირე რაოდენობით Z კოორდინატში, რადგან ობიექტივი უფრო ახლოსაა ვიდრე თვალისადმი კამერა. ანალოგიურად, ცხვირის ბალიშზე შეარჩიეთ ცხვირის მსოფლიო კოორდინატის ადგილმდებარეობა.

ფილტრის გამოსაყენებლად, თქვენ უნდა განსაზღვროთ თქვენი ობიექტის 3D წერტილები, მაგალითად, სათვალეები, ქუდი ან ულვაში, მსოფლიოს კოორდინატთა სივრცის 14 წერტილის მიმართ, შემდეგ პროექცია ამ 3D წერტილებს 2D წერტილად გადააქცევს, რომლებიც თვლიან სახეს.

დასაჯამებლად, ფილტრების ჩვენების პროცესი ასეთია: Detect Face -> შეაფასეთ 2D სახის ნიშნის ნიშანი -> მიიღეთ როტაციის მატრიცა და თარგმანის ვექტორი -> პროექტის 3D პუნქტის წერტილები მიუთითეთ 2D -> ვიზუალიზაცია. ეს ხდება ყველა ჩარჩოზე, რომელსაც ფოტოაპარატი იღებს.

კოდების პითონში / C ++ ში, რომ მოხდეს ეს

თუ გსურთ გამოიყენოთ ეს კონცეფცია, მიმართეთ ამ დისკუსიაზე OpenCV დოკუმენტაციას.

როტაციის მატრიცის მისაღებად და თარგმანის ვექტორი: C ++: projectPoints Python: cv2.projectPoints

3D ნივთის დაპროექტების ფუნქცია მიუთითებს 2D: C ++: projectPoints Python: cv2.projectPoints

ორივე OpenCV პაკეტის შიგნით არის !!

უარყოფა

მე არ ვარ Snapchat / Instagram– ის ინჟინერი, არ ვამბობ, რომ ისინი იყენებენ ამ კონცეფციას, რომელიც არ ვიცი რას აკეთებენ შიგნით, მე ვგრძნობ, რომ ისინი უფრო დახვეწილები არიან, ვიდრე ის, რაც ამ სტატიაში წაიკითხეთ. მთავარი მესიჯი, რომელიც მე მსურს გადმოგცეთ არის, შეგიძლიათ გამოიყენოთ კონცეფცია ამ ნივთის გასაკეთებლად!

Მადლობა წაკითხვისთვის!!! სიხარული

Იხილეთ ასევე

შეგიძლიათ Instagram- ზე გაყიდოთ Shopify Lite ანგარიშის გამოყენებით?შესაძლებელია თუ არა ერთ ფოტოზე წაშლა მრავალჯერადი ფოტოდან Instagram- ში? თუ ასეა, როგორ იმოქმედებს ეს პოსტის სახეზე?შესაძლებელია თუ არა Instagram- ის ორი ბიზნეს ანგარიში დაკავშირება იმავე Facebook გვერდზე?რა შეხედულებები გაქვთ TikTok– ის რეკლამასთან დაკავშირებით, ან აქვეყნებთ რეკლამებს TikTok– ზე?როგორ მივიღო დამადასტურებელი სამკერდე ნიშანი Instagram- ზე, რომელსაც 175 კგ მიმდევარი ჰყავს?რატომ აქვს Facebook– ს შეტყობინებების ორი პროგრამა (Messenger და WhatsApp)? ასევე, თუ მათ უკვე ჰყავდნენ მესენჯერი, რა იყო საჭირო მათ WhatsApp- ის შესაძენად?ნელდება თუ არა Snapchat– ის მომხმარებელთა ზრდა მას შემდეგ, რაც Instagram– მა ინსტაგრამზე წამოაყენა სიუჟეტები?ყველა ინდოელი Snapchat– ს აძლევს Google Play Store– ში ერთი ვარსკვლავის შეფასებას. რა შედეგი მოჰყვება ამას?