転移学習による食べ物の写真の「インスタ映え」予測

OVERVIEW

卒業研究で「いいね数」をもとに、新たに投稿する写真がどれほど「いいね」をもらえるのかを予測する機械学習モデルを構築しました。

YEAR 2019 - 2020

はじめに

Instagram の利用率の増加により、「インスタ映え」を気にして投稿する人も増加しています。そこで、Instagram に投稿されている画像とその画像についている「いいね数」を元に、新たに投稿する写真がどれほど「いいね」をもらえるのかを予測できればと考え「Instagram のいいね数予測モデル」を作成しました。

制作期間:5ヶ月(2019年9月〜2020年1月)

制作人数:2人


目的

近年、スマートフォンの普及によりインターネットや SNS の利用率が増加しています。中でもInstagramは2017年に「インスタ映え」が新語・流行語大賞に選ばれるなど、高い人気を博しています。それに伴い、一般アカウントだけでなく企業も「インスタ映え」を意識し始めています。そこで、ある写真がどれほど「インスタ映え」するのか判定できるシステムは多くのInstagramユーザーに有用ではないかと考えました。

※ この研究では、あるアカウントの平均「いいね」数よりも多くの「いいね」数を獲得することを「インスタ映え」していると定義しています。


開発環境/ライブラリ

  • Google Colaboratory

  • Python3

  • TensorFlow

  • Keras


データセット

使用した画像:Instagramに投稿されている食べ物の画像
以下の条件に沿い、100アカウントから50枚ずつ計5000枚収集しました。
※ 極端にいいね数が多い・少ない画像は外れ値として除外

<条件>
(1)芸能活動を行なっていないユーザーのアカウントであること

(2)フォロワー数が500人以上のアカウントであること

(3)データ収集時点で投稿から4週間以上経過している写真であること


モデル

Kerasで利用可能な画像分類モデルの1つであるXceptionを転移学習することでモデルを構築しました。モデルは学習データの異なる以下の3種類構築し、精度比較を行いました。

  • 「いいね数」をラベルとして学習させたモデル
  • いいね数 / フォロワー数 を計算した「いいね率」をラベルとして学習させたモデル
  • ( いいね数-いいね数の平均 ) / 標準偏差 を計算した「標準化した値」をラベルとして学習させたモデル

それぞれのモデルの構築において、エポック数やpatienceといった係数を変化させ、精度の向上を試みました。エポック数やpatienceは以下のように変化させました。

  • エポック数 50   :patience 10, 20, 30, 40
  • エポック数 100 :patience 40, 50
  • エポック数 1000 :patience 50, 60, 70, 80, 90, 100


評価

閾値による比較
画像とそれに対応する「いいね数」「いいね率」「標準化した値」をそれぞれ学習させた結果を以下の表に示しています。表は30個のテストデータのうち正解値 - 予測値の絶対値が指定した値よりも小さいものの数を示しており、最も精度の良かったものを黄色で塗りつぶしています。

  • いいね数

  • いいね率

  • 標準化した値

このままでは評価の基準が異なり比較ができないため、いいね率と標準化した値の予測値をいいね数に変換することにしました。それぞれの予測値をいいね数に変換し、解値 - 予測値の絶対値が 100 未満であるものの数を数えたところ、いいね率は15個、標準化した値は19個という結果になりました。

以上のことより、閾値による比較では標準化した値で学習したモデルが最も精度が高いことがわかりました。



誤差による比較
より正確な比較をするために、それぞれのモデルについて誤差を計算しました。評価基準の統一のため、すべての条件下でのいいね率と標準化した値の結果をいいね数に変換し計算しました。誤差の計算は、回帰モデルの最も一般的な性能評価指標である二乗平均平方根誤差(RMSE:Root Mean Squared Error, 以下 RMSE)を用いました。
各モデルのRMSEを以下の表に示します。最も誤差の小さいものは⻩色で塗りつぶしています。

  • いいね数

  • いいね率

  • 標準化した値

各モデルのRMSEの平均は

 いいね数  :590.7
 いいね率  :1538.8
 標準化した値:1329.5

となっています。

以上のことより、誤差による比較ではいいね数で学習したモデルが最も精度が高いということがわかりました。


考察
閾値による比較と誤差による比較では、最も精度の高いと思われるモデルが異なっていました。これは、いいね率や標準化した値をいいね数に変換する際、フォロワー数や標準偏差が大きいほど誤差が大きくなるためだと考えられます。また、RMSEは大きな誤差を厳しく評価する特徴があるため、いいね数の誤差が最も小さくなったと考えられます。


課題と展望

今回構築した機械学習モデルは、どのモデルも精度があまり向上しませんでした。その理由として、収集した画像にばらつきがあったこと、使用したモデルが適していなかったことが挙げられます。精度を向上させるためには収集する画像の条件を「弁当」や「ケーキ」のみなどと狭めること、Xception以外のモデルを転移学習することが必要だと考えられます。また、Instagramには食べ物の他に様々な写真も投稿されるため、食べ物以外の写真でもいいね数を予測できるよう拡張していきたいと考えています。