普段は会社員でWeb系の開発エンジニアとして働き、週末に趣味で個人開発をしています。昨年末に、画像・動画の解像度をあげてくれる「waifu2x-multi」というサービスを開発しました。2018年8月26日この後に開発することになるAIメーカーはこの「waifu2x-multi」の開発を通して学んだことを活かして作っています。」だと思っているので、AIメーカーを1か月ほどでリリースできたのはこの開発をしてたところが大きいです。この記事では、この「waifu2x-multi」で使っている技術をまとめたいと思います。作ったものwaifu2xというサービス/OSS(オープンソースソフトウェア)はご存知でしょうか?簡単にいえば、AI(人工知能)を使って小さな画像を綺麗に拡大するサービスです。公式のwaifu2xは以下のURLでサービス提供されています。waifu2x.udp.jpまた、GitHubでプログラムもオープンソースで公開されています。github.com私が作ったものは、「waifu2x」のOSS(オープンソースソフトウェア)へ以下の機能を追加した、公式とは別の派生サービスになります。専有サーバによる高速な拡大処理サイズ制限の緩和こちらは以下のURLで公開しています。2018年8月26日なぜ開発したか?・waifu2xの凄さに驚いた「waifu2x」は2015年5月17年に公開され、瞬く間に話題になりました。作者の方が以下のブログ記事にまとめていらっしゃいます。■二次元画像を拡大したいと思ったことはありませんか?http://ultraist.hatenablog.com/entry/2015/05/17/183436画像を綺麗に拡大する精度の凄さに驚きました。ディープラーニングが話題になり出した時期でもあり、私も興味を持ち、早速触ってみたのが開発のきっかけです!・複数画像へ対応すればもっと便利!「waifu2x」を触っているうちに、一つ一つの画像ごとにアップロードするのが大変と感じてました。そこで、複数画像の拡大に対応すれば、もっと便利に使えるのではと考えました!・技術的な興味で動画対応させてみたかった「waifu2x」を使って動画拡大する試みをやっている方がいて、自分も挑戦してみたいと考えました。各コマごとに分割された画像はすべてwaifu2xサーバで拡大処理すべてのコマ画像を拡大後、ffmpegを使って「変換後の各コマ画像」と「音声」を結合して動画を生成インスタンスの設定で起動数を指定できるようにしており、複数インスタンスを立ち上げた場合には、上記の画像の各コマの拡大は複数インスタンスで並行して処理されます。EC2でサーバを立てています。aws.amazon.comApacheフロントエンドのwebサーバはApacheを使っています。ProjectNginxバックエンドのwebサーバはNginxを使っています。RDSを使ってMySQLを立てています。EFSというネットワークファイルシステムを使っています。aws.amazon.comデータが残り続けるとヤバイことになるので、1か月を経過したらデータは削除するようにしています。PHPフロントサーバ側のプログラムはPHPを使って実装しました。Frameworkを使用しています。Preprocessorframework.zend.comLuaJITバックエンドサーバ側のプログラムはLuaJITを使って実装しました。僕もそんなに詳しくわけではなく、TorchがLuaJITで動くので、それで使っているだけです。ProjectTorch学技術計算の為の、機械学習ライブラリです。torch.chwaifu2xwaifu2xのプログラム、学習済みモデルはGitHub上でオープンソースで公開されています。github.comffmpeg動画と音声、画像の変換に使用しています。動画FFmpegjQueryクライアント側のJavaScriptは、jQueryを使って実装しました。jquery.comStripe有料版の課金の仕組みはStripeを使っています。JavaScirptとPHPの短いコードで導入できるので、簡単でした。stripe.comPaypal海外の人からクレジットカードが使えないからPaypalも使えるようにしてよ!とお問い合わせがあったので、Paypalからの課金にも対応しました。これも実装の手間はそんなになく、Stripeと同じくくらい簡単に導入できました。www.paypal.comまた、日本の方からはクレジットカードの情報を入れたくないので、Paypal対応してという声もありました。ちなみにStripeとPaypalの使用比率は半々ぐらいです。Paypalの使用率が高いのは海外の方が多いですね。最後に今回、waifu2x-multiで使っている技術についてご紹介しました。ちなみにAWSのインスタンスを起動から停止まで管理するプログラムを書いたのはこのときが初めてです。リリースする前のデバッグ時には、インスタンスの制御に失敗してインスタンスが起動しっぱなしになってしまったこともあり、開発には色々と苦労しました。そのときのノウハウがAIメーカーに活かされ、AIメーカーではインスタンスの管理に悩まされることはほとんどありませんでした。サービスを開発したときには、そのときに得られたノウハウ、ソースコードが自分の資産となります。サービスの開発スピードは、どれだけサービス作りの経験を積んできたかに尽きるかと思っています。自分の中でこうやれば作れるなというイメージができたら、こっちのもんです。最初はそのイメージが現実と乖離してリリースまで大変な目にあうこともあるかもしれませんが、やればやったほど、あ!これはあのときのこれを使えばいけるなぁ~!とかイメージがどんどん具体化していきます。それはソースコードの資産が貯まっているのもあいまって、指数関数的に開発スピードが速くなる可能性もあります。OSAKAに参加・登壇してきました11/3(土)に大阪のパナソニックスタジアム吹田で開催された「JAW...2018-10-14AIメーカーを短期間で開発できた理由(わけ)AIメーカーではこれまでに以下のような機能を作ってきました。はてなブログProAIメーカーなどのサービスを作っています。ここでは気になった技術、話題などをまとめたり、雑記を書いたりします。アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。