MENU
  • サービス
  • AWS導入支援
  • AWS運用代行
  • WordPress
    • WordPress高速化
    • WordPress脆弱性対策
  • 導入事例
  • 良くあるご質問
  • AWS技術知見
  • お問い合わせ
AWSの導入・クラウド運用を総合支援【CapsuleCloud】
  • サービス
  • AWS導入支援
  • AWS運用代行
  • WordPress
    • WordPress高速化
    • WordPress脆弱性対策
  • 導入事例
  • 良くあるご質問
  • AWS技術知見
  • お問い合わせ
AWSの導入・クラウド運用を総合支援【CapsuleCloud】
  • サービス
  • AWS導入支援
  • AWS運用代行
  • WordPress
    • WordPress高速化
    • WordPress脆弱性対策
  • 導入事例
  • 良くあるご質問
  • AWS技術知見
  • お問い合わせ
  1. ホーム
  2. AWS技術知見
  3. Amazon Rekognition 人工知能で画像分析 Part 3

Amazon Rekognition 人工知能で画像分析 Part 3

2022 8/17
AWS技術知見
2022年8月17日
目次

はじめに

前々回と前回でAmazon Rekognitionの基本的な使い方をご説明しました。
今回は、この画像分析の人工知能を使った簡単なアプリケーションを作成してみましょう。

Twitterのストリームデータから画像を大量に収集し、「人」や「動物」など指定したものだけが写っている写真を分類するシステムを作ります。
特定の商品の画像を集めたり、AIの訓練データのために同じモノの画像がたくさん必要になるときなど様々な使い方が考えられます。
指定したものかどうかの判別をAmazon Rekognitionの人工知能で行おうというのがポイントで、写真に写っているものが何かを判別してラベリングできるdetect_labelsのAPIを使用していきます。

アプリケーション実装

前回まではコンソールからの利用でしたが、今回はAWS Ruby SDKを使います。
まずはGemfileを作って、

[ruby]
source 'https://rubygems.org'

gem 'aws-sdk'
gem 'twitter'
[/ruby]

今回使うgemを書いておき、

$ bundle install --path vendor/bundle

bundle install しておきます。

ソースコード全体は下記のような感じ。

* Twitterストリームから指定枚数の画像URLが集まるまで収集
* 画像をURLからダウンロード
* Amazon Rekognitionで「人(People,Person,Human)」が含まれているか分析
* 含まれていればhitディレクトリに移動、そうでなければtrashディレクトリに移動

ロジックの流れができればいいのでステップごとに処理をしていきますが、それぞれを関数にして「人」の画像が1万枚集まるまで実行、などの設定も簡単にできます。

また、Amazon Rekognitionの指定ラベルを変えることで、犬、猫の画像だけを大量に集めるということも可能です。

[ruby]
require 'twitter'
require 'open-uri'
require 'aws-sdk'

MAX_IMG_FETCH = 200
TEMP_DIR = "./imgs"

client = Twitter::Streaming::Client.new do |config|
config.consumer_key = "CONSUMER_KEY"
config.consumer_secret = "CONSUMER_SECRET"
config.access_token = "ACCESS_TOKE"
config.access_token_secret = "ACCESS_TOKEN_SECRET"
end

imgs = []

# 指定枚数の画像をTweetから集める
client.sample do |object|
imgs.concat object.media.flat_map { |m|
case m
when Twitter::Media::AnimatedGif
[]
when Twitter::Media::Photo
m.media_url.to_s
else
[]
end
} if object.is_a?(Twitter::Tweet)

break if imgs.size > MAX_IMG_FETCH
end

# 画像を保存
imgs.each do |url|
path = "#{TEMP_DIR}/#{File.basename(url)}"
begin
timeout(2) {
begin
File.open(path, 'w') do |f|
f.write open(url).read
end
rescue => exception
end
}
rescue TimeoutError
end
end

# Amazon Rekognition
rekognition = Aws::Rekognition::Client.new(region: 'us-west-2')

Dir.glob("#{TEMP_DIR}/*.jpg").each do |f|
begin
response_detect_labels = rekognition.detect_labels(
image: { bytes: File.read(f) },
max_labels: 10,
min_confidence: 90
)
t = false
response_detect_labels.labels.each do |label|
case label.name
when "People", "Person", "Human"
t = true
end
end
t ? File.rename(f,"#{TEMP_DIR}/hit/#{File.basename(f)}") : File.rename(f,"#{TEMP_DIR}/trash/#{File.basename(f)}")
rescue
end
end
[/ruby]

実行結果

今回は500枚の画像を分類しましたが、ほぼ正しく「人」が写っている画像だけを分類できています。

もちろん、trashディレクトリには、「人」ではない画像が捨てられています。

Twitterのストリーミングは時間帯によっても情報が変わるので、回し続けてどういう結果が得られるのか見てみるのも面白そうです。

まとめ

Amazon Rekognitionの具体的なアプリケーションで見るユースケースの例をご紹介いたしました。

AWS技術知見
AI aws 人工知能 画像認識

関連記事

  • aws-route53
    AWS機能を網羅してみよう3.3 Route53編「実践」DNSフェイルオーバー
  • AWSのクラウドセキュリティ「責任共有モデル」とは?
  • ansible
    AWSのためのAnsible入門
  • aws-s3
    Amazon S3でGlacierを活用したコスト削減法
  • aws-route53
    AWS機能を網羅してみよう3.2 Route53編「実践」
  • aws-s3
    Amazon S3で署名付きURLを使ったアクセス制御
  • aws-route53
    AWS機能を網羅してみよう3.1 Route53編「概要」
  • aws-waf
    AWS WAFでSQLインジェクションと特定URLをブロック
検索
clouddx003-low.pdf - 1.8MB
資料ダウンロードはこちら
人気記事
  • terraform
    Terraformと変数(variable)のお話
    Terraform
  • aws-s3
    Amazon S3で署名付きURLを使ったアクセス制御
    AWS技術知見
  • AWS導入支援
    amazonクラウド、AWSとは?何ができるかデメリット含めわかりやすく説明
    AWS導入支援
  • WordPress高速化!6つの簡単な方法で重さを改善
    WordPress
  • ansible
    AWSのためのAnsible入門
    AWS技術知見
  • WordPress脆弱性の原因とやっておくべき7つの対策
    WordPress
  • 【実例20選】AWS導入企業、活用事例をご紹介
    AWS導入支援
新着記事
  • AWS運用代行企業5選!企業選びのポイントを解説
    AWS運用代行
  • AWS運用代行のサービス内容やメリットについて
    AWS運用代行
  • 10分でスタート!AWSの利用開始までを解説
    AWS導入支援
  • WordPress脆弱性の原因とやっておくべき7つの対策
    WordPress
  • WordPress高速化!6つの簡単な方法で重さを改善
    WordPress
カテゴリー
  • AWS導入支援
  • AWS技術知見
    • Rancher
    • Terraform
  • AWS運用代行
  • WordPress
タグ一覧
AI (3) aws (25) aws-cli (3) CloudFormation (1) CloudSearch (3) DeepLearning (1) DNS (2) Docker (4) EBS最適化オプション (1) ec2 (7) ElasticBeanstalk (1) Geo Routing (1) Gitlab (1) HA (1) infrastructure-as-code (1) keypair (1) load-balancer (1) nginx (2) OpenAM (3) Rancher (8) Rekognition (2) Route53 (3) s3 (2) secrets (1) security-group (1) Terraform (6) terragrunt (2) tfvars (1) variable (1) vault (1) VPC (1) wordpress (3) アプリケーション (1) オンプレミス (2) クラウド (2) サインアップ (1) シングルサインオン (3) セキュリティ (1) セキュリティグループ (1) ネットワーク設計 (1) 人工知能 (2) 初心者 (1) 本番運用 (1) 画像認識 (3) 起動 (1)
アーカイブ
  • 2022年9月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2017年7月
  • 2017年6月
AWSエンジニア積極採用!
採用情報
フリーランスの求人情報!
テックブレイン

スーパーソフトウエアはAWSパートナーネットワーク(APN)のコンサルティングパートナーです。

スーパーソフトウエアはRancherパートナーネットワークのコンサルティングパートナーです。

logo

カプセルクラウドはAWSクラウドのマネージドサービスです。AWSを安心かつ迅速に導入し、負荷分散・セキュリティ・DevOps・コスト削減など、クラウドサービスのメリットを活かした豊富なベストプラクティスをご提供いたします。

Contents

  • サービス
  • 導入支援
  • WordPress
  • 導入事例
  • ブログ
  • Q&A
  • お問い合せ
  • 資料ダウンロード

お問い合わせ

株式会社スーパーソフトウエア
東京 03-6721-7105
大阪 06-4707-6001
info-capsulecloud@tokyo.supersoftware.co.jp

  • プライバシーポリシー
  • 免責事項
  • 契約約款
  • 特商法に基づく表記
  • 会社情報
  • サイトマップ

© Supersoftware 2017. All rights reserved.

目次