元画像対角線の長さを持つ正方形領域を作って、その中央に元画像を配置する。imgこの画像をそれぞれ少しずつ回転させたものを生成し、それぞれに対して顔検出を試みる。それらを含めて全パターンの結果を集める。12°ずつの回転幅で試すのが、多くの回転角を少ない検出試行で網羅できて良さそうだった。高いscoreになっているので、そちらを仮の回転角として採用する。検出し、左右の目の中央位置を算出する。使ってその微妙な角度を計算する。計算した角度を足して、最終的な回転角とする。回転でほぼ真っ直ぐの状態になる、と計算された。その回転角での画像をもう一度生成し、正しく顔とlandmarkが検出されることを確認する。dets[0])次に、見切れている部分の補完を行う。データセットには顔の周辺部分まで含めて切り取って使うことになるので、その周辺部分で画像が切れていたりすると非常に不自然な領域が存在してしまうことになる。padding)、そこから切り取ることで不自然さを和らげているようだ。:]たしかに背景の壁などはそのまま続いているかのように見えて不自然な領域は減りそうだ。切り取るべき顔領域の中心座標と大きさを算出している。y)といった計算でやっているようだ。そのまま使って適用してみる。:]いい感じにそれっぽく、正規化された顔画像として切り抜くことが出来そうだ。件のURLから実際にこの方法による検出を試みた。件ほどの顔画像を収集することができた。見切れ領域の多い画像に起こる問題点こうして見ると良い画像データが揃っているように見えるが、実際には全然そんなに上手くはいかない。寄り気味に撮られていて、顔や頭の輪郭まで全部は写っていない場合が多い。結局不自然な画像になってしまう。前述の例でも、もしもっと寄り気味に撮られていて頭などが見切れていたら...という感じになって、顔やlandmarkは確かに検出されるかもしれないけど、頭や他の部分が変な形に繋がってしまっておかしなものになってしまう。件ほど使って生成モデルでの学習を試みてみた。使って何epochか学習してみた。確かにアイドルの顔っぽい画像が生成されるが、やはり右上や左上などに鏡面反射した顔が繋がっているような奇妙な形のものが生成されやすいようだ。いう画像を含んだものを学習データとして与えてしまっているのでそうなるのは当然の結果ではある。画像選別と管理のためのWebアプリケーションとなると今度はデータのクリーニングが必要になってくる。画像を確認し、「学習データに使える、顔全体がきれいに入っている画像」と「学習データに使いたくない、不自然な画像」を選別することにした。ローカル環境でデータを管理したくない、自分好みのUIで作業・確認したい、などの理由もあり、例によって管理用のWebアプリケーションを自作した。次の時代はFirestoreらしい、ということで今回初めて触ってみた)。叩く形のアプリケーション。認証するようにしている。4つの値をセットできるようにした。