DlibC++ : распознавание лиц

Вопросы написания собственного программного кода (на любых языках)

Модератор: Olej

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

распознавание лиц

Непрочитанное сообщение Olej » 24 дек 2018, 12:20

Olej писал(а): Изображение
Следующий необходимый пакет/проект - OpenFace:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ git clone https://github.com/cmusatyalab/openface
Клонирование в «openface»…
remote: Enumerating objects: 4821, done.
remote: Total 4821 (delta 0), reused 0 (delta 0), pack-reused 4821
Получение объектов: 100% (4821/4821), 23.93 MiB | 1.72 MiB/s, готово.
Определение изменений: 100% (2901/2901), готово.

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/openface$ pwd
/home/olej/2019_WORK/own.WORK/AplitSoft/FaceDL/openface

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/openface$ cat requirements.txt
numpy >= 1.1, < 2.0
scipy >= 0.13, < 0.17
pandas >= 0.13, < 0.18
scikit-learn >= 0.17, < 0.18
nose >= 1.3.1, < 1.4
nolearn == 0.5b1

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/openface$ pip3 show numpy
Name: numpy
Version: 1.15.4
Summary: NumPy: array processing for numbers, strings, records, and objects.
Home-page: http://www.numpy.org
Author: Travis E. Oliphant et al.
Author-email: None
License: BSD
Location: /usr/local/lib/python3.7/dist-packages
Requires:

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/openface$ pip3 show scipy
Name: scipy
Version: 1.2.0
Summary: SciPy: Scientific Library for Python
Home-page: https://www.scipy.org
Author: None
Author-email: None
License: BSD
Location: /usr/local/lib/python3.7/dist-packages
Requires: numpy

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/openface$ pip3 show pandas

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/openface$ pip3 show scikit-learn

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/openface$ pip3 show nose

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/openface$ pip3 show nolearn

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/openface$ sudo pip3 install pandas
[sudo] пароль для olej: 
Collecting pandas
  Downloading https://files.pythonhosted.org/packages/67/a7/12261a51ac2e7be4c698ca27cbe364ca5f16d64999456ee47ea8c7b44417/pandas-0.23.4-cp37-cp37m-manylinux1_x86_64.whl (8.8MB)
    100% |████████████████████████████████| 8.8MB 157kB/s 
Requirement already satisfied: python-dateutil>=2.5.0 in /usr/local/lib/python3.7/dist-packages (from pandas)
Requirement already satisfied: numpy>=1.9.0 in /usr/local/lib/python3.7/dist-packages (from pandas)
Collecting pytz>=2011k (from pandas)
  Downloading https://files.pythonhosted.org/packages/f8/0e/2365ddc010afb3d79147f1dd544e5ee24bf4ece58ab99b16fbb465ce6dc0/pytz-2018.7-py2.py3-none-any.whl (506kB)
    100% |████████████████████████████████| 512kB 1.7MB/s 
Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.5.0->pandas)
Installing collected packages: pytz, pandas
Successfully installed pandas-0.23.4 pytz-2018.7

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/openface$ sudo pip3 install scikit-learn
Collecting scikit-learn
  Downloading https://files.pythonhosted.org/packages/90/de/6c4c572d39db91104a31e5b1559df4712f241cdf3f6206f49954adaa942c/scikit_learn-0.20.2-cp37-cp37m-manylinux1_x86_64.whl (5.4MB)
    100% |████████████████████████████████| 5.4MB 247kB/s 
Requirement already satisfied: scipy>=0.13.3 in /usr/local/lib/python3.7/dist-packages (from scikit-learn)
Requirement already satisfied: numpy>=1.8.2 in /usr/local/lib/python3.7/dist-packages (from scikit-learn)
Installing collected packages: scikit-learn
Successfully installed scikit-learn-0.20.2

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/openface$ sudo pip3 install nose
Collecting nose
  Downloading https://files.pythonhosted.org/packages/15/d8/dd071918c040f50fa1cf80da16423af51ff8ce4a0f2399b7bf8de45ac3d9/nose-1.3.7-py3-none-any.whl (154kB)
    100% |████████████████████████████████| 163kB 1.4MB/s 
Installing collected packages: nose
Successfully installed nose-1.3.7

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/openface$ sudo pip3 install nolearn
Collecting nolearn
  Downloading https://files.pythonhosted.org/packages/ff/69/2882491c14c58431c06d5a12a007eefcc4fb3f5ac7af624a5d212b0bbdd4/nolearn-0.6.0.tar.gz (320kB)
    100% |████████████████████████████████| 327kB 1.5MB/s 
Collecting Lasagne (from nolearn)
  Downloading https://files.pythonhosted.org/packages/98/bf/4b2336e4dbc8c8859c4dd81b1cff18eef2066b4973a1bd2b0ca2e5435f35/Lasagne-0.1.tar.gz (125kB)
    100% |████████████████████████████████| 133kB 1.7MB/s 
Collecting Theano (from nolearn)
  Downloading https://files.pythonhosted.org/packages/4d/b1/d490d88ab47f01f367f413bd2e47d86acf92c84157c5172c23903798bd70/Theano-1.0.3.tar.gz (2.8MB)
    100% |████████████████████████████████| 2.8MB 436kB/s 
Collecting gdbn (from nolearn)
  Downloading https://files.pythonhosted.org/packages/88/5c/512341ac1e6e8fa3008171b8dae49d2bd7b886e79f525658955bc59946c1/gdbn-0.1.tar.gz
Collecting joblib (from nolearn)
  Downloading https://files.pythonhosted.org/packages/0d/1b/995167f6c66848d4eb7eabc386aebe07a1571b397629b2eac3b7bebdc343/joblib-0.13.0-py2.py3-none-any.whl (276kB)
    100% |████████████████████████████████| 276kB 3.3MB/s 
Requirement already satisfied: scikit-learn in /usr/local/lib/python3.7/dist-packages (from nolearn)
Collecting tabulate (from nolearn)
  Downloading https://files.pythonhosted.org/packages/12/c2/11d6845db5edf1295bc08b2f488cf5937806586afe42936c3f34c097ebdc/tabulate-0.8.2.tar.gz (45kB)
    100% |████████████████████████████████| 51kB 2.0MB/s 
Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from Lasagne->nolearn)
Requirement already satisfied: scipy>=0.14 in /usr/local/lib/python3.7/dist-packages (from Theano->nolearn)
Requirement already satisfied: six>=1.9.0 in /usr/lib/python3/dist-packages (from Theano->nolearn)
Collecting gnumpy (from gdbn->nolearn)
  Downloading https://files.pythonhosted.org/packages/46/63/2c7f2fd6763130700dff21aada32b2d6cf3373a625af71cc74f7090818f4/gnumpy-0.2.tar.gz
Building wheels for collected packages: nolearn, Lasagne, Theano, gdbn, tabulate, gnumpy
  Running setup.py bdist_wheel for nolearn ... done
  Stored in directory: /root/.cache/pip/wheels/9c/b3/e8/a863ca29687669deabe68012f333d5c5bd6c9b5a3bea4f2538
  Running setup.py bdist_wheel for Lasagne ... done
  Stored in directory: /root/.cache/pip/wheels/a5/8e/31/b4cae7e5507f8582e77d7f5cf2815be8820ccacfa0519ca60c
  Running setup.py bdist_wheel for Theano ... done
  Stored in directory: /root/.cache/pip/wheels/10/82/05/9ef5e43bfcf906b4810f85f91b09d6daf7ad213d30179defa9
  Running setup.py bdist_wheel for gdbn ... done
  Stored in directory: /root/.cache/pip/wheels/f1/aa/d7/7968a6696737f947ab854dc3394186a8fcfbd8aedcc8c66d07
  Running setup.py bdist_wheel for tabulate ... done
  Stored in directory: /root/.cache/pip/wheels/2a/85/33/2f6da85d5f10614cbe5a625eab3b3aebfdf43e7b857f25f829
  Running setup.py bdist_wheel for gnumpy ... done
  Stored in directory: /root/.cache/pip/wheels/61/c5/d7/74a2e7afea611ed0469c95bfb9d21f89dd73f1f4f9ecd7a784
Successfully built nolearn Lasagne Theano gdbn tabulate gnumpy
Installing collected packages: Lasagne, Theano, gnumpy, gdbn, joblib, tabulate, nolearn
Successfully installed Lasagne-0.1 Theano-1.0.3 gdbn-0.1 gnumpy-0.2 joblib-0.13.0 nolearn-0.6.0 tabulate-0.8.2

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

распознавание лиц

Непрочитанное сообщение Olej » 24 дек 2018, 12:23

Olej писал(а): Следующий необходимый пакет/проект - OpenFace:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/openface$ time sudo python3 setup.py install
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/openface
copying openface/__init__.py -> build/lib/openface
copying openface/data.py -> build/lib/openface
copying openface/helper.py -> build/lib/openface
copying openface/torch_neural_net.py -> build/lib/openface
copying openface/torch_neural_net.lutorpy.py -> build/lib/openface
copying openface/align_dlib.py -> build/lib/openface
copying openface/openface_server.lua -> build/lib/openface
running install_lib
creating /usr/local/lib/python3.7/dist-packages/openface
copying build/lib/openface/__init__.py -> /usr/local/lib/python3.7/dist-packages/openface
copying build/lib/openface/openface_server.lua -> /usr/local/lib/python3.7/dist-packages/openface
copying build/lib/openface/data.py -> /usr/local/lib/python3.7/dist-packages/openface
copying build/lib/openface/helper.py -> /usr/local/lib/python3.7/dist-packages/openface
copying build/lib/openface/torch_neural_net.py -> /usr/local/lib/python3.7/dist-packages/openface
copying build/lib/openface/torch_neural_net.lutorpy.py -> /usr/local/lib/python3.7/dist-packages/openface
copying build/lib/openface/align_dlib.py -> /usr/local/lib/python3.7/dist-packages/openface
byte-compiling /usr/local/lib/python3.7/dist-packages/openface/__init__.py to __init__.cpython-37.pyc
byte-compiling /usr/local/lib/python3.7/dist-packages/openface/data.py to data.cpython-37.pyc
byte-compiling /usr/local/lib/python3.7/dist-packages/openface/helper.py to helper.cpython-37.pyc
byte-compiling /usr/local/lib/python3.7/dist-packages/openface/torch_neural_net.py to torch_neural_net.cpython-37.pyc
byte-compiling /usr/local/lib/python3.7/dist-packages/openface/torch_neural_net.lutorpy.py to torch_neural_net.lutorpy.cpython-37.pyc
byte-compiling /usr/local/lib/python3.7/dist-packages/openface/align_dlib.py to align_dlib.cpython-37.pyc
running install_egg_info
Writing /usr/local/lib/python3.7/dist-packages/openface-0.2.1.egg-info

real	0m0,089s
user	0m0,070s
sys	0m0,008s
Но у вас до этого должен быть обязательно установлен пакет (библиотеки) компьютерного зрения OpenCV:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ python3
Python 3.7.2rc1 (default, Dec 12 2018, 06:25:49) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import openface
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.7/dist-packages/openface/__init__.py", line 5, in <module>
    from .align_dlib import AlignDlib
  File "/usr/local/lib/python3.7/dist-packages/openface/align_dlib.py", line 17, in <module>
    import cv2
ModuleNotFoundError: No module named 'cv2'
>>> exit()

Код: Выделить всё

root@ACER:/etc/sudoers.d# apt install python3-opencv gstreamer1.0-opencv
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
Будут установлены следующие дополнительные пакеты:
  gdal-data libaec0 libarmadillo9 libarpack2 libcharls1 libdap25 libdapclient6v5 libdapserver7v5 libepsilon1 libfreexl1 libfyba0
  libgdal20 libgdcm2.8 libgeos-3.7.1 libgeos-c1v5 libgeotiff2 libgl2ps1.4 libgstreamer-opencv1.0-0 libhdf4-0-alt libhdf5-103
  libhdf5-openmpi-103 libkmlbase1 libkmlconvenience1 libkmldom1 libkmlengine1 libkmlregionator1 libkmlxsd1 liblept5 libminizip1
  libnetcdf-c++4 libnetcdf13 libodbc1 libogdi3.2 libopencv-calib3d3.2 libopencv-contrib3.2 libopencv-features2d3.2
  libopencv-flann3.2 libopencv-highgui3.2 libopencv-imgcodecs3.2 libopencv-ml3.2 libopencv-objdetect3.2 libopencv-photo3.2
  libopencv-shape3.2 libopencv-stitching3.2 libopencv-superres3.2 libopencv-video3.2 libopencv-videoio3.2 libopencv-videostab3.2
  libopencv-viz3.2 libpq5 libproj13 libqhull7 libsocket++1 libspatialite7 libsuperlu5 libsz2 libtesseract4 liburiparser1
  libvtk6.3 libxerces-c3.2 odbcinst odbcinst1debian2 proj-bin proj-data
Предлагаемые пакеты:
  geotiff-bin gdal-bin libgeotiff-epsg libhdf4-doc libhdf4-alt-dev hdf4-tools libmyodbc odbc-postgresql tdsodbc unixodbc-bin
  ogdi-bin vtk6-doc vtk6-examples
Следующие НОВЫЕ пакеты будут установлены:
  gdal-data gstreamer1.0-opencv libaec0 libarmadillo9 libarpack2 libcharls1 libdap25 libdapclient6v5 libdapserver7v5 libepsilon1
  libfreexl1 libfyba0 libgdal20 libgdcm2.8 libgeos-3.7.1 libgeos-c1v5 libgeotiff2 libgl2ps1.4 libgstreamer-opencv1.0-0
  libhdf4-0-alt libhdf5-103 libhdf5-openmpi-103 libkmlbase1 libkmlconvenience1 libkmldom1 libkmlengine1 libkmlregionator1
  libkmlxsd1 liblept5 libminizip1 libnetcdf-c++4 libnetcdf13 libodbc1 libogdi3.2 libopencv-calib3d3.2 libopencv-contrib3.2
  libopencv-features2d3.2 libopencv-flann3.2 libopencv-highgui3.2 libopencv-imgcodecs3.2 libopencv-ml3.2 libopencv-objdetect3.2
  libopencv-photo3.2 libopencv-shape3.2 libopencv-stitching3.2 libopencv-superres3.2 libopencv-video3.2 libopencv-videoio3.2
  libopencv-videostab3.2 libopencv-viz3.2 libpq5 libproj13 libqhull7 libsocket++1 libspatialite7 libsuperlu5 libsz2 libtesseract4
  liburiparser1 libvtk6.3 libxerces-c3.2 odbcinst odbcinst1debian2 proj-bin proj-data python3-opencv
Обновлено 0 пакетов, установлено 66 новых пакетов, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 67,8 MB архивов.
...
Настраивается пакет python3-opencv (3.2.0+dfsg-5) …
Настраивается пакет gstreamer1.0-opencv:amd64 (1.14.4-1+b1) …
Обрабатываются триггеры для libc-bin (2.28-2) …

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ python3
Python 3.7.2rc1 (default, Dec 12 2018, 06:25:49) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.2.0'
>>> import openface
>>> import dlib
>>> dlib.__version__
'19.16.99'
>>> exit()

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ pip3 show openface
Name: openface
Version: 0.2.1
Summary: Face recognition with Google's FaceNet deep neural network.
Home-page: https://github.com/cmusatyalab/openface
Author: UNKNOWN
Author-email: UNKNOWN
License: UNKNOWN
Location: /usr/local/lib/python3.7/dist-packages
Requires: 

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ pip3 check openface
No broken requirements found.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

распознавание лиц

Непрочитанное сообщение Olej » 24 дек 2018, 12:46

Olej писал(а): Следующий необходимый пакет/проект - OpenFace:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/step-2_projecting-faces$ pwd
/home/olej/2019_WORK/own.WORK/AplitSoft/FaceDL/step-2_projecting-faces

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/step-2_projecting-faces$ ./projecting-faces.py male/akatsi/akatsi.17.jpg
Found 1 faces in the image file male/akatsi/akatsi.17.jpg
- Face #0 found at Left: 32 Top: 68 Right: 139 Bottom: 175

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/step-2_projecting-faces$ ls -l aligned_face_0.jpg 
-rw-rw-r-- 1 olej olej 44087 дек 23 23:13 aligned_face_0.jpg

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/step-2_projecting-faces$ date
Вс дек 23 23:14:18 EET 2018
Вложения
akatsi.17.jpg
akatsi.17.jpg (6.15 КБ) 2435 просмотров
aligned_face_0.jpg

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

распознавание лиц

Непрочитанное сообщение Olej » 24 дек 2018, 12:52

Olej писал(а): Следующий необходимый пакет/проект - OpenFace:
Следующий необходимый пакет/проект - face_recognition:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ git clone https://github.com/ageitgey/face_recognition
Клонирование в «face_recognition»…
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 667 (delta 0), reused 0 (delta 0), pack-reused 666
Получение объектов: 100% (667/667), 101.38 MiB | 3.42 MiB/s, готово.
Определение изменений: 100% (369/369), готово.

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ du -hs face_recognition 
117M	face_recognition

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ cd face_recognition

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/face_recognition$ cat requirements.txt 
face_recognition_models
Click>=6.0
dlib>=19.3.0
numpy
Pillow
scipy>=0.17.0

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/face_recognition$ pip3 show scipy
Name: scipy
Version: 1.2.0
Summary: SciPy: Scientific Library for Python
Home-page: https://www.scipy.org
Author: None
Author-email: None
License: BSD
Location: /usr/local/lib/python3.7/dist-packages
Requires: numpy

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/face_recognition$ pip3 show Pillow
Name: Pillow
Version: 5.3.0
Summary: Python Imaging Library (Fork)
Home-page: http://python-pillow.org
Author: Alex Clark (Fork Author)
Author-email: aclark@aclark.net
License: Standard PIL License
Location: /usr/lib/python3/dist-packages
Requires: 

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/face_recognition$ pip3 show numpy
Name: numpy
Version: 1.15.4
Summary: NumPy: array processing for numbers, strings, records, and objects.
Home-page: http://www.numpy.org
Author: Travis E. Oliphant et al.
Author-email: None
License: BSD
Location: /usr/local/lib/python3.7/dist-packages
Requires: 

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/face_recognition$ pip3 show dlib
Name: dlib
Version: 19.16.99
Summary: A toolkit for making real world machine learning and data analysis applications
Home-page: https://github.com/davisking/dlib
Author: Davis King
Author-email: davis@dlib.net
License: Boost Software License
Location: /usr/local/lib/python3.7/dist-packages/dlib-19.16.99-py3.7-linux-x86_64.egg
Requires: 

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/face_recognition$ pip3 show Click

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/face_recognition$ pip3 show face_recognition_models

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/face_recognition$ sudo pip3 install Click
[sudo] пароль для olej: 
Collecting Click
  Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB)
    100% |████████████████████████████████| 81kB 736kB/s 
Installing collected packages: Click
Successfully installed Click-7.0

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/face_recognition$ pip3 search face_recognition_models
face_recognition_models (0.3.0)  - Models used by the face_recognition package.

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/face_recognition$ sudo pip3 install face_recognition_models
Collecting face_recognition_models
  Downloading https://files.pythonhosted.org/packages/cf/3b/4fd8c534f6c0d1b80ce0973d01331525538045084c73c153ee6df20224cf/face_recognition_models-0.3.0.tar.gz (100.1MB)
    100% |████████████████████████████████| 100.2MB 14kB/s 
Building wheels for collected packages: face-recognition-models
  Running setup.py bdist_wheel for face-recognition-models ... done
  Stored in directory: /root/.cache/pip/wheels/d2/99/18/59c6c8f01e39810415c0e63f5bede7d83dfb0ffc039865465f
Successfully built face-recognition-models
Installing collected packages: face-recognition-models
Successfully installed face-recognition-models-0.3.0

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

распознавание лиц

Непрочитанное сообщение Olej » 24 дек 2018, 12:56

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/face_recognition$ time sudo python3 setup.py install
running install
running bdist_egg
running egg_info
creating face_recognition.egg-info
writing face_recognition.egg-info/PKG-INFO
writing dependency_links to face_recognition.egg-info/dependency_links.txt
writing entry points to face_recognition.egg-info/entry_points.txt
writing requirements to face_recognition.egg-info/requires.txt
writing top-level names to face_recognition.egg-info/top_level.txt
writing manifest file 'face_recognition.egg-info/SOURCES.txt'
reading manifest file 'face_recognition.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
warning: no files found matching '*.jpg' under directory 'docs'
warning: no files found matching '*.png' under directory 'docs'
warning: no files found matching '*.gif' under directory 'docs'
writing manifest file 'face_recognition.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/face_recognition
copying face_recognition/face_detection_cli.py -> build/lib/face_recognition
copying face_recognition/__init__.py -> build/lib/face_recognition
copying face_recognition/api.py -> build/lib/face_recognition
copying face_recognition/face_recognition_cli.py -> build/lib/face_recognition
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/egg
creating build/bdist.linux-x86_64/egg/face_recognition
copying build/lib/face_recognition/face_detection_cli.py -> build/bdist.linux-x86_64/egg/face_recognition
copying build/lib/face_recognition/__init__.py -> build/bdist.linux-x86_64/egg/face_recognition
copying build/lib/face_recognition/api.py -> build/bdist.linux-x86_64/egg/face_recognition
copying build/lib/face_recognition/face_recognition_cli.py -> build/bdist.linux-x86_64/egg/face_recognition
byte-compiling build/bdist.linux-x86_64/egg/face_recognition/face_detection_cli.py to face_detection_cli.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/face_recognition/__init__.py to __init__.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/face_recognition/api.py to api.cpython-37.pyc
byte-compiling build/bdist.linux-x86_64/egg/face_recognition/face_recognition_cli.py to face_recognition_cli.cpython-37.pyc
creating build/bdist.linux-x86_64/egg/EGG-INFO
copying face_recognition.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
copying face_recognition.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying face_recognition.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying face_recognition.egg-info/entry_points.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying face_recognition.egg-info/not-zip-safe -> build/bdist.linux-x86_64/egg/EGG-INFO
copying face_recognition.egg-info/requires.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying face_recognition.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
creating dist
creating 'dist/face_recognition-1.2.3-py3.7.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing face_recognition-1.2.3-py3.7.egg
creating /usr/local/lib/python3.7/dist-packages/face_recognition-1.2.3-py3.7.egg
Extracting face_recognition-1.2.3-py3.7.egg to /usr/local/lib/python3.7/dist-packages
Adding face-recognition 1.2.3 to easy-install.pth file
Installing face_detection script to /usr/local/bin
Installing face_recognition script to /usr/local/bin

Installed /usr/local/lib/python3.7/dist-packages/face_recognition-1.2.3-py3.7.egg
Processing dependencies for face-recognition==1.2.3
Searching for numpy==1.15.4
Best match: numpy 1.15.4
Adding numpy 1.15.4 to easy-install.pth file

Using /usr/local/lib/python3.7/dist-packages
Searching for face-recognition-models==0.3.0
Best match: face-recognition-models 0.3.0
Adding face-recognition-models 0.3.0 to easy-install.pth file

Using /usr/local/lib/python3.7/dist-packages
Searching for dlib==19.16.99
Best match: dlib 19.16.99
Processing dlib-19.16.99-py3.7-linux-x86_64.egg
dlib 19.16.99 is already the active version in easy-install.pth

Using /usr/local/lib/python3.7/dist-packages/dlib-19.16.99-py3.7-linux-x86_64.egg
Searching for Pillow==5.3.0
Best match: Pillow 5.3.0
Adding Pillow 5.3.0 to easy-install.pth file

Using /usr/lib/python3/dist-packages
Searching for Click==7.0
Best match: Click 7.0
Adding Click 7.0 to easy-install.pth file

Using /usr/local/lib/python3.7/dist-packages
Finished processing dependencies for face-recognition==1.2.3

real	0m0,428s
user	0m0,351s
sys	0m0,060s

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ pip3 check face-recognition
No broken requirements found.

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ pip3 show face-recognition
Name: face-recognition
Version: 1.2.3
Summary: Recognize faces from Python or from the command line
Home-page: https://github.com/ageitgey/face_recognition
Author: Adam Geitgey
Author-email: ageitgey@gmail.com
License: MIT license
Location: /usr/local/lib/python3.7/dist-packages/face_recognition-1.2.3-py3.7.egg
Requires: Click, Pillow, dlib, face-recognition-models, numpy

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ python3
Python 3.7.2rc1 (default, Dec 12 2018, 06:25:49) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import face_recognition
>>> face_recognition.__version__
'1.2.3'
>>> exit()
Важно: face_recognition не зависит от предыдущего OpenFace, не требует его импорта, и эти алгоритмы содержит внутри себя.
Необходимая и достаточная документация по API и его использованию содержится здесь: face_recognition package.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

распознавание лиц

Непрочитанное сообщение Olej » 24 дек 2018, 13:04

Olej писал(а): Необходимая и достаточная документация по API и его использованию содержится здесь: face_recognition package.
Кроме библиотек и API, пакет face_recognition содержит пару CLI утилит ... для проверки функционирования + оценивания изображений:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ ls -l /usr/local/bin/face*
-rwxr-xr-x 1 root root 423 дек 23 23:34 /usr/local/bin/face_detection
-rwxr-xr-x 1 root root 427 дек 23 23:34 /usr/local/bin/face_recognition

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ face_detection --help
Usage: face_detection [OPTIONS] IMAGE_TO_CHECK

Options:
  --cpus INTEGER  number of CPU cores to use in parallel. -1 means "use all in
                  system"
  --model TEXT    Which face detection model to use. Options are "hog" or
                  "cnn".
  --help          Show this message and exit.


olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL$ face_recognition --help
Usage: face_recognition [OPTIONS] KNOWN_PEOPLE_FOLDER IMAGE_TO_CHECK

Options:
  --cpus INTEGER           number of CPU cores to use in parallel (can speed
                           up processing lots of images). -1 means "use all in
                           system"
  --tolerance FLOAT        Tolerance for face comparisons. Default is 0.6.
                           Lower this if you get multiple matches for the same
                           person.
  --show-distance BOOLEAN  Output face distance. Useful for tweaking tolerance
                           setting.
  --help                   Show this message and exit.

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/my_face_recognition_cli$ pwd
/home/olej/2019_WORK/own.WORK/AplitSoft/FaceDL/my_face_recognition_cli

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/my_face_recognition_cli$ tree
.
├── pictures_of_people_i_know_1
│   ├── subject01.glasses
│   ├── subject01.happy
│   ├── subject01.leftlight
│   ├── subject01.normal
│   ├── subject01.sad
│   ├── subject01.sleepy
│   ├── subject01.surprised
│   └── subject01.wink
├── pictures_of_people_i_know_2
│   ├── adhast.1.jpg
│   ├── adhast.2.jpg
│   ├── adhast.3.jpg
│   ├── damvo.1.jpg
│   ├── damvo.2.jpg
│   └── damvo.3.jpg
├── unknown_pictures_1
│   ├── subject01.gif
│   └── subject01.glasses.gif
└── unknown_pictures_2
    ├── adhast.10.jpg
    ├── cywan.10.jpg
    ├── damvo.10.jpg
    ├── howar.10.jpg
    ├── kbartl.10.jpg
    ├── rafox.10.jpg
    └── simm.10.jpg

4 directories, 23 files


olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/my_face_recognition_cli$ pwd
/home/olej/2019_WORK/own.WORK/AplitSoft/FaceDL/my_face_recognition_cli

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/my_face_recognition_cli$ face_recognition --show-distance true ./pictures_of_people_i_know_2 ./unknown_pictures_2
./unknown_pictures_2/howar.10.jpg,unknown_person,None
./unknown_pictures_2/cywan.10.jpg,unknown_person,None
./unknown_pictures_2/kbartl.10.jpg,unknown_person,None
./unknown_pictures_2/adhast.10.jpg,adhast.1,0.26958744592539396
./unknown_pictures_2/adhast.10.jpg,adhast.2,0.2704450638279574
./unknown_pictures_2/adhast.10.jpg,adhast.3,0.21997272164242918
./unknown_pictures_2/simm.10.jpg,unknown_person,None
./unknown_pictures_2/rafox.10.jpg,damvo.3,0.5831319732230931
./unknown_pictures_2/rafox.10.jpg,damvo.1,0.599341270613075
./unknown_pictures_2/rafox.10.jpg,damvo.2,0.5960799934272807
./unknown_pictures_2/damvo.10.jpg,damvo.3,0.2699794373876288
./unknown_pictures_2/damvo.10.jpg,damvo.1,0.2209686348971415
./unknown_pictures_2/damvo.10.jpg,damvo.2,0.22757399108642976

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/my_face_recognition_cli/pictures_of_people_i_know_2$ pwd
/home/olej/2019_WORK/own.WORK/AplitSoft/FaceDL/my_face_recognition_cli/pictures_of_people_i_know_2

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/my_face_recognition_cli/pictures_of_people_i_know_2$ face_detection adhast.3.jpg 
adhast.3.jpg,53,109,125,37

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/my_face_recognition_cli/pictures_of_people_i_know_2$ face_detection --model cnn adhast.3.jpg 
adhast.3.jpg,44,115,123,36
Вложения
my_face_recognition_cli.tgz
(404.36 КБ) 113 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

Re: распознавание лиц

Непрочитанное сообщение Olej » 24 дек 2018, 13:19

Olej писал(а): Необходимая и достаточная документация по API и его использованию содержится здесь: face_recognition package.
Для того, чтобы видеть, как face_recognition выделяет характерные черты лица + формирует те 128 характерных точек, определённые в итоге deep learning, такое тестовое приложение:

Код: Выделить всё

#!/usr/bin/python3
import sys
import face_recognition

# read input image
try:
    image = face_recognition.load_image_file( sys.argv[ 1 ] )
except Exception as err:
    print( 'error: {}'.format( err ) )
    print( 'usage: {} <image_file>'.format( sys.argv[ 0 ] ) )
    sys.exit( 1 )
print( type( image ) )

# Find all the faces in the image
face_locations = face_recognition.face_locations( image )
print( len( face_locations ), type( face_locations ) )
print( type( face_locations[ 0 ] ) )
print( face_locations[ 0 ] )

# Or maybe find the facial features in the image
face_landmarks_list = face_recognition.face_landmarks( image )
print( len( face_landmarks_list ), type( face_landmarks_list ) )
print( len( face_landmarks_list[ 0 ] ), type( face_landmarks_list[ 0 ] ) )
print( face_landmarks_list[ 0 ] )
for key in face_landmarks_list[ 0 ]:
    print( key, face_landmarks_list[ 0 ][ key ] )

# Or you could get face encodings for each face in the image:
list_of_face_encodings = face_recognition.face_encodings(image)
print( len( list_of_face_encodings ), type( list_of_face_encodings ) )
print( len( list_of_face_encodings[ 0 ] ), type( list_of_face_encodings[ 0 ] ) )
print( list_of_face_encodings[ 0 ] )

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/my_face_recognition_aplit$ ./face_encoding.py 00000001.png 
<class 'numpy.ndarray'>
1 <class 'list'>
<class 'tuple'>
(180, 469, 366, 283)
1 <class 'list'>
9 <class 'dict'>
{'chin': [(290, 240), (293, 263), (298, 285), (305, 307), (314, 326), (326, 343), (343, 357), (362, 367), (383, 369), (404, 364), (422, 351), (438, 336), (448, 316), (454, 294), (457, 271), (459, 248), (459, 224)], 'left_eyebrow': [(299, 215), (307, 201), (322, 193), (338, 194), (354, 200)], 'right_eyebrow': [(388, 197), (402, 189), (419, 187), (435, 192), (446, 203)], 'nose_bridge': [(372, 223), (373, 241), (373, 259), (374, 277)], 'nose_tip': [(357, 288), (366, 291), (376, 293), (386, 290), (394, 286)], 'left_eye': [(316, 236), (326, 231), (337, 230), (349, 234), (338, 237), (326, 238)], 'right_eye': [(398, 230), (408, 224), (419, 223), (430, 227), (420, 231), (409, 231)], 'top_lip': [(346, 324), (357, 318), (368, 314), (377, 315), (386, 312), (398, 314), (412, 318), (406, 318), (387, 320), (378, 322), (369, 322), (352, 324)], 'bottom_lip': [(412, 318), (401, 328), (389, 334), (380, 336), (371, 336), (359, 333), (346, 324), (352, 324), (370, 323), (379, 323), (387, 321), (406, 318)]}
chin [(290, 240), (293, 263), (298, 285), (305, 307), (314, 326), (326, 343), (343, 357), (362, 367), (383, 369), (404, 364), (422, 351), (438, 336), (448, 316), (454, 294), (457, 271), (459, 248), (459, 224)]
left_eyebrow [(299, 215), (307, 201), (322, 193), (338, 194), (354, 200)]
right_eyebrow [(388, 197), (402, 189), (419, 187), (435, 192), (446, 203)]
nose_bridge [(372, 223), (373, 241), (373, 259), (374, 277)]
nose_tip [(357, 288), (366, 291), (376, 293), (386, 290), (394, 286)]
left_eye [(316, 236), (326, 231), (337, 230), (349, 234), (338, 237), (326, 238)]
right_eye [(398, 230), (408, 224), (419, 223), (430, 227), (420, 231), (409, 231)]
top_lip [(346, 324), (357, 318), (368, 314), (377, 315), (386, 312), (398, 314), (412, 318), (406, 318), (387, 320), (378, 322), (369, 322), (352, 324)]
bottom_lip [(412, 318), (401, 328), (389, 334), (380, 336), (371, 336), (359, 333), (346, 324), (352, 324), (370, 323), (379, 323), (387, 321), (406, 318)]
1 <class 'list'>
128 <class 'numpy.ndarray'>
[-6.99084550e-02  9.84077677e-02  1.21111952e-01  3.21756816e-04
 -8.06934386e-02 -3.00324634e-02 -2.96985395e-02 -6.87163025e-02
  1.80488676e-01 -6.75300285e-02  1.58340275e-01 -2.03328058e-02
 -2.56850511e-01  6.75959960e-02 -1.02667317e-01  1.90818712e-01
 -1.33553550e-01 -1.25300437e-01 -7.63143376e-02  5.06964512e-04
 -9.69889015e-03  5.19757308e-02  1.30817778e-02  5.43041788e-02
 -8.44295472e-02 -4.11997318e-01 -9.06100720e-02 -9.69127864e-02
  4.06600088e-02 -8.26482102e-02 -6.94197938e-02  1.06586844e-01
 -1.10932812e-01 -4.59331349e-02  1.27042964e-01  3.46937254e-02
 -2.30356008e-02 -7.51237869e-02  2.95453787e-01  7.30510652e-02
 -2.49845639e-01 -3.19937542e-02  1.23676628e-01  3.10146123e-01
  2.39223540e-01  4.04311530e-02  6.09315187e-02 -1.13170296e-01
  1.79889292e-01 -2.66186565e-01 -3.27012390e-02  1.57478452e-01
  8.86571631e-02  1.04656361e-01  8.42584670e-02 -1.68988526e-01
  5.63557632e-03  4.32377830e-02 -2.05842018e-01  2.13439558e-02
  9.83662438e-03 -7.29782879e-02 -1.60746239e-02 -1.90627482e-02
  2.16138616e-01  2.32765507e-02 -1.32712483e-01 -9.71576944e-02
  2.83064425e-01 -2.04469994e-01  1.60780232e-02  6.59383535e-02
 -1.09041609e-01 -1.50104165e-01 -2.32336491e-01 -8.21434185e-02
  4.95616883e-01  1.19069979e-01 -1.26885802e-01  7.11885765e-02
 -1.34624392e-01 -1.24624126e-01 -2.27493569e-02  1.45198524e-01
 -4.43204530e-02  9.13855340e-03  6.91939751e-03  1.47860283e-02
  2.73463219e-01 -1.44845890e-02  5.05373925e-02  2.02544644e-01
  3.26371491e-02  4.51781377e-02  2.32621413e-02  8.14667717e-02
 -1.36481017e-01 -5.39681278e-02 -1.68556258e-01 -4.73947376e-02
 -8.87598321e-02 -4.70956713e-02  5.66910915e-02  1.47512004e-01
 -2.95983315e-01  1.58027336e-01  2.28146650e-02 -4.56366576e-02
  1.88250300e-02  7.08771721e-02 -4.78915460e-02 -6.09939806e-02
  1.54033735e-01 -2.81089604e-01  1.26432478e-01  1.87709391e-01
 -4.99948207e-03  9.15238559e-02 -1.44862700e-02  3.22556496e-02
  3.12946066e-02 -6.52949885e-02 -1.51842579e-01 -1.17168225e-01
  2.14237021e-03 -4.57915515e-02 -2.86754183e-02 -8.76710285e-04]
Это много добавляет в понимании форматов представления, для написания собственных приложений распознавания лиц.
Вложения
face_encoding.py
(1.18 КБ) 116 скачиваний

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

распознавание лиц

Непрочитанное сообщение Olej » 09 янв 2019, 18:55

Программа, которая с WEB-камеры или записанного с камеры видеоролика распознаёт известных ей людей.
Использование так:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/my_face_recognition_aplit$ ./facerec_from_video.py --help
usage: facerec_from_video.py [-h] [-i IMAGE] -k KNOWN [-t TOLERANCE]
                             [-o OUTPUT] [-s] [-v]

optional arguments:
  -h, --help            show this help message and exit
  -i IMAGE, --image IMAGE
                        video stream source
  -k KNOWN, --known KNOWN
                        known persons directory
  -t TOLERANCE, --tolerance TOLERANCE
                        tolerance level
  -o OUTPUT, --output OUTPUT
                        output video stream
  -s, --sightless       without visualization
  -v, --verbose         increase output verbosity
-i - это или имя файла видеозаписи, или номер (индекс) WEB-камеры, если -i опущен - используется дефаултная WEB-камера.

Код: Выделить всё

linaro@linaro-alip:~/FaceDL/my_face_recognition_aplit$ ./facerec_from_video.py -k Aplit.web.test -v -i Egor1.avi -o Egor1_r.avi -t 0.5 
version 2.06
saved 628 frames as file Egor1_r.avi
processed 748 frames: detected 606 identified persons and 22 not identified
identified as Egor: 606 times
the average identification time was 0.216346 [+/-0.048649] seconds

linaro@linaro-alip:~/FaceDL/my_face_recognition_aplit$ ls -l Egor1*
-rw-r--r-- 1 linaro linaro 2218104 Aug 14 10:29 Egor1.avi
-rw-r--r-- 1 linaro linaro 1938680 Dec 27 14:36 Egor1_r.avi
Внизу показаны отдельные кадры визуализированного потока распознавания. По опции -o можно этот поток распознавания записать в файл ... на память ;-)

P.S. Распознавание специально показано на ARM одноплатнике Dragon Board 410c, даже а нём среднее время распознавания кадра порядка 0.22 сек.
Вложения
common.py
(2.37 КБ) 103 скачивания
facerec_from_video.py
(5.8 КБ) 104 скачивания
e4.png
e5.png
e10.png

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

распознавание лиц

Непрочитанное сообщение Olej » 09 янв 2019, 19:11

Olej писал(а):Программа, которая с WEB-камеры или записанного с камеры видеоролика распознаёт известных ей людей.
Для наполнения перечня известных к распознаванию лиц достаточно (в этой программе!) всего лишь наполнить каталог, указанный в опции -k заполнить файлами (.jpg или .png) анфас:

Код: Выделить всё

olej@ACER:~/2019_WORK/own.WORK/AplitSoft/FaceDL/my_face_recognition_aplit$ ls -l Aplit.web.test 
итого 76
-rw-rw-r-- 1 olej olej 32310 дек 12 19:25 Boris.1.1.jpg
-rw-rw-r-- 1 olej olej 23454 дек 12 19:25 Egor.1.2.jpg
-rw-rw-r-- 1 olej olej 20381 дек 12 19:25 Olena.3.4.jpg
1-й компонент имени - это и будет имя персонажа, а все остальные уровни "расширений" (после '.') могут быть любыми.

Аватара пользователя
Olej
Писатель
Сообщения: 21338
Зарегистрирован: 24 сен 2011, 14:22
Откуда: Харьков
Контактная информация:

распознавание лиц

Непрочитанное сообщение Olej » 28 янв 2019, 19:44

Olej писал(а): Внизу показаны отдельные кадры визуализированного потока распознавания. По опции -o можно этот поток распознавания записать в файл ... на память ;-)
P.S. Распознавание специально показано на ARM одноплатнике Dragon Board 410c, даже а нём среднее время распознавания кадра порядка 0.22 сек.
В развитие этой линии распознавателя:
- приложение, которое ведёт распознавание...
- при распознавании знакомого лица (из БД) оно вызывает внешнее приложение (процесс), который может делать всё что угодно ... дверь открывать, сейф ;-) ... уведомлять хозяина о приходе гостей ;-)

Код: Выделить всё

./locker.py -k Aplit.web.test -t 0.5 -v -a './actps.py -d 10 -s login.wav'
...
1548689330156-t.JPEG
Вложения
locker.py
(5.54 КБ) 115 скачиваний
common.py
(5.62 КБ) 115 скачиваний
act.py
(415 байт) 106 скачиваний
actps.py
(1.27 КБ) 105 скачиваний
login.wav
(187.9 КБ) 121 скачивание

Ответить

Вернуться в «Программирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей