🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
dlib

dlibは、機械学習のC++の画像処理ライブラリの一つ。性能の高い顔の器官検出が簡単にでき、Pythonバインドもあります。オープンソースで無料で使用でき、機械学習以外の様々な機能も搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

4057閲覧

dlibの顔検出の関数の引数の意味

Nanmotsu

総合スコア22

dlib

dlibは、機械学習のC++の画像処理ライブラリの一つ。性能の高い顔の器官検出が簡単にでき、Pythonバインドもあります。オープンソースで無料で使用でき、機械学習以外の様々な機能も搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/11/25 21:59

参考サイト

上記のサイトを参考にして、顔検出&スタンプのプログラムを組んでいますが、一つ疑問に思ったことがありまして、
調べてもいまいち分からなかったので、質問しました。

dlib.get_frontal_face_detector()の第二引数の数字の意味が分からないです。
お教えいただけないでしょうか?

(以下サイト内のdetector.py)

python

1# coding:utf-8 2 3import json 4import math 5import os 6 7import cv2 8import dlib 9 10 11def main(): 12 ## input path and read image 13 img_path = "../data/img/" + os.listdir("../data/img/")[0] 14 img_filename = os.path.basename(img_path) 15 img_ext = img_filename.split(".")[-1] 16 17 img = cv2.imread(img_path, cv2.IMREAD_COLOR) 18 if img is None: 19 print("Could not read input image") 20 exit() 21 22 23 ## instance detector/predictor 24 detector = dlib.get_frontal_face_detector() 25 predictor = dlib.shape_predictor("predictor/shape_predictor_68_face_landmarks.dat") 26 27 28 ## detect faces 29## この下の第二引数の意味が分からないです!!!! 30 faces = detector(img, 1) 31 if len(faces) == 0: 32 print("Could not detect any faces") 33 exit() 34 35 36 ## compute face properties 37 face_properties = {} 38 for i, f in enumerate(faces): 39 ## get 68 points 40 points = predictor(img, f).parts() 41 42 ## Left/Right temples 43 t_L = points[0] 44 t_R = points[16] 45 46 ## calc properties 47 face_width = math.sqrt((t_L.x - t_R.x)**2 + (t_L.y - t_R.y)**2) 48 face_center = [(t_L.x + t_R.x)/2, (t_L.y + t_L.y)/2] 49 degree_acw = -1 * math.degrees(math.atan2((t_R.y - t_L.y), (t_R.x - t_L.x))) 50 51 ## add result 52 face_properties[i] = { 53 "stamp": "01.png", 54 "center": face_center, 55 "width": face_width, 56 "angle": degree_acw 57 } 58 59 ## save 60 with open("../data/json/" + img_filename.replace(img_ext, "json"), "w") as f: 61 json.dump(face_properties, f, ensure_ascii=False, indent=4, separators=(',', ': ')) 62 63 64if __name__ == "__main__": 65 main()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

upsample_num_times というパラメータです。
検出器にかける前に、元画像をその回数アップサンプリングするようです。
http://dlib.net/python/index.html

数値が大きいほど、より小さい領域の検出ができるようになりますが、処理時間と必要なメモリが大きくなります。
デフォルトのパラメータの値は0で、そのときの検出される最小の領域は80x80。1にすると40x40、2にすると20x20となるようです。
https://qiita.com/nonbiri15/items/9561c8194ba0b2041bd0#dlibでの顔検出の最小の検出サイズについて

投稿2020/11/26 00:56

bsdfan

総合スコア4794

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Nanmotsu

2020/11/26 22:53

そこに書かれていたのですね。 教えていただきましてありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問