見出し画像

新人配属3ヶ月、今こんなことやってます!【サムネイル画像の自動生成にTRY!】

今回のテックブログは、入社1年目メンバーによる「配属3ヶ月でやったこと」エントリです。新人研修を終え、ドキドキワクワクしながらメディア研究開発センター(M研)に配属された嘉田さんの、3ヶ月の歩みをご覧ください!

はじめに

みなさんはじめまして。メディア研究開発センターに所属する1年目の嘉田と申します。

今回は「新人配属3ヶ月、今こんなことやってます!」ということで、M研に配属された新人が実際に取り組んだ業務についてご紹介したいと思います!
なお本エントリは新卒・就活生の皆さんに、入社後をイメージしてもらえたらいいなと思って書いています。技術的な部分の深堀りは多くありませんのでご容赦ください...。

自己紹介を少し...

はじめに私の身の上についてお話したいと思います。
ご縁があり今年の4月に技術者として朝日新聞社に新卒入社しました。
理系学部卒ですが、大学では物性化学系の研究をしてまいりまして、情報技術系のことにはほとんど触れていませんでした

そのため、研修では日々学びの連続...。
優しい研修チームのみなさんに基礎からがっちり固めていただき、同期と一緒にワイワイ開発に取り組んだりと、非常に充実した研修生活でした。

研修については現在2年目の倉井さんが丁寧に説明してくださっているので、よければそちらをご参照ください!第3回まであります(^o^)

なんとか研修を乗り切り、同期に涙の別れを告げながら、8月末にM研に配属されました。
早いことでもう3ヶ月...。

開発用にM1 Mac(しかも1TB...すごい!)を頂いて、ドキドキワクワクで業務を始めることとなりました。
とはいっても当方は
「M-1?毎年欠かさず見ています!」
「pythonはギリギリ...ちょっとだけ...わかります...」(研修は主にPHPでした)
状態のひよっこエンジニア。
ポンコツ街道まっしぐらでは?という不安も抱えながらのスタートでしたが、優しくて頼りになる先輩方に囲まれて元気にやっています!
(配属当初に環境構築やpython研修をしていただいたり、本当に手厚いサポートが待っておりますのでご安心ください!)

取り組んだ業務について

本題となります。
私がこれまで主に取り組んできた業務は、サムネイル画像の自動生成です。

サムネイル画像といえばYoutubeなどでよく聞くかと思いますが、このような縮小画像のことです(弊社のYouTubeアカウントです)。

ちなみにサムネイルとは「親指(thumb)の爪(nail)のように小さく簡潔である」という意味から来ているようですφ(..)

動画をインプットした時に、機械学習を用いて自動でいい感じのサムネイルを生成するような機能の開発に取り組んでいました。

このサムネイル生成機能は、社内向け文字起こしサービスであるYOLOというシステムに新機能として組み込みたい!ということで、新人一発目のタスクとして取り組むことになりました。

YOLOとは有名な物体検出モデルのことではなくYou Only upLoad Own-fileの略であり、「どんなファイルでもアップロードしたらあとはうまく処理しておきます」という理想を掲げたサービスです。
具体的には
・音声や動画ファイルの文字起こし
・動画への字幕自動生成
・OCR(画像から文字を抽出して文字データに変換する機能)
などの機能を備えており、主に記者さんの取材音源の文字起こしツールとして活躍しています。(現在は社内向けサービスとして稼働中です)

今回はこの程度の説明に留めさせていただきますが、今後のテックブログでYOLOについてのエントリがある予定...とのことなので、乞うご期待ください!

YOLOの検索結果画面にサムネイルを表示させることで、ユーザーがより情報を探しやすいようにしたい!というのが開発背景となります。

またまたちなみに...
自己紹介の通り、当方は機械学習などには触れてこなかった人間であり、最初は不安いっぱいでした。
しかし、優しくて頼りになる先輩方(再掲)のおかげで初学者の私でも業務に携わることができていますので、情報系でも機械学習はナンノコッチャという学生さん、もっと基礎からナンノコッチャという非情報系の学生さんも、皆さん安心して入社してもらえるといいな〜と思います!
一緒に勉強しましょう〜!

どうやってサムネイルを生成する?

前提として、今回生成するサムネイルは動画内からより良い画像を選び出し、加工したものになります。1分の動画で1800枚、2分の動画で3600枚...と、それだけたくさんの画像の中からサムネイルに適した画像を抽出してきます。

先行研究も少なく、ああでもない、こうでもない、これはいけたかも!と思いきや、残念ながらお蔵入り...
という感じで様々なトライアンドエラーを重ねてきました。
おかげさまでお蔵がパンパンです。
断捨離としてここで一つ、ボツアプローチの紹介をさせてください...(^o^)

PV予測モデルを使ったアプローチ

PV(ページビュー)を稼げる画像≒良い画像だ!という仮説のもと、PV予測値が高くなる画像をサムネイルの候補画像として抽出できないかトライしました。
弊社には大量の朝デジ記事データ(本文はもちろん、記事に紐づく画像・PV情報など)があります。そのデータを使ってPVを予測するモデルを構築し、PV予測値が高くなる画像をサムネイルの候補画像として抽出しよう!とやってみました。

ここでは朝デジの記事の見出し・画像・PV値を学習させ、見出し・画像をインプットした時にPV数を予測するような機械学習モデルを構築しました。
動画に適用すると、
見出し→動画の見出し(タイトル)
画像→切り出したフレーム
となり、動画の全画像について、1枚1枚のPV予測値が得られるわけです!

モデル構築についてもう少しだけご紹介しますが、ナンノコッチャ!という学生さんはしれっと読み飛ばしてください。

今回はLightGBMという勾配ブースティングの機械学習フレームワークを使いました。マイクロソフト社が開発したらしいですね。
LightGBMはKaggle(世界最大の機械学習コンペティションプラットフォーム)でもよく使われる人気の手法です。概要は以下などをご参照ください。

加えて実験管理はMLflow、ハイパーパラメータ探索はOptunaにエイヤッとお任せしています。

MLflowとは??

MLflow is an open source platform to manage the ML lifecycle, including experimentation, reproducibility, deployment, and a central model registry. MLflow currently offers four components

公式のTOPから引用です。ふむ。
簡単に言うと機械学習のライフサイクルの管理を楽にしてくれる、そういうものです!
このように実験の記録を残してくれます。ありがたや...。

Optunaとは??

続きましてOptunaです。こちらも公式サイトから。

An open source hyperparameter optimization framework to automate hyperparameter search

ふむふむ。
つまりは良い感じのハイパーパラメータを見つけてくれる、そんな感じですね!
※ハイパーパラメータとは機械学習アルゴリズムの挙動を制御するパラメータのこと
これがないとハイパーパラメータを地道にチューニングすることになるわけです...。ありがたや...。

「Optunaがないとき〜😫」

出典:PFNエンジニアの講演資料|SlideShare

「Optunaがあるとき〜😆」(関西ローカルですかね〜)

出典:PFNエンジニアの講演資料|SlideShare


なお、モデルの精度は決定係数R^2で評価をしています。R^2は1に近いほど予測の精度が高いことを表します。
今回のモデルはtestデータ(評価用のデータ)R^2 = 0.814と、PV予測自体の精度はいい感じです!

さて結果...

(詳しくは割愛しますが)各画像をPV予測値で評価することで、こんなサムネイル候補画像達が得られました。
保護猫に関する動画です。弊社のYouTube動画を使っています。

と、その前に、実際につけられているサムネイルはこんな画像です。
かわいい猫ちゃんですね〜

そして今回のモデルによるサムネイル候補画像がこちら。

も゛っ゛と゛最゛高゛の゛猫゛シ゛ョ゛ッ゛ト゛出゛し゛て゛く゛れ゛よ゛

思わず藤原竜也になってしまいました。

他にも様々な動画で検証しましたが、サムネイル候補としてもっとコンテンツを代表するような画像が得られたら...という結果でした。
原因としては、今回の生成フローでは動画で伝えたい意図を考慮できていないということが考えられます。動画の内容を考慮できるようなモデルを構築できるといいのかもしれません...。

ということで(私に)惜しまれながらも、このアプローチはお蔵入りとなりました。突然のボツアプローチ紹介についてきてくださったみなさんには心からお礼申し上げます。

このようにうまくいかないことも多かったですが、ようやく成功の兆しが...!?
ゆくゆくは良い結果をお伝えできるかもしれません。乞うご期待です!
今回はこの辺りでご勘弁をm(__)m

終わりに

ここまで私が配属後実際に取り組んできたことについて、少しではありますが紹介させていただきました。

Q. サムネイル生成、大変だったことは?
A. 全部...

というのは大袈裟ですが、データ収集に泣き、モデルの精度に一喜一憂したりと、非常に濃密な時間でした。機械学習の醍醐味を味わったとも言えますね。
いやほんとに...楽しかったです!
もっと勉強していろんなことをしてみたいと思うようになりました。

とにもかくにも、配属3ヶ月とは思えないほどたくさんの経験を積ませていただきました。まだまだひよっこには変わりありませんが、トライアンドエラーを繰り返しながらこれからも頑張っていきます!

それではまた別のエントリでお会いできればと思います〜!

(メディア研究開発センター・嘉田紗世)