FACE01 GRAPHICS ver.1.2.6リリース

FACE01 GRAPHICS ver.1.2.6リリース

FACE01 GRAPHICS ver.1.2.6 Windows/Ubuntu

  • Python版
    • Windows10
    • Ubuntu18.04.5
  • EXE版
    • Windows10

Python版ではPython実行環境と配布ファイル中にあるrequirements.txtを使ってライブラリの一括インストールしたものが必要となりますが、FACE01 GRAPHICSの機能を全て見ることが出来ます。

EXE版ではPython実行環境は必要ありません。オプション変数の変更は出来ません。

GPUカードが付属したPCであれば期待する処理速度が出せます。

1.2.5からの変更点

  • 映像に顔がない場合に稀にアプリケーションが不正終了する事象の修正
  • WINDOWS版においてopencv-python4.2.0.32由来と思われるバグの回避
  • その他バグフィックスとそれによる呼び出し方法の変更
  • パイプ機能をオミット
  • 呼び出し方法の変更

呼び出しコード

Python版のみ使用することが出来ます。

# 変数設定 ==========================
## 説明(default値)
## 閾値(0.5)
tolerance=0.45
## ゆらぎ値(0)
jitters=0
## 登録顔画像のゆらぎ値(10)
priset_face_images_jitters=10
## 最小顔検出範囲(0)
upsampling=0
## 顔検出方式(cnn)
mode='cnn'
## フレームドロップ率(-1)
frame_skip=-1
## 入力映像(test.mp4)
movie='http://localhost:8080'
movie='some_people.mp4'
movie='顔無し区間を含んだテスト動画.mp4'
## 顔枠表示シンプル(False)
rectangle=False
## 顔枠表示標準(True)
target_rectangle=True
## 簡易ウィンドウ表示(False)
show_video=False
## 顔画像保存割合(10)
frequency_crop_image=10
## 表示エリア(NONE)
set_area='NONE'
## 収差学習<未実装>(False, 1)
face_learning_bool=False
how_many_face_learning_images=1
## 映像データ標準出力(False)
output_frame_data_bool=False
## 映像データプロパティ表示(False)
print_property=False
## 単一処理時間表示(False)
calculate_time=True
## 映像データ大きさ
SET_WIDTH=500
# ===================================


import time
from concurrent.futures import ProcessPoolExecutor, ThreadPoolExecutor
import cv2
import PySimpleGUI as sg
import FACE01GRAPHICS126 as fg

kaoninshoDir, priset_face_imagesDir=fg.home()
    
known_face_encodings, known_face_names=fg.load_priset_image.load_priset_image(
    kaoninshoDir,
    priset_face_imagesDir, 
    jitters=priset_face_images_jitters, 
)

xs=fg.face_attestation(
    kaoninshoDir, 
    known_face_encodings, 
    known_face_names, 
    tolerance=tolerance, 
    jitters=jitters, 
    upsampling=upsampling,
    mode=mode, 
    model='small', 
    frame_skip=frame_skip, 
    movie=movie, 
    rectangle=rectangle, 
    target_rectangle=target_rectangle, 
    show_video=show_video,
    frequency_crop_image=frequency_crop_image, 
    set_area=set_area,
    face_learning_bool=face_learning_bool,
    how_many_face_learning_images=how_many_face_learning_images,
    output_frame_data=output_frame_data_bool,
    print_property=print_property,
    calculate_time=calculate_time,
    SET_WIDTH=SET_WIDTH
)

# 動作テストをしたい場合はこのブロックのコメントアウトを解除して下さい ----------------
# for array_x in xs:
#     for x in array_x:
#         if not x['img'] is None:
#             cv2.imshow('TEST WINDOW FOR SINGLE CPU', x['img'])
#             if cv2.waitKey(1) & 0xFF == ord('q'):
#                 print('停止されました')
#                 cv2.destroyAllWindows()
#                 exit(0)
# -------------------------------------------------------------------------------------

# window実装
layout=[
    [sg.Text('GUI実装例')],
    [sg.Image(filename='', pad=(25,25), key='cam1')]
]
window=sg.Window('window1', layout, alpha_channel=1)

# 並行処理
def multi(x):
    name, pict, date, img, location, percentage_and_symbol = x['name'], x['pict'], x['date'], x['img'], x['location'], x['percentage_and_symbol']
    if not name==None:
        print(name, percentage_and_symbol, location, date)
    return img

# pool=ProcessPoolExecutor()
pool = ThreadPoolExecutor()
for x_array in xs:
    for x in x_array:
        # <DEBUG>
        if x=={}:
            continue

        result=pool.submit(multi, x)
        event, _=window.read(timeout=1)

        if not result.result() is None:
            imgbytes=cv2.imencode('.png', result.result())[1].tobytes()
            window['cam1'].update(data=imgbytes)

    if event == sg.WIN_CLOSED:
        break

# window close
window.close()
print('終了します')

サンプルアプリケーションのダウンロード

こちらのページからダウンロードすることが出来ます。

最後までお読み頂きありがとうございました。