サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
マンガ大賞候補作は
kivantium.hateblo.jp
響け!ユーフォニアムに登場するキャラクターの誕生日(1/7)に合わせてイラストを描きました。 描いたイラスト 描いている途中で創作+機械学習Advent Calendarで紹介されていた添削サービスの存在を思い出したので、ついでに添削をお願いしてみました。以下その記録です。 メイキング 響け! ユーフォニアムの作中に川沿いのベンチがたびたび登場します。このベンチは宇治川の河川敷に設置されている実在のベンチをモデルにしていて、ファンの間では久美子ベンチとして親しまれています。私も実際に見に行ったことがあります。 ユーフォでよく出てくるベンチ pic.twitter.com/xYkx79N3ud— きばん卿 (@kivantium) 2018年10月7日 奏がこのベンチに座るシーンはアニメでは描写されていないと記憶しているので、その様子を描いてみようと思いました。 自分に画力が足りないことは分
先日書いたOpenCVでアニメ顔検出をやってみた - kivantium活動日記の続編です。アニメ顔を検出するところまではうまくいったので、今度はキャラの分類をやってみようと思います。環境はUbuntu 14.10です。 ひと目で、尋常でない検出器だと見抜いたよ まずは分類に使う学習用データを用意します。投稿から半年以上経つのにまだランキング上位に残っている驚異の動画ご注文はうさぎですか? 第1羽「ひと目で、尋常でないもふもふだと見抜いたよ」 アニメ/動画 - ニコニコ動画を使います。 動画のダウンロード Ubuntuならaptで入れられるnicovideo-dlというツールを使います。 sudo apt-get install nicovideo-dl nicovideo-dl www.nicovideo.jp/watch/1397552685その後avidemuxでOP部分だけの動画を
ついにガロアが死んだ年齢を超えてしまったことに気がつき、自分がまだ何も成し遂げていないことを悲しく思う今日このごろです。 さて、今日はGoogleが出した機械学習ライブラリのTensorFlowの使い方について軽く説明しつつ、ゆるゆりの制作会社の識別を行おうと思います。 TensorFlowとは TensorFlowはGoogleが11/9に公開したApache 2.0ライセンスで使える機械学習ライブラリです。Googleは様々なところでプロダクトに機械学習を活用していますが、TensorFlowは実際にGoogle内部の研究で使われているそうです(TensorFlow: Google 最新の機械学習ライブラリをオープンソース公開 - Google Developer Japan Blog)。 Googleのネームバリューは恐ろしいもので、GitHubのStar数はすでにChainerやC
TVアニメCharlotteのヒロイン友利奈緒がTwitter上で異常に増殖する怪現象が起こっています。 友利奈緒検出器、川奈プロが3秒で実装しそうなやつだ— Ararik (@fimbul11) September 2, 2015 と煽られたので実装しました。(3秒ではできませんでした) 遊び方 @mitra_sun22に画像つきのリプライを飛ばせば顔と判定した部分に白枠をつけた画像と判定結果を返信します。簡単ですね! ちなみに友利奈緒と判定された画像は筆者(@kivantium)のTwitterアイコンに設定されるようになっています。 要素技術 Twitterで煽られたので、Twitterで送られた画像から顔を検出してその顔が友利奈緒かどうか判断してリプライするという仕様にしました。 ほとんど過去の記事からコピペしただけでできました。 Twitterからの画像を処理する部分: Twit
先日Deep Learningでラブライブ!キャラを識別するという記事が話題になっていました。この記事で紹介されている SIG2D 2014を知り合いから貸してもらったので参考にしながら、ご注文は機械学習ですか?のDeep Learning版を作ってみました。 Caffeなど必要なソフトのインストール Ubuntu 14.04の場合は過去記事を参照してください。これ以外にもpython-opencvなどを使いますが、依存関係の全ては把握できていないのでエラーが出たら適宜インストールしてください。 データの準備 Deep Learningでは大量の学習データが必要になると言われているので、まずは大量のデータを用意します。参考記事では6000枚のラブライブ画像を使ったということなので対抗して12000枚以上のごちうさ画像を用意したいと思います。それだけのデータを手動で分類するとそれだけで時間が
前回の記事で友利奈緒判定botを作ったのを紹介したところ、いろんな人から試してもらうことができました。集計したところ正解率としては90%程度を出していました。 この前集計した時の混同行列はこんな感じでした。最近投稿数が増えすぎて集計したくないです……。 しかし、第4世代のネットワークになっても「さすがにこれはないだろう」というような間違いを続けています。 .@dolicas_ 友利奈緒です(72%) pic.twitter.com/U9l93GVgIS— まほろ(稼働中) (@mitra_sun22) 2015, 9月 5 .@DEGwer3456 友利奈緒です(99%) pic.twitter.com/8Yum498g4E— まほろ(稼働中) (@mitra_sun22) September 6, 2015 Deep Learningは性能がいいということで最近もてはやされていますが、こ
僕の人生の目標の一つは人類が労働しないで済む世の中を実現することになのですが、現在の世界は残念ながら労働しないと金が入らない仕組みになっているようです。金がないと何をやるにも困るのでなんとかして働かずに金を手にいれたいと思います。労せずに金を得る手段として有力なものの一つが投資です。機械学習で投資対象の予測を行って儲けることができれば、人工知能が人類(僕)を労働から解放したと言ってもよいでしょう! というわけで機械学習で市場の予測を行いたいと思います。 投資対象の選定 投資をやると決めたからには儲かりそうなものに投資する必要があります。主な投資対象としては株式などの債権、FXなどの外国為替、国債、不動産などがありますが、短期間で価格変動があり、かつ有り金を全部溶かさない程度のリスクで収まる対象として、とりあえず株式を選択しました。 株式といってもいろいろな銘柄があるわけですが、会社ごとに投
強化学習と呼ばれる機械学習の一分野があります。機械学習というと、入力に対して正解の出力を当てる教師あり学習が話題になることが多いですが、強化学習では明示的に正解が与えられません。ある行動を試してみて、それに対して得られる「報酬」から自分でどのような行動が良い結果をもたらすのかを判断して、より良い行動を学習するアルゴリズムになっています。 強化学習にはチェスやリバーシなどといったボードゲームのAIやロボットの行動学習などの応用例があります。この前話題になったDeep Q Network、通称DQNも強化学習の一種です。応用例が面白いにも関わらず、PRMLなどの主要な機械学習の教科書では強化学習を扱わないことが多いので、いま強化学習だけの参考書を買って勉強しています。 強化学習 作者: Richard S.Sutton,Andrew G.Barto,三上貞芳,皆川雅章出版社/メーカー: 森北出
ライブラリの開発をするときに、現在のバージョンと開発中のバージョンの性能比較をすることがあります。同じ名前のライブラリが1つの環境に複数存在すると面倒なことになるのでDockerを使って環境を分けることにしました。そのときに使ったコマンドについて記録します。 Dockerの仕組みやインストール方法については触れません。 Ubuntu 16.04のコンテナのダウンロード Ubuntu 16.04を使うには docker pull ubuntu:16.04 とします。 Dockerイメージの実行 Dockerイメージを入手したら docker run -it ubuntu:16.04 /bin/bash を実行するとコンテナ上でシェルが実行されます。オプションの意味は以下の通りです。 -i: 標準入力を開いたままにする -t: 擬似ttyに接続する。 コンテナの実行中にCtrl+PとCtrl+
Deep Learningによる画像認識を可能にする最も簡単なWebプラットフォーム「Labellio」のリリースのお知らせという記事を見かけたので試してみました。 公式のチュートリアルに従えば簡単にDeep Learningを使った画像認識を試すことが出来ました。 まずはLabellioにアクセスします。 サインインをクリック。 アカウントはGitHubまたはGoogleアカウントと紐づけするようです。 ログインするとモデル作成画面に飛ぶのでCreate Modelをクリック。(kinmosaは過去に私が作成したモデルです) モデル名を入力してAdd dataをクリック。 今回はご注文は機械学習ですか?で使ったデータセットをzip形式で送る方法を使いました。 このようにラベル名のついたフォルダにそのキャラの顔画像を入れます。フォルダ直下に入れたファイルはフォルダ名のラベルが付くようです。
機械学習の手法にはいろいろありますが、その中でもサポートベクトルマシン(SVM; support vector machine)は高い精度で知られる有名な手法です。 以前C++で多層パーセプトロンを実装したので、今度はSVMをC++で実装してみました。kivantium.hateblo.jp SVMの解説 実装する前にSVMの原理を説明します。PRML下巻7章を参考にしました。 パターン認識と機械学習 下 (ベイズ理論による統計的予測) 作者: C.M.ビショップ,元田浩,栗田多喜夫,樋口知之,松本裕治,村田昇出版社/メーカー: 丸善出版発売日: 2012/02/29メディア: 単行本購入: 6人 クリック: 14回この商品を含むブログを見る SVMは2値分類に使われる手法で、入力に対してある関数を計算してその値の符号によってクラス分類をします。 入力(ベクトルですが、うまく表記出来ないの
このブログで何回も取り上げているように、ニューラルネットワークを用いた機械学習はかなりの力を発揮します。畳み込みニューラルネットワーク(convolutional neural network, CNN)は画像中で近くにあるピクセル同士の関係に注目するなど画像の特徴をうまくとらえたネットワークを構築することでかなりの成功を収めています。ノーフリーランチ定理が示唆するように万能の機械学習器は存在しないため、対象とするデータの特徴を捉えた学習器を構築することが機械学習の精度を上げる上で重要になります。 そこで今回は時系列データの解析に向いた回帰結合ニューラルネットワーク(recurrent neural network, RNN)の精度を上げるのに重要なLSTMを取り上げます。 この記事では誤差逆伝搬などのニューラルネットワークの基本知識は説明しません。誤差逆伝搬についてはPRMLの5章やNe
先日、アルゴリズムの授業でソートのアルゴリズムをいくつか習いました。ソートアルゴリズムの名前と原理くらいは聞いたことがありましたが、実装したことはなかったのでいい機会だと思い実装してみることにしてみました。ただ実装するだけでは面白くないので高速化の限界に挑戦してみたいと思います。 計測用プログラム 今回の計測では、ランダム値が入った配列のソートを100回行い、平均時間を各アルゴリズムに競わせるというシンプルなルールにしました。プログラムは以下の通りです。 C++11で入ったメルセンヌ・ツイスタなどの機能を使っているので、ビルド時には-std=c++11を指定する必要があります。 実験に使用したパソコンのCPUはCore i3-3227U@1.90GHz、コンパイラはgcc version 4.8.4で最適化オプションには-O3を指定しました。 #include <iostream> #in
生物の実験でシャーレに生えた大腸菌のコロニーの数を数えるという作業をしたのですが、こんなものは人間の仕事ではないので自動化したいと思いました。 OpenCVのインストール OpenCV 3.0で入った関数を使いたいので記事を書いた時点で最新版のOpenCV 3.1をビルドしてインストールします。 環境はUbuntu 15.10で、基本的にInstallation in Linux — OpenCV 2.4.13.0 documentationに従います。 sudo apt-get install build-essential sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev wge
以前@berobero11さんに「StanとRでベイズ統計モデリング」をプレゼントしていただき、本を読んだのですが解析したいデータがなかったため勉強した結果を活かすことができずにいました。 しかし今日Twitterを見ていたら 長時間労働は,知的好奇心を枯らすのか。 pic.twitter.com/NcuaLAgzpy— 舞田敏彦 (@tmaita77) 2017年11月13日 労働時間と知的好奇心には,国レベルでは非常に強い負の相関があるが,個人レベルでは逆に正の相関がある https://t.co/N8Z00ljFfB— Haruhiko Okumura (@h_okumura) 2017年11月15日 というまさに階層ベイズモデルを用いた解析にぴったりのテーマが流れてきたのでStanの練習として解析を行ってみました。 モデリング まずは奥村先生のPIAACデータ解析を読んでください。
OpenCVのオブジェクト検出器作成方法についての解説です。 学習データの作成 まず最初にオブジェクト検出器の学習に使う教師データを用意する必要があります。そのためにまずGUIでオブジェクトの位置を指定するGUIツールを作りました。 PythonのOpenCVを使います。 #!/usr/bin/env python #! -*- coding: utf-8 -*- import cv2 import numpy as np import sys drawing = False sx, sy = 0, 0 gx, gy = 0, 0 rectangles = [] ok = False def draw_circle(event,x,y,flags,param): global sx, sy, gx, gy, drawing if event == cv2.EVENT_LBUTTONDOWN
C/C++でプログラムを書いているときに遭遇する厄介なバグの一つがメモリリークです。 今回はメモリリークを検出するのに使えるツールの使い方について書きます。 AddressSanitizer コンパイルオプションをつけるだけで使えて出力も見やすいのでおすすめです。 AddressSanitizerはGCC 4.8以降かLLVM 3.1以降で使うことができます。 コンパイル時にオプションをつけるだけでメモリリークを検出してくれます。(若干実行時間が長くなります) 以下のメモリリークのあるプログラム leak.cpp を例に使い方を説明します。 int main() { int *a = new int[10]; } newで作った動的配列をdeleteしていないのでメモリリークになります。 g++ -fsanitize=address -fno-omit-frame-pointer -g l
[O] MeCab 用の新語辞書 mecab-ipadic-neologd を公開しましたという記事が話題になっていたのでmecab-ipadic-neologdを試してみました。 インストール READMEを見れば分かりますが一応メモ sudo apt-get install mecab libmecab-dev mecab-ipadic-utf8 git make curl xz-utils git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git cd mecab-ipadic-neologd ./bin/install-mecab-ipadic-neologdでインストールできます。 インストール先は echo `mecab-config --dicdir`"/mecab-ipadic-neolo
※この記事は技術的な内容をほとんど含まない、いわゆるポエムです たくさんの人が友利奈緒判定botにいろんな画像を投げてくれていますが、その中でも特に考えさせられたのが次に挙げた4つの画像です。 友利奈緒の胸のみをアップした画像 .@nick_debu_p 友利奈緒です(99%) pic.twitter.com/J3X86MaR5T— まほろ(稼働中) (@mitra_sun22) 2015, 9月 5 友利奈緒という文字の画像 .@qualia_key 友利奈緒ではありません(99%) pic.twitter.com/hT4JlDZhQu— まほろ(稼働中) (@mitra_sun22) 2015, 9月 5 佐倉綾音さん(友利奈緒の声優)の画像 .@OOOotchi 友利奈緒ではありません(99%) pic.twitter.com/lPfsvXGseI— まほろ(稼働中) (@mitra
コンピュータ上で実数を表現する際には浮動小数点数を使うのですが、浮動小数点数の計算では誤差が発生します。 簡単な例を見てみます。 #include <cstdio> int main(void) { float a = 0.0; for(int i=0; i<10000; ++i) a += 0.01; printf("%.10f\n", a); } という0.01を10000回足すプログラムを実行すると結果は100.0029525757となり、期待される100.000000000に比べて0.003ほどの誤差が発生しています。 浮動小数点数計算での誤差を抑える一番簡単な方法はfloatではなくdoubleなどのより精度の高い型を使って計算精度を上げることですが、どうしても限界はあります。 他にも問題ごとにテクニックは存在しますが、誤差を完全に無くすことはできません。 正確な計算のためには誤
はじめに 今までいろんな画像処理のプログラムを書いてきましたが、その多くで物体検出のアルゴリズムを使っています。 ご注文は機械学習ですか?・結城友奈はサンタであるなどの記事ではOpenCVでアニメ顔検出をやってみたで紹介したlbpcascade_animefaceを使いました。これは2001年のViolaとJonesの論文で提案された方法に1994年(くらい)に提案されたLBP特徴量を組み合わせた、2008年の論文の方法を応用したもの(多分)です。 友利奈緒判定botではdlibによるHOG特徴を用いた物体検出がすごいで紹介したHOG特徴量とSVMを組み合わせた方法を使っています。これは2005年の人検出に関する論文の方法を使ったものです。 どのプログラムでも物体検出した後の判定精度はそれなりに高いのに、物体検出の精度の低さが全体の完成度を下げている感じになってしまっていました。2005年
はじめに 世界最大のBitcoin取引所(であった)Mt.Goxの破綻が大きなニュースになっていますが、ニュースを見る限りマスコミ側もBitcoinをよく理解しないまま報じているような印象を受けました。「採掘ができるらしい」「管理する中央機関がないから危ないらしい」などの断片的なことは知っていても、ビットコインが実際にどういった仕組みで動いているのかについて理解している人は少ないのではないでしょうか。そこで、以前私が調べて理解したことをまとめてみることにしました。(なおあくまで「私が理解したこと」なので、誤った情報が含まれているかもしれません。誤りに気がついた方はコメントしてください) Bitcoinに関する情報源 この文章を書くにあたって参考にしたページを挙げておきます。正確に理解したい方は原典に当たることをオススメします。 Nakamoto Satoshi Paper Bitcoinの
Deep Learningの関係で自動微分が脚光を浴びつつあるような気がしますが、自動微分を解説したページは少なくまだまだマイナーな分野だと思います。先日ようやく「アルゴリズムの自動微分と応用」を一通り眺めたのでいろいろ実験して遊んでいます。今日は自動微分のうち、ボトムアップ型自動微分をオペレータオーバーロードを用いて実現する方法について書きます。 自動微分とは 自動微分は、アルゴリズムによって定義された関数からその関数の偏導関数値を計算するアルゴリズムを導出するための技術です。一般的にはのような関数が先にあって、その関数を計算するアルゴリズムやプログラムがあるというように考えますが、自動微分ではどちらかというとアルゴリズムが先にあってアルゴリズムが表現する関数が生まれるというような考え方をします。 プログラムで微分を扱う上でよく知られている技術には数値微分と数式微分があります。 数値微分
一、前書きはきちんと 2014年も終わりに近づき冬シーズンのアニメも佳境を迎えるなか、いよいよクリスマスがやってきます。絶望的な戦いに臨む讃州中学勇者部のみなさんにもクリスマス気分を味わってもらいたいですね。というわけで、勇者部のみなさんにサンタ帽をかぶってもらおうと思います。 一、なるべく手動にしない サンタ帽を写真にかぶせるだけならGIMPなりPhotoshopなりを使えば簡単にできるわけですが、21世紀を生きる人間がいつまでも手動に頼るわけにはいきません。なるべく自動化したいものです。幸いなことにアニメ顔の顔認識は簡単にできるので自動でサンタ帽をかぶらせてあげるプログラムを書くことができそうです。ではやってみましょう 一、よくググって、よく見つける サンタ帽のフリー素材はいくつかあったので、サンタクロースの帽子の無料イラストから使います。帽子をかぶらせる素材は顔がすべて認識できるとい
ミレニアム問題と呼ばれる数学の7つの難問がある。各分野で重要かつ難しい問題が選ばれており、解決するとクレイ研究所から100万ドルの賞金を得ることができるということで有名だ。そのうちの1つポアンカレ予想は解決済みだが、残りの6つは未解決である。その中でもコンピュータ科学で非常に重要な問題が「P≠NP予想」である P≠NP予想とは コンピュータで問題を解決するときには一定の手続き(アルゴリズム)に従って問題を処理することになる。例えば数の集合の中からある特定の数字を見つけるという問題を考える。一番単純な解決方法は集合の要素を1つずつ調べていって値が求めたい数字になっているかどうかチェックすることだろう。この場合、集合がN個の数字からなるとすればおおよそNに比例する時間で求めたい数字の検索が終わることが予想できる。このようにだいたいNに比例する時間で終わるようなアルゴリズムについて、計算時間のオ
この記事はDeep Learning Advent Calendar 2015の1日目です。 早いもので2015年も最後の月になってしまいました。2015年は「ディープラーニング」という単語が(残念ながらバズワードとして)それなりに広まった一年だったと思います。Deep Learning Advent Calendarがそんな2015年の締めくくりにふさわしいものになりますように。 この記事ではDeep Learningの一種である深層ボルツマンマシン(DBM)の基礎となる制限ボルツマンマシン(RBM)について理論から説明していき、C++による実装を示します。実装を行う関係上どうしても数式を多用しますがなるべく式変形を丁寧に示すつもりです。数式は基本的に 深層学習: Deep Learning 作者: 麻生英樹,安田宗樹,前田新一,岡野原大輔,岡谷貴之,久保陽太郎,ボレガラダヌシカ,人工知
去年の8月に、国立情報学研究所(NII)が顔認識ができなくなるメガネを開発したという記事が話題になりました。 nlab.itmedia.co.jp それに対して Haar-like, LBP特徴による方法が前提っぽいから、HOG特徴量で輪郭取るこの前の方法なら勝てそう— 川奈 清 (@kivantium) 2015年8月6日 とコメントしたところミクミンPさんから@kivantium ポチったので届いたらハッカソンでもやりましょうか— ミクミンP/Kazuhiro Sasao (@ksasao) 2015年8月6日 という反応があり、今日実際にハッカソンが行われました。 connpass.com 「顔認識を失敗させる技術を失敗させるハッカソン」は、最初に7人の参加者でプライバシーバイザーをつけた場合とつけなかった場合の顔動画を撮影して共有し、あとは各自で黙って作業するという形で行われました
ディープラーニングを使ったイメージの切り抜きで紹介されていたselective searchをやってみました。 selective searchは画像中の似たような領域を一つの物体として認識して、物体の候補を提案するアルゴリズムです。 良さそうなスライドを見つけたので紹介しておきます。 KantoCV/Selective Search for Object Recoginition from belltailjp www.slideshare.net Selective SearchのPython実装にはdlibの他にも belltailjp/selective_search_py · GitHub AlpacaDB/selectivesearch · GitHub があるようです。これ以外にもあったら教えて欲しいです。 dlibのインストール 記事ではMatlab実装を使っていましたが、
この記事はkivantium Advent Calendarの2日目です。 昨日はトランジスタを使ってNANDゲートを作る方法を解説しました。 今日はNANDゲートを使っていろんなゲートを作っていきます。 基本的なゲート ゲートにはNANDゲートの他にも何種類もあります。 よく使う有名なゲートには記号があります。NANDゲートの記号は です。 NANDの真理値表を再掲します。 A B Q 0 0 1 0 1 1 1 0 1 1 1 0 NOTゲート NOTゲートは入力が1つ、出力が1つで、入力と出力の値が逆になるようなゲートです。NOTゲートの記号は です。 真理値表は、 A Q 0 1 1 0 です。 NOTゲートはNANDゲートを のようにつなぐと作ることができます。 ANDゲート ANDゲートは入力が2つ、出力が1つで、2本の入力が両方とも1のときだけ1を出力するようなゲートです。A
次のページ
このページを最初にブックマークしてみませんか?
『kivantium活動日記』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く