顔検出 3分クッキング on MacOSX

概要

ラズパイ使って家族と判断したら
「こんにちはご主人様」
家族以外なら
「通報しまーす」
と話してくれるおもちゃを
作ろうと思ってます。

その前段の前段として
静止画で顔検出してみます。

ちなみに顔検出と顔認識は意味が全く異なります。

  • 顔検出 … 顔部分を検出すること。
  • 顔認識 … 特定の人物の顔と判断すること。

環境構築は前回記事を参照してください。

環境

  • MacOSX 10.11.5
  • Python 3

CV2 インストール

  • homebrew で cv2 インストール
1
2
$ brew tap homebrew/science
$ brew install opencv3 --with-python3
  • Python 3 を利用する
1
2
$ source ~/py3env/bin/active
(py3env)$
  • cv2.so を pip の site-package へコピー
1
2
(py3env)$ cd ~/py3env/lib/python3.4/site-packages
(py3env)$ cp /usr/local/Cellar/opencv3/3.1.0_3/lib/python3.4/site-packages/cv2.so .
  • cv2 import 確認

Version が表示されれば成功

1
2
(py3env)$ python -c 'import cv2; print(cv2.__version__)'
3.1.0

スクリプトインストール

1
2
3
(py3env)$ cd ~/py3env
(py3env)$ git clone https://gist.github.com/kenzo0107/5d174797a5a222295b5a39f6fa435777
(py3env)$ cp ./5d174797a5a222295b5a39f6fa435777/trimming.py .

スクリプト実行

1
(py3env)$ python trimming.py <img_path>
  • Before

  • After

革パンも顔認識されてしまう…

が、一応まずできました。

今回のスクリプト要点

  • 正確な検知数を向上させるべく、スクリプト上の以下 detectMultiScale メソッドのパラメータを調整します。
1
facerect = cascade.detectMultiScale(image_gray, scaleFactor=1.02, minNeighbors=3, minSize=(7,7))
Item Value
scaleFactor 画像解析する際に随時縮小し解析するその尺度
minNeighbors 最小近傍矩形
minSize 顔部分を認識するためのサイズ (縦,横)

まず最初の第一歩ができました♪

Datadog NTP 監視でアラート鳴りまくり対応

Datadog NTP 監視でアラート鳴りまくり対応

概要

サーバ時刻の監視を Datadog で実施する際、標準時刻の参照先が異なることで
不要なアラートが発生する事象がありました。

Datadog はデフォルトで pool.ntp.org を参照しています。

AWS EC2 に設定した Chrony ではデフォルトで ntp.nict.jp を参照する様にしていた為、ある日突然アラートがなりまくる事象がありました。

この対策として、
Datadog と Chrony の参照先を統一して管理する様に設定しました。

続きを読む
Docker 不要リソースお掃除 compose

Docker 不要リソースお掃除 compose

概要

ECS EC2 で一部コンテナが 起動開始 → 失敗 → 起動開始 → 失敗 を繰り返し
サーバが容量不足 no space left に陥る事象がありました。

その時の対応をまとめました。

続きを読む
Rails × Redis でスレッドセーフなアクセス数ランキング実装

ecs-cli バージョン指定してインストール

完全な備忘録です。

経緯

6月に入って数日、
ecs-cli の latest をインストールすると latest が 1.6.0 となり
ecs-cli compose ... を実行すると以下のようなエラーが出るようになりました。

1
level=error msg="Unable to open ECS Compose Project" error="Volume driver is not supported"

1.4.0 では問題なかったタスク定義でしたが
1.6.0 では Volume driver is not supported となったそうで処理がこけるようになりました。

その対応として 1.4.0 にバージョン固定した設定です。

続きを読む
AWS ECS prefix 指定してまとめてタスク登録解除
AWS Vault で複数アカウントにMFA認証通過

AWS Vault で複数アカウントにMFA認証通過

AWS Vault とは?

AWS Vault は IAM の認証情報 (Access Key Id, Secret Access Key) を安全に OS のキーストアに保存しアクセスできる仕組みを提供するツールです。

Vault = 金庫 というだけあって
PC 落としても秘匿情報が漏れにくい仕組みにしてくれます。

今回の目的

AWS Vault で複数アカウントのコンソールログインを簡単にしたいと思います。

続きを読む

続 ECR にログイン(aws ecr get-login)無しでプッシュする

概要

前回 ECR への Docker イメージをプッシュする際の認証コマンドを実行せずにプッシュできる様にしました。

ECR にログイン(aws ecr get-login)無しでプッシュする

ですが、
設定が手間というのがあり、CircleCI, AWS CodeBuild 等でワンライナーでささっと書きたいときには不便です。

解決

awscli profile で設定した profile を利用し ecs-cli を利用することで認証をよろしくやってくれます。

1
ecs-cli push <image> --aws-profile <profile> --region <region>

設定 Step

1
2
3
aws configure set --profile hogehoge aws_access_key_id $ACCESS_KEY_ID
aws configure set --profile hogehoge aws_secret_access_key $SECRET_ACCESS_KEY
aws configure set --profile hogehoge region ap-northeast-1
1
2
3
ecs-cli push 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/stg-mogemoge-rails:latest \
--aws-profile hogehoge \
--region ap-northeast-1

以上で aws ecr get-login を使用せず、ECR へプッシュができる様になりました♪

docker build 時に Text file busy で shell が実行できない対策

docker build 時に Text file busy で shell が実行できない対策

概要

Dockerfile 内に以下のように shell の実行を記述していました。

1
2
RUN chmod +x hoge.sh \
&& hoge.sh

上記記述のある状態で docker build 実行した所、以下のようなエラーに遭遇しました。

1
/bin/sh: hoge.sh: Text file busy

What is Text file busy ?

書き込みのために現在開いている手続きのみの (共用テキスト) ファイルを実行しようとした場合や、実行中の手続きのみのファイルを書き込みのために開こうとしたり、削除しようとしたりする場合に発生します。

上記鑑みると
chmod +x hoge.sh 実行中に hoge.sh を実行しようとしたが為に発生しているということ??
と推測。

環境情報

  • Ubuntu 14.04.5 LTS \n \l
  • Docker version 17.05.0-ce, build 89658be
  • Base Image: ruby:2.5-alpine

対策

以下 sync 処理を追加し無事問題解決できました。

1
2
3
RUN chmod +x hoge.sh \
&& sync \
&& hoge.sh

What is sync command ?

参考