技術者ブログ(3) – AWS のご紹介(Amazon Web Services)

技術者ブログと題して社員が日ごろ取り組んでいる学習内容を紹介します。
第3回は、クラウドをテーマにしている第3ユニットです。

今回のテーマ
『 AWS について』

AWSとは、 Amazon Web Servicesの略称で、Amazon.comから提供されているクラウドコンピューティングサービスです。クラウドの分野では世界1位のシェアを誇ります。


Amazon 社内のビジネス課題を解決するために生まれた IT インフラストラクチャのノウハウをもとに、2006 年、アマゾン ウェブ サービス(AWS)はウェブサービスという形態で、企業を対象に IT インフラストラクチャサービスの提供を開始しました。

引用
https://aws.amazon.com/jp/about-aws/

AWSでできること

AWSでは、インターネット経由でコンソール画面にアクセスすることで様々な機能を利用することができます。

AWSコンソール画面(サービス一覧)

代表的な機能を以下に挙げます。

  • Elastic Compute Cloud(EC2):AWSが提供する仮想サーバ です。
    LinuxやWindows 等様々なOSの仮想サーバ実行環境を利用することができます。
  • Simple Storage Service (S3):インターネット経由で利用できるストレージサービスです。高い堅牢性を実現しています。
  • Relational Database Service(RDS):リレーショナルデータベース構築サービスです。Oracle、MySQL、PostgreSQL等のデータベースを利用することができます。

AWSの料金について

AWSはサービス利用に応じて料金がかかる従量課金制となっています。
例えば、EC2では使用するインスタンス(仮想サーバ環境)とインスタンスの起動時間により料金が決まります。時間課金(オンデマンド)の他に、リザーブドという長期契約割引といったオプションもあります。
また、AWSでは「簡易見積ツール」を利用することで、月額金額を見積もることができます。

今後は、AWSの様々な機能について掘り下げてご紹介していきたいと思います。

技術者ブログ(1) – PythonとOpenCVで顔を認識する

技術者ブログと題して社員が日ごろ取り組んでいる学習内容を紹介します。
第1回は、AIをテーマにしている第1ユニットです。

今回のテーマ
『画像の中から顔を判別する』

使用する言語 – Python

機械学習向けのライブラリなど環境が充実しており情報も集めやすいです。

使ったもの – OpenCV

OpenCV(正式名称: Open Source Computer Vision Library)は、オープンソースのコンピューター・ビジョン・ライブラリです。コンピューターで画像や動画を処理するのに必要な、さまざま機能が実装されており、BSDライセンスで配布されていることから学術用途だけでなく商用目的でも利用できます。加えて、マルチプラットフォーム対応されているため、幅広い場面で利用されていることが特徴です。

引用
https://www.buildinsider.net/small/opencv/001


OpenCVには画像の特徴から判断するためのライブラリがあらかじめ用意されています。(カスケード型分類器とか言ったりするらしい)

今回はそれを利用し、用意した画像から顔を認識させ、顔の部分だけ切り出した画像を出力するプログラムを作成します。

ソースコード(抜粋)

トライ&エラーの過程は省略させていただき、実際に作った内容をざっくりと書きます。

openCVのインポート

import cv2

カスケード型分類器に使用する分類器のデータ(xmlファイル)を読み込み

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt2.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')

カスケード型分類器に使用する分類器のデータ(xmlファイル)を読み込みます。
今回は顔と目検出を行いたいため、上記2つのファイルを指定します。

カスケード型分類器を使用して画像ファイルから顔部分を検出する

faces = face_cascade.detectMultiScale(img, 1.02, 5)

顔検出を行います。検出に成功した場合は画像のサイズが出力されます。

検出部分を切り出して画像保存

x,y,w,h = item['frame']
face = rotated[y:y+h, x:x+w]
face = cv2.resize(face, (IMAGE_SIZE, IMAGE_SIZE))
web_path = '%s/%s_%s.jpg' % (out_dir, fn, item['face_id'])
out_file = '%s/%s' % (base_dir, web_path)
cv2.imwrite(out_file, face)


実際にやってみた

  

この画像を指定してプログラムを実行すると…

   ↓

顔だけ認識された画像が生成されました!

  作ってみた感想

検索すると沢山の情報がでてきて、案外簡単につくることができました。
実際にソースを書く部分より、PythonやOpenCVのインストールなどの環境構築のほうが苦戦したかもしれません。
みなさんも興味があれば挑戦してみてください。

ここから切り出した画像を使い、誰の顔か判定する仕組みを作ってみたりしましたが、この先の話はまた次の機会に書きたいと思います。