- Компоненте потребне
- Инсталирање ОпенЦВ-а у Распберри Пи
- Како открити делове лица помоћу длиб-а
- Програмирање Распберри Пи за откривање оријентира на лицу
- Тестирање препознавача лица
Откривање оријентира на лицу је поступак откривања различитих делова на лицу, попут обрва, очију, носа, уста и вилице. Постоји много апликација које користе технике откривања оријентира на лицу.
Раније смо изградили систем за препознавање лица користећи ОпенЦВ, данас ћемо користити исти ОпенЦВ са Распберри Пи за откривање оријентира на лицу. Унапред обучени модул детектора оријентира лица из библиотеке длиб користиће се за откривање локације кључних структура лица на лицу, а питхон ОпенЦВ ће се користити за визуелизацију откривених делова лица.
Компоненте потребне
Хардверске компоненте
- Распберри Пи 3
- Модул камере Пи
Софтвер и услуге на мрежи
- ОпенЦВ
- Длиб
- Питхон3
Пре него што наставимо са овом Распберри Пи 3 детекцијом оријентира на лицу , прво морамо да инсталирамо ОпенЦВ, имутилс, длиб, Нумпи и неке друге зависности у овом пројекту. ОпенЦВ се овде користи за дигиталну обраду слике. Најчешћа примена дигиталне обраде слика су откривање предмета, препознавање лица и бројач људи.
Да бисте сазнали више о томе како повезати Пи камеру са Распберри Пи, следите наше претходне водиче.
Инсталирање ОпенЦВ-а у Распберри Пи
Овде ће се ОпенЦВ библиотека користити за Распберри Пи КР скенер. Да бисте инсталирали ОпенЦВ, прво ажурирајте Распберри Пи.
судо апт-гет упдате
Затим инсталирајте потребне зависности за инсталирање ОпенЦВ-а на ваш Распберри Пи.
судо апт-гет инсталл либхдф5-дев -и судо апт-гет инсталл либхдф5-сериал-дев -и судо апт-гет инсталл либатлас-басе-дев -и судо апт-гет инсталл либјаспер-дев -и судо апт-гет инсталл либктгуи4 –И судо апт-гет инсталл либкт4-тест –и
Након тога, инсталирајте ОпенЦВ у Распберри Пи помоћу наредбе у наставку.
пип3 инсталирај опенцв-цонтриб-питхон == 4.1.0.25
Раније смо користили ОпенЦВ са Распберри пи и створили смо пуно водича на њему.
- Инсталирање ОпенЦВ-а на Распберри Пи помоћу ЦМаке-а
- Препознавање лица у стварном времену помоћу Распберри Пи и ОпенЦВ
- Препознавање регистарске таблице помоћу Распберри Пи и ОпенЦВ
- Процена величине гужве помоћу ОпенЦВ-а и Распберри Пи-а
Такође смо креирали серију водича за ОпенЦВ почевши од почетничког нивоа.
Инсталирање имутилс-а : имутилс се користи за извршавање неколико неопходних функција обраде слика, као што су превођење, ротација, промена величине, скелетонизација и лакше приказивање Матплотлиб слика са ОпенЦВ-ом. Дакле, инсталирајте имутилс користећи наредбу испод:
пип3 инсталирати имутилс
Инсталирање длиб: длиб је савремени скуп алата који садржи алгоритме машинског учења и алате за проблеме из стварног света. Користите доњу команду да бисте инсталирали длиб.
пип3 инсталирај длиб
Инсталирање НумПи : НумПи је основна библиотека за научно рачунање која садржи моћан објект н-димензионалног низа, пружа алате за интеграцију Ц, Ц ++ итд.
Пип3 инсталирај нумпи
Како открити делове лица помоћу длиб-а
Користићемо унапред обучени детектор оријентира лица длиб библиотеке да бисмо детектовали локацију 68 (к, и) -координата које мапирају на структуре лица на лицу. длиб предиктор оријентације лица обучен је на иБУГ 300-В скупу података. Слика која садржи индексе 68 координата дата је у наставку:
Програмирање Распберри Пи за откривање оријентира на лицу
Комплетни питхон код за препознавање делова лица помоћу длиб-овог унапред обученог детектора оријентира на лицу дат је на крају странице. Овде објашњавамо неке важне делове кода ради бољег разумевања.
Дакле, као и обично, започните код укључивањем свих потребних библиотека.
из имутилс импорт фаце_утилс импорт нумпи ас нп импорт аргпарсе импорт имутилс импорт длиб импорт цв2 фром пицамера.арраи импорт ПиРГБАрраи фром пицамера импорт ПиЦамера
Затим иницијализујте објекат камере и подесите резолуцију на (640, 480) и брзину кадрова на 30 фпс
цамера = ПиЦамера () цамера.ресолутион = (640, 480) цамера.фрамерате = 30
Сада у следећим редовима користите парсер аргумената како бисте пружили пут до предиктора оријентира лица.
ап = аргпарсе.АргументПарсер () ап.адд_аргумент ("- п", "--схапе-предицтор", обавезно = Труе, хелп = "пут до предиктора оријентира лица") аргс = варс (ап.парсе_аргс ())
У следећим редовима иницијализујте унапред обучени детектор лица длиб заснован на ХОГ-у и учитајте унапред обучени предиктор оријентира на лицу.
детецтор = длиб.гет_фронтал_фаце_детецтор () предиктор = длиб.схапе_предицтор (аргс)
Затим користите функцију цаптуре_цонтинуоус да започнете снимање кадрова са камере Распберри Пи.
за кадар у цамера.цаптуре_цонтинуоус (равЦаптуре, формат = "бгр", усе_видео_порт = Труе): имаге = фраме.арраи цв2.имсхов ("Фраме", имаге) кеи = цв2.ваитКеи (1) & 0кФФ равЦаптуре.трунцате (0)
Помоћу тастера на тастатури „С“ ухватите одређени кадар. Затим промените величину снимљене слике и претворите је у сиве тонове.
иф кеи == орд ("с"): имаге = имутилс.ресизе (имаге, видтх = 400) греи = цв2.цвтЦолор (имаге, цв2.ЦОЛОР_БГР2ГРАИ)
Користите функцију детектора библиотеке длиб за откривање лица на снимљеној слици.
рецтс = детектор (сива, 1)
Снимите слику на којој је извршена детекција лица, одредите оријентире на лицу и претворите 68 тачака у НумПи низ. Пређите преко сваког од региона лица појединачно.
фор (и, рецт) у енумерате (рецтс): схапе = предиктор (сиви, рецт) схапе = фаце_утилс.схапе_то_нп (схапе)
Затим направите копију оригиналне слике и помоћу ње за петљу нацртајте име дела лица на слици. Боја текста ће бити црвена, можете је променити у другу боју променом РГБ вредности.
за (име, (и, ј)) у фаце_утилс.ФАЦИАЛ_ЛАНДМАРКС_ИДКСС.итемс (): цлоне = имаге.цопи () цв2.путТект (клон, име, (10, 30), цв2.ФОНТ_ХЕРСХЕИ_СИМПЛЕКС, 0.7, (0, 0, 255), 2)
Сада ћемо кружити преко откривених делова лица и помоћу функције цртања ОпенЦВ цртати кругове на тим деловима лица. Можете пратити овај ОпенЦВ документ за више информација о функцијама цртања
за (к, и) у облику: цв2.цирцле (клон, (к, и), 1, (0, 0, 255), -1)
Сада ћемо у следећим редовима издвојити сваки део лица као засебну слику рачунањем граничног оквира координата одређеног дела лица. Издвојена слика ће се променити на 250 пиксела.
(к, и, в, х) = цв2.боундингРецт (нп.арраи (])) рои = слика рои = имутилс.ресизе (рои, видтх = 250, интер = цв2.ИНТЕР_ЦУБИЦ)
Сада у последњим редовима кода прикажите делове лица са њиховим именима и засебну слику тог дела. Користите тастер ЕСЦ за промену региона лица.
цв2.имсхов ("РОИ", рои) цв2.имсхов ("Слика", клон) цв2.ваитКеи (0)
Тестирање препознавача лица
Да бисте тестирали пројекат, креирајте директоријум и дођите до њега помоћу наредби у наставку:
мкдир лице-део-детектор цд лице-део-детектор
Сада преузмите датотеку схапе_предицтор_68_фаце_ландмаркс.дат са ове везе, а затим извуците и копирајте датотеку схапе_предицтор_68_фаце_ландмаркс.дат унутар ове библиотеке, а затим отворите нову датотеку под називом детект.пи и залепите доле дати код.
Сада покрените питхон код помоћу наредбе у наставку:
питхон3 детецт.пи --схапе-предицтор схапе_предицтор_68_фаце_ландмаркс.дат
Видећете прозор који приказује приказ уживо са ваше камере. Затим притисните тастер „С“ да бисте изабрали кадар из стрима уживо. Видећете црвене тачке на пределу уста. Користите тастер ЕСЦ да бисте видели остале делове лица.
Комплетни питхон код и демонстрацијски видео дати су у наставку.