ফটোগুলিতে মুখের স্বীকৃতি

আমার ডিএফআইআর শীর্ষ সম্মেলনের আলোচনার একটি বিষয় যা আমি আরও প্রসারিত করতে চাই তা হল ফটো অ্যাপ্লিকেশনগুলিতে নজর দেওয়া এবং সেই প্রচেষ্টাটির কয়েকটি ডেরাইভেটিভ টুকরো। মুখের স্বীকৃতি সম্পর্কিত বিষয়ে মনোনিবেশ করার চেষ্টা করার সময়, ফটো আবেদনে কোনও ব্যক্তির নামের মুখের পাশে রাখা কোনও ব্যক্তির কাছে একটি ছবি ছড়িয়ে দেওয়া থেকে একটি সংক্ষিপ্ত অগ্রগতি অন্তর্ভুক্ত করা বুদ্ধিমান বলে মনে হয়েছে।

আপনি যখন নেটিভ ক্যামেরা ব্যবহার করেন এবং ব্যবহারকারীর বিকল্পগুলির উপর নির্ভর করে কোনও ফটো স্ন্যাপ করেন, কমপক্ষে কয়েকটি স্ট্যান্ডার্ড জিনিস ঘটে। এটি চূড়ান্তভাবে নতুন ছবিটি প্রাইভেট /vvar / মোবাইল / মিডিয়া / ডিডিআইএম / 1: পিএপিএল / আইএমজি_0001.এইচইআইসি / .জেপিজি-তে লিখেছে। ছবি তোলার সাথে সাথে ফটো.সক্লাইট ডাটাবেসটি ফটো সম্পর্কে প্রচুর মেটাডেটা প্রতিফলিত করার জন্য আপডেট করা হয় যা কিছুটা পরে আচ্ছাদন করা হবে। অতিরিক্তভাবে, “প্রিভিউওয়েলআইমেজ.টিফ” তৈরি করা হয়। “প্রিভিউওয়েলআইমেজ.টিফ” আপনি যখন আপনার ফটো অ্যাপ্লিকেশনটি খুলবেন এবং সাম্প্রতিকতম চিত্রটির একটি পূর্বরূপ দেখুন তখন আপনি যে ছবিটি দেখেন সেটি কেবল ক্যামেরা দ্বারা নেওয়া ফটো।

1.png

ব্যবহারকারীর ফটোগুলির শুরুটি ../100APPLE/ ডিরেক্টরিতে থাকে তবে এই ডিরেক্টরিটি আরও বেশি সংখ্যক ফটো এবং ভিডিওগুলি সংরক্ষণ করার সাথে সাথে উপরের দিকে (101APPLE, 102APPLE, ইত্যাদি) পুনরাবৃত্তি করে। যদি আইক্লাউড সিঙ্কিংটি ব্যবহারকারীর দ্বারা চালু হয়, তবে আরও বেশ কয়েকটি আচরণ ঘটে occur তবে তা অন্য সময়ের জন্য।

আসুন ফটো অ্যাপ্লিকেশনটিতে তৈরি বিশ্লেষণ এবং বুদ্ধিমত্তার উপর ফোকাস করা যাক। আমি পাঠ্য স্ট্রিং টাইপ করতে সক্ষম হলাম এবং আমার ফটোগুলি তত্ক্ষণাত সেগুলির মধ্যে ম্যাচের সাথে মিলিয়ে অনুসন্ধান করা হবে। আমার ফটোগুলির একটি অংশ রয়েছে “লোক” -এ উত্সর্গীকৃত যেখানে অ্যাপল বিশ্লেষণ করেছেন এমন কোনও মুখের সাথে একটি নাম যুক্ত হয়েছে।

2.png

3.png

ফটোগুলির সাথে ঘটে যাওয়া বিশ্লেষণের কিছু অংশ মিডিয়ায়ানালাইসিস.ডিবি ফাইলে ঘটে। এই ফাইলটি মিডিয়া ফাইলগুলি বিশ্লেষণ ও স্কোর করছে এবং এমন ফলাফল তৈরি করছে যা বিশ্লেষণের অন্যান্য অংশগুলিতে ফিড করে বলে মনে হচ্ছে। হাইলাইট করার জন্য কিছু স্কোরিং ফলাফল হ’ল যা মন, মুখ এবং পোষা প্রাণীগুলিতে ফোকাস করে।

পাথ: / প্রাইভেট /var/mobile/Media/MediaAnalysis/mediaanalysis.db

মিডিয়াঅ্যানালাইসিস.ডিবি ফাইলের ‘ফলাফল’ সারণীতে একটি ‘এসেটআইডি’ রয়েছে যা একটি মিডিয়া ফাইলকে উপস্থাপন করে, একটি ‘রেজাল্ট টাইপ’ যা মিডিয়া ফাইলটিতে পাওয়া নির্দিষ্ট বিশ্লেষণাত্মক ধরণের এবং স্কোর মান, এবং একটি বিএলওবি (বাইনারি বৃহত বস্তু) থাকে একটি বাইনারি .plist (bplist)। আপনি নীচের চিত্রটিতে দেখতে পারেন, ‘সম্পদ আইডি’ 3 এর সাথে যুক্ত অসংখ্য ‘ফলাফলের টাইপ’ রয়েছে এবং 1 এর ‘ফলাফল টাইপ’ এর জন্য বিএলএলবি বাছাই করা হয়েছে এবং ডানদিকে আপনি বিপিলিস্ট দেখতে পাচ্ছেন।

4.png

সেই বিপিলিস্টকে কোনও ফাইল হিসাবে বিপিলিস্ট সংরক্ষণ করে কোনও টেক্সট ফাইলে মুদ্রণের জন্য ‘প্লুটিল’ ব্যবহার করে কোনও পাঠ্য ফাইলে মুদ্রণ করা যায়। আপনি যেমন লাল তারার পাশে নীচে দেখতে পাচ্ছেন, মুদ্রিত পাঠ্যটি .bplist এর পরিষ্কার উপস্থাপনা এবং এটি আমাদেরকে বলে যে 1 এর ‘রেজাল্ট টাইপ’ স্কোরিংয়ের ভিত্তিতে ফেসগুলির সাথে সম্পর্কিত associated

আমি বাকী টুকরো ডেটাগুলির জন্য সেই প্রক্রিয়াটি পুনরাবৃত্তি করেছিলাম এবং প্রত্যেকের জন্য ফলাফলের ধরণের সংক্ষিপ্ত বিবরণ লিখেছিলাম, যদিও আমার ডিভাইসে এখনও কয়েকটি ধরণের রয়েছে যার কোনও ফলাফল নেই।

P.png

এই ডাটাবেসের বিরুদ্ধে একটি এসকিউএল ক্যোয়ারী চালানোর পরে, আপনি ফলাফলগুলি সম্ভাব্যভাবে এমন ফাইলগুলি দেখতে বাছাই করতে পারেন যেখানে ‘হিউম্যানবাউন্ডস’ এবং ‘হিউম্যান কনফিডেন্স’ এর ফলাফলের ধরণ রয়েছে। “সম্পদ” টেবিলের ‘লোকালআইডেন্টিফায়ার’ কলামটি একটি ইউইউডি যা ফটো.স্ক্লাইটের ZGENERICASSETS টেবিলের সাথে মেলে।

এখানে মিডিয়ায়ানালাইসিস.ডিবি ফাইলের ক্যোয়ারী রয়েছে। এটি বড় এবং কুৎসিত তবে দয়া করে আপনার আগ্রহী থাকলে এটি পরীক্ষা করে দেখুন তবে এই টুকরোটি ফটোসক্লাইটিতে যেখানে আমরা দেখতে পাব সেখানে এটি কী একসাথে আসে তা কেবল তৈরি করে দেখায়।

select
	a.id,
	a.localIdentifier as "Local Identifier",
	a.analysisTypes as "Analysis Types",
	datetime(a.dateModified+978307200, 'unixepoch') as "Date Modified (UTC)",
	datetime(a.dateAnalyzed+978307200, 'unixepoch') as "Date Analyzed (UTC)",
CASE
	when results.resultsType = 1 then "Face Bounds / Position / Quality"
	when results.resultsType = 2 then "Shot Type"
	when results.resultsType = 3 then "Duration / Quality / Start"
	when results.resultsType = 4 then "Duration / Quality / Start"
	when results.resultsType = 5 then "Duration / Quality / Start"
	when results.resultsType = 6 then "Duration / Flags / Start"
	when results.resultsType = 7 then "Duration / Flags / Start"
	when results.resultsType = 15 then "Duration / Quality / Start"
	when results.resultsType = 19 then "Duration / Quality / Start"
	when results.resultsType = 22 then "Duration / Quality / Start"
	when results.resultsType = 23 then "Duration / Quality / Start"
	when results.resultsType = 24 then "Duration / Quality / Start"
	when results.resultsType = 25 then "Duration / Quality / Start"
	when results.resultsType = 27 then "Duration / Quality / Start"
	when results.resultsType = 36 then "Duration / Quality / Start"
	when results.resultsType = 37 then "Duration / Quality / Start"
	when results.resultsType = 38 then "Duration / Quality / Start"
	when results.resultsType = 39 then "Duration / Quality / Start"
	when results.resultsType = 48 then "Duration / Quality / Start"
	when results.resultsType = 8 then "UNK"
	when results.resultsType = 11 then "UNK"
	when results.resultsType = 13 then "UNK"
 	when results.resultsType = 21 then "UNK” 
	when results.resultsType = 26 then "UNK"
	when results.resultsType = 31 then "UNK"
	when results.resultsType = 42 then "UNK"
	when results.resultsType = 45 then "UNK"
	when results.resultsType = 49 then "UNK"
	when results.resultsType = 9 then "Attributes - junk"
	when results.resultsType = 10 then 'Attributes - sharpness'
	when results.resultsType = 12 then "Attributes - featureVector"
	when results.resultsType = 14 then "Attributes - Data"
	when results.resultsType = 16 then "Attributes - orientation"
	when results.resultsType = 17 then 'Quality'
	when results.resultsType = 18 then "Attributes - objectBounds"
	when results.resultsType = 20 then "Saliency Bounds and Confidence"
	when results.resultsType = 28 then "Attributes - faceId / facePrint"
	when results.resultsType = 29 then "Attributes - petsBounds and Confidence"
	when results.resultsType = 30 then "Various Scoring Values"
	when results.resultsType = 32 then "Attributes - bestPlaybackCrop"
	when results.resultsType = 33 then "Attributes - keyFrameScore / keyFrameTime"
	when results.resultsType = 34 then "Attributes - underExpose"
	when results.resultsType = 35 then "Attributes - longExposureSuggestionState / loopSuggestionState"
	when results.resultsType = 40 then "Attributes - petBounds and Confidence"
	when results.resultsType = 41 then "Attributes - humanBounds and Confidence"
	when results.resultsType = 43 then "Attributes - absoluteScore/ humanScore/ relativeScore"
	when results.resultsType = 44 then "Attributes - energyValues/ peakValues"
	when results.resultsType = 46 then "Attributes - sceneprint/ EspressoModelImagePrint"
	when results.resultsType = 47 then "Attributes - flashFired, sharpness, stillTime, texture"
end as "Results Type",
	hex(results.results) as "Results BLOB"
from assets a
left join results on results.assetId=a.id

8.png

Photos.sqlite ফাইলে ডুব দেওয়ার আগে আমি প্রথমে অ্যাপলের ছবিগুলির অবজেক্ট বিশ্লেষণের ফলস্বরূপ টেক্সট স্ট্রিং রেকর্ড করা ফাইলটি চিহ্নিত করতে চাই। এই ফাইলটি টেক্সট ফলাফলগুলি সংরক্ষণ করে যা ফটো অ্যাপ্লিকেশনটিতে টেক্সট স্ট্রিংগুলি অনুসন্ধান করার এবং ফলাফলগুলি প্রত্যাবর্তনের আমাদের ক্ষমতায়িত করে। পাঠ্যের স্ট্রিংগুলি কোনও নির্দিষ্ট ব্যবহারকারীর ক্রিয়াকলাপের ফলস্বরূপ নয়, বরং এর পরিবর্তে বিশ্লেষণের একটি আউটপুট স্বয়ংক্রিয়ভাবে অ্যাপলের দ্বারা ব্যবহারকারীর মিডিয়া ফাইলগুলির বিরুদ্ধে মোতায়েন করা হয়।

পাথ: /private/var/mobile/Media/PhotoData/Cishes/search/psi.sqlite

পিএসআই স্ক্লাইটে থাকা ‘ওয়ার্ড_ইম্বেডিং’ টেবিলটিতে কলামগুলি রয়েছে ‘শব্দ’ এবং ‘বর্ধিত_শব্দ’ যা কেবলমাত্র BLOB- এ সঞ্চিত স্ট্রিং। এসকিউএলাইটের জন্য ডিবি ব্রাউজার ব্যবহার করে আপনি টেবিলটি কোনও সিএসভিতে রফতানি করতে পারেন এবং এটি বিএলওবি’র স্ট্রিংগুলি বেশ পরিষ্কার করে মুদ্রণ করে। পৃথকভাবে ‘সংগ্রহ’ নামে একটি সারণীও রয়েছে যার মধ্যে রয়েছে ‘শিরোনাম’ এবং ‘উপশিরোনাম’ কলামগুলি মনে হয় যে ব্যবহার করা স্মৃতি এবং বিভাগগুলির ইতিহাস বলে মনে হচ্ছে বা ব্যবহৃত হবে।

9.png

10.png

এই টুকরোটির জন্য উল্লেখ করার জন্য psi.sqlite এর সর্বশেষ সারণীটি হল “গোষ্ঠীগুলি” সারণী। গোষ্ঠীগুলির সারণির মধ্যে ‘কন্টেন্ট_স্ট্রিং’ এর মধ্যে কিছু সত্যই আকর্ষণীয় ডেটা রয়েছে। আমি প্রথমে “গ্রিন বে” শব্দটি খুঁজে বের করতে শুরু করলাম কারণ এটি “জি” অক্ষরটির জন্য আমার পাঠ্য অনুসন্ধানে জনবহুল ছিল। আমি যা পেয়েছি তা আরও আকর্ষণীয় ছিল। আমি “গ্রিন বে” খুঁজে পেয়েছি তবে অতিরিক্তভাবে অন্য একটি ব্লগের “গ্রিন বে প্যাকার্স বনাম মিয়ামি ডলফিনস” তে পাওয়া গেছে in আমার কাছে অ্যাপল দ্বারা বিএলওবিতে কিছুটা বাড়তি স্বাদ যুক্ত হয়েছে। তারা কেবল ল্যাম্বাউ ফিল্ডে উপস্থিত থেকে আমার ফটোগুলিতে বেক করা আমার জিও স্থানাঙ্কগুলি ব্যবহার করেছে, বা ফটোগুলির বিষয়বস্তু বিশ্লেষণ করেছে এবং বিভিন্ন মিয়ামি ডলফিনের জার্সি পেয়েছে – আমি নিশ্চিত নই। তবে একটি খুব আকর্ষণীয় নিদর্শন যা একেবারে নির্ভুল, আমার জন্য সেখানে ফেলে দেওয়া হয়েছিল। ধন্যবাদ অ্যাপল!

এখন আসুন ফটোসক্লাইটটিকে সামলান, তবে এটি কেবল মুখের স্বীকৃতি এবং মানুষের ফটোগুলিকে একটি আসল নামের সাথে সংযুক্ত করার সাথে সম্পর্কিত। কারণ সত্যিই সত্য যদি কেউ এই প্রতি ইঞ্চি বিশ্লেষণ করতে এবং সেই সমর্থন বজায় রাখতে চায় তবে এই একক ফাইলটি প্রায় পুরো সময়ের কাজ।

পাথ: / প্রাইভেট /var / মোবাইল / মিডিয়া / ফটোডাটা / ফটোস.সাইক্লাইট

আমার Photos.sqlite এর উদাহরণটি একটি জন্তু, 300MB এর ওপরে এবং আমার ফটোগুলি সম্পর্কে পুরো ডেটা পূর্ণ 67 67 টেবিলযুক্ত containing আমরা দুটি টেবিল – ZDETECTEDFACE এবং ZPERSON- তে ফোকাস করতে যাচ্ছি।

ZDETECTEDFACE

এই টেবিলটিতে বয়সগুলি, চুলের রঙ, টাক, লিঙ্গ, চোখের চশমা এবং মুখের চুলের অনুমান অন্তর্ভুক্ত করার জন্য মুখগুলি সম্পর্কে বৈশিষ্ট্যগুলি নির্দেশ করে values বাম বা ডান চোখ বন্ধ ছিল এবং বাম চোখ, ডান চোখ, মুখ এবং কেন্দ্রের জন্য এক্স এবং ওয়াই অক্ষের পরিমাপের জন্য সূচক রয়েছে। সুতরাং এই টেবিলের ডেটা অত্যন্ত দানাদার, এবং এটি কাজ করতে বেশ মজা ছিল। পুরানো ফটোগুলি দেখতে কার না ভালো লাগে?

জেপারসন

এই টেবিলটিতে মিডিয়া ফাইলগুলি থেকে অ্যাপল কোনও নির্দিষ্ট মুখ সনাক্ত করতে সক্ষম হয়েছে তার একটি সংখ্যা রয়েছে contains সুতরাং আমার ডিভাইসে, আমি কয়েকশ ফটোগুলির জন্য নাম দিয়ে স্বীকৃত, তবে আমার ফটোগুলিও রয়েছে যেখানে এটি আমার মুখের সাথে আমার নামটি যুক্ত করে না। চিহ্নিত প্রতিটি মুখের জন্য, একটি ইউইউডি (ইউনিক আইডেন্টিফায়ার) নির্ধারিত হয়। সুতরাং বিশ্লেষণী অংশটি কোনও মুখের সাথে কোনও মুখের সংযোগ করতে সক্ষম নাও হতে পারে, তবে এটি অজানা মুখগুলির সমস্ত চিহ্নিত দর্শন একই ব্যক্তি হিসাবে গোষ্ঠীভুক্ত করতে পারে।

13.png

যদি ব্যক্তির মুখ এবং একটি সংরক্ষিত যোগাযোগের মধ্যে কোনও সমিতি তৈরি হয় তবে জেডকন্ট্যাক্টম্যাচিংডিকশনারি কলামের ব্লব ডেটা সম্ভবত একটি পুরো নাম এবং ফোন নম্বর প্রকাশ করতে পারে। এটি আবার একটি টেক্সট ফাইলে বিপিলিস্ট মুদ্রণ করে অর্জন করা যায়।

14.png

select
	zga.z_pk,
	zga.ZDIRECTORY as "Directory",
	zga.ZFILENAME as "File Name",
CASE
	when zga.ZFACEAREAPOINTS > 0 then "Yes"
	else "N/A"
	end as "Face Detected in Photo",
CASE 
	when zdf.ZAGETYPE = 1 then "Baby / Toddler"
	when zdf.ZAGETYPE = 2 then "Baby / Toddler"
	when zdf.ZAGETYPE = 3 then "Child / Young Adult"
	when zdf.ZAGETYPE = 4 then "Young Adult / Adult
	when zdf.ZAGETYPE = 5 then "Adult"
end as "Age Type Estimate",
case
	when zdf.ZGENDERTYPE = 1 then "Male"
	when zdf.ZGENDERTYPE = 2 then "Female"
	else "UNK"
end as "Gender",
	zp.ZDISPLAYNAME as "Display Name", 
	zp.ZFULLNAME as "Full Name",
	zp.ZFACECOUNT as "Face Count",
CASE	
	when zdf.ZGLASSESTYPE = 3 then "None"
	when zdf.ZGLASSESTYPE = 2 then "Sun"
	when zdf.ZGLASSESTYPE = 1 then "Eye"
	else "UNK"
end as "Glasses Type",
CASE
	when zdf.ZFACIALHAIRTYPE = 1 then "None"
	when zdf.ZFACIALHAIRTYPE = 2 then "Beard / Mustache"
	when zdf.ZFACIALHAIRTYPE = 3 then "Goatee"
	when zdf.ZFACIALHAIRTYPE = 5 then "Stubble"
	else "UNK"
end as "Facial Hair Type",
CASE	
	when zdf.ZBALDTYPE = 2 then "Bald"
	when zdf.ZBALDTYPE = 3 then "Not Bald"
end as "Baldness",
CASE
	when zga.zlatitude = -180
	then 'N/A'
	else zga.ZLATITUDE
end as "Latitude",
CASE
	when zga.ZLONGITUDE = -180 
	then 'N/A' 
	else zga.ZLONGITUDE
end as "Longitude",
	datetime(zga.zaddeddate+978307200, 'unixepoch') as "Date Added (“UTC),
	ZMOMENT.ztitle as "Location Title"
from zgenericasset zga
left join zmoment on zmoment.Z_PK=zga.ZMOMENT
left join ZDETECTEDFACE zdf on zdf.ZASSET=zga.Z_PK
left join ZPERSON zp on zp.Z_PK=zdf.ZPERSON
where zga.ZFACEAREAPOINTS > 0

নীচে এই বিশ্লেষণের আউটপুটটির একটি নমুনা দেওয়া হচ্ছে, মেটাডেটা যে ছবিটি এসেছে সেটির সাথে জুটিবদ্ধ। আপনি দেখতে পাচ্ছেন যে এটি আমাকে এবং আমার দুই মেয়েকে নাম দিয়ে সনাক্ত করতে সক্ষম হয়েছে এবং আমাদের লিঙ্গগুলি, আমার সানগ্লাসগুলি এবং মুখের চুল সঠিকভাবে মূল্যায়ন করতে সক্ষম।

16.png

17.png

দয়া করে পরীক্ষা করুন, যাচাই করুন এবং আমাকে যেকোন প্রশ্ন বা উদ্বেগ নিয়ে টুইটারে @ বিজিবার্নিতে একটি চিৎকার করুন।