Python

TensorFlowで顔検出器を自作する

19日に行われた Kyoto.なんか #3 で発表・デモをさせていただいた内容まとめです。 はじめに: 検出器の重要性 アイドル顔識別 をずっとやっている中で、顔の識別・分類(Classification)はCNNを使って出来ているけれど まだ上手く出来ていない別のタスクがあ…

TensorFlowによるDeep Learningでのアイドル顔識別モデルの性能評価と実験 その2

以前に試した、アイドル顔識別の性能評価。 memo.sugyan.com それから半年以上も経ってデータ数も増えたし ちょっと確かめたいこともあったので、再び試してみた。 新データセット 前回は 40人×180件 で 計7,200件 を用意したけど、今回はもう少し多めにデー…

TensorFlow 0.12 のEmbedding Visualizationを動かす

=== 追記 2017.06 === 書いてから時間が経ち 情報が古くなってしまっていましたが、最近の変更に合わせた補足を含む記事を書いていただきました。ありがとうございます! fuchami.hatenadiary.jp === 追記ここまで === おぉぉ、TensorFlow 0.12のEmbedding V…

TensorFlowによるDCGANでアイドルの顔画像生成 その後の実験など

memo.sugyan.com の続編。 あれから色々な変更しつつ実験してみたりしたのでその記録。 結論を先に書くと、これくらい改善した。 DCGAN ざっくりおさらい Generator: 乱数の入力から画像を生成する Discriminator: 入力した画像がGeneratorが生成したものか…

TensorFlowで顔識別モデルに最適化した入力画像を生成する

動機 elix-tech.github.io の記事を読んで、「可視化」の項が面白いなーと思って。 引用されている図によると、人間の目にはまったく出力クラスとは関係なさそうに見える画像でもCNNによる分類器は騙されてしまう、ということのようだ。 なるほど分類モデル…

TensorFlowによるDeep Learningでのアイドル顔識別モデルの性能評価と実験

以前から書いているDeep Learningによるアイドル顔識別の話の続き。 コツコツと顔画像収集とラベル付けを続けて、そこそこにデータが集まってきたので ここらでちゃんと性能評価をしてみよう、と。 データセットの作成 今回は、現時点で重複なく180件以上の…

TensorFlowによるDCGANでアイドルの顔画像生成

アイドル顔識別のためのデータ収集 をコツコツ続けて それなりに集まってきたし、これを使って別のことも…ということでDCGANを使ったDeep Learningによるアイドルの顔画像の「生成」をやってみた。 まだだいぶ歪んでいたりで あまりキレイじゃないけど…。顔…

TensorFlowでのDeep Learningによるアイドルの顔識別 のためのデータ作成

続・TensorFlowでのDeep Learningによるアイドルの顔識別 - すぎゃーんメモ の続き、というかなんというか。 前回までは「ももいろクローバーZのメンバー5人の顔を識別する」というお題でやっていたけど、対象をより広範囲に拡大してみる。 様々なアイドル、…

続・TensorFlowでのDeep Learningによるアイドルの顔識別

TensorFlowによるディープラーニングで、アイドルの顔を識別する - すぎゃーんメモ の続き。前回は最も簡単に画像分類を試すために TensorFlow に同梱されているtensorflow.models.image.cifar10パッケージのモデルや学習機構を利用して約75%の識別正答率の…

TensorFlowによるディープラーニングで、アイドルの顔を識別する

以前は MNISTの例を使って画像識別を試してみた けど、次はカラー画像についての識別を試してみる。「アイドルなんてみんな同じ顔に見える」って 最近も言われてるのかどうか知らないけど、自分もつい5年前くらいまではそう思っていたわけで。その識別を機械…

全自動水玉コラ生成マシーン Web版

全自動水玉コラ生成マシーン - onk.ninja が面白いなーと思って、 processingよく分からんけど、OpenCV使えればWebアプリに移植できる?2015-12-25 13:54:59 via Twitter for Mac @sugyan できるできる。たぶん簡単。2015-12-25 14:03:49 via Twitter Web Cl…

Heroku + OpenCVで簡易顔検出API

Docker Image of Python with OpenCV 3.0 for Heroku - すぎゃーんメモ の続き的なかんじで。OpenCVでよく使われるObject Detection機能で、画像から顔を検出するAPIを作ってみた。 Heroku app https://face-detector.herokuapp.com/ Github repository http…

Docker Image of Python with OpenCV 3.0 for Heroku

を、作った。 Docker Hub URL https://hub.docker.com/r/sugyan/heroku-python-opencv/ Dockerfile repository https://github.com/sugyan/docker-heroku-python-opencv Example app https://docker-python-opencv-example.herokuapp.com/ これを使って http…

TensorFlowでのMNIST学習結果を、実際に手書きして試す

Deep Learningという言葉を色んなところで聞くようになり、Googleからも TensorFlow というものが出たし、そろそろちょっと勉強してみるか〜 ということで初心者が機械学習に手を出してみた。TensorFlowのtutorialを見てみると、まず最初に「MNIST」という手…

GAEのChannel APIを使ってみたメモ

最近全然触っていなかったGoogle App Engine。 今月初旬にリリースした1.4.0からChannel APIというのが使えるようになってリアルタイムWebアプリが出来るらしい、ということなのでちょっと触ってみた。 Channel Python API Overview | Python | Google Cloud…

いまどきのGAE/Py bulkloader

GAE/Pyでbulkloaderを使ってデータをアップロードする - すぎゃーんメモのあたりからGAE/Pyをほとんど触ってなくて最近の事情も知らなかったのだけど、最近久々に触ってみたらこのへんもちょっと変わっているようで。 Backing Up and Restoring | Python | G…

今さらながら全裸botをOAuth対応した

ちょっとしたミスで@zenra_botが1週間ほど動かなくなってしまっていて、直すついでにようやくOAuth対応もしてみることにした。 http://github.com/sugyan/Zenra/commit/1ce64e748a5684dff2f9118345cc48af11f27b88 やり方については詳しく説明されている記事…

全裸botのfollowerが増え過ぎで動かなくなっていたので直した

気がつくと全裸botを作ってから半年以上も経っていた。 GAEでTwitter botを作った - すぎゃーんメモ 当時はこんな下らないbotをfollowするヤツなんてそうそういないだろうと思っていたのだけど、意外と増え続けて、気がつくと1700とかになっている。 これで…

Google App EngineからTwitterのreplyなどをim.kayac.com for iPhoneに通知させる

前提条件:http://im.kayac.com/ ちょっと引っ越す予定なので自宅サーバーを止めていて、tiarraが動いていない。 今までtiarraからim.kayac.comでiPhoneに通知させていたTwitterのリプライなどが来なくなってしまって寂しいので、Twitterの情報はGoogleAppEn…

Google Wave の全裸Robotを改良

Google Wave版の全裸Robot。 Google Wave の全裸Robot - すぎゃーんメモ について、id:hayashihさんから不具合のご指摘をいただきました。ありがとうございました。 フォントなど書式を変更したテキストがzenrizeされた際にもとに戻ってしまう、とのこと。 …

Google Wave の全裸Robot

最近登録したヒトが増えてきたので、全裸Robotのメンテを。 全裸で書き換えるRobot - すぎゃーんメモとほとんど変わっていないけど。 #/usr/bin/env python # -*- coding: utf-8 -*- import logging import yaml from zenra import Zenra from waveapi impor…

全裸botの全貌

全裸bot(@zenra_bot)について。 一応、完成ということにしたので、機能や工夫した点などをまとめておきます。 今後GAE/PyでTwitter botを作ろうとしている方々の参考になれば。 またご指摘やアドバイスをいただけると嬉しいですが、もうだいぶ情熱が失せてき…

全裸botの修正作業

GAEでTwitterのbotを作る「BOTつくろう会」 #3 : ATNDに初参加。 最近めっきり全裸への情熱も冷めてきてしまっているので、この機会に少しでも改良できれば、と思い久々に全裸botのソースを見直してみた。 followの不具合 どうもここ数週間、followerに対…

全裸botはタイムラインの早さに合わせて呟く

全裸botは23分毎に呟く - すぎゃーんメモというのを書いたばかりだけど、変更した。 多くのヒトが呟いている昼間も、夜更かししているヒトだけが呟いている夜中も、同じ頻度でzenrize(他人の発言を拾ってきて全裸にしてPOST)するのは不自然。 タイムラインの…

全裸botのzenrize処理を改良した

現時点ではこんなカンジ。 def zenrize(self, sentence): postdata = { 'appid' : self.appid, 'sentence' : sentence.encode('utf-8'), } params = urllib.urlencode(postdata) result = urllib.urlopen(self.url, params) tree = ElementTree.XML(result.r…

GAEでTwitter botを作った

初めて、Twitter botなるものを作ってみた。 http://twitter.com/zenra_bot 公式ページ:http://zen-ra.appspot.com/ フォローするとフォローし返します フォローを外されると同様にフォローを外します フォロワーの発言を拾って、勝手に全裸に書き換えます …

Iteratorの中で要素を削除するということ

Javaの場合 import java.util.ArrayList; import java.util.List; class Hoge { public static void main(String []args) { List<Integer> samples = new ArrayList<Integer>(); samples.add(0); samples.add(1); samples.add(2); samples.add(3); samples.add(4); samples.add</integer></integer>…

全裸で書き換えるRobot

Pythonから全裸で形態素解析をする - すぎゃーんメモまで出来れば、GAEにあげてGoogle WaveのRobotの機能として使うこともできる。 zenra.pyをちょっと変更してクラスに。 #!/usr/bin/env python # -*- coding: utf-8 -*- from xml.etree import ElementTree…

Pythonから全裸で形態素解析をする

PythonからYahoo日本語係り受け解析で形態素解析をする - すぎゃーんメモの続き。 とりあえず動詞の直前に「全裸で」を挿入するようにしてみた。 #!/usr/bin/env python # -*- coding: utf-8 -*- from xml.etree import ElementTree import sys import urlli…

PythonからYahoo日本語係り受け解析で形態素解析をする

Yahoo!デベロッパーネットワークでアプリケーションIDを登録。 日本語係り受け解析については以下を参考に。 テキスト解析:日本語係り受け解析 - Yahoo!デベロッパーネットワーク http://python.blog-slime.com/2007/07/urllibpost.htmlを参考に書いてみた。…

GoogleWaveを楽しくしてくれるRobot

誰かが書き込むたびにRobotが末尾に「www」を勝手に書き足していく。 #/usr/bin/env python # -*- coding: utf-8 -*- from waveapi import events from waveapi import robot def blipSubmitted(properties, context): blip = context.GetBlipById(proper…

「ぬるぽ」に反応して「ガッ」してくれるRobot

日本語を使った場合、unicodeでマッチし、unicodeでSetTextすれば普通に書き込んでくれるらしい。 #/usr/bin/env python # -*- coding: utf-8 -*- from waveapi import events from waveapi import robot def blipSubmitted(properties, context): blip = co…

RobotでBlipを消す

テストで色々発言したりさせたりするとどんどんゴチャゴチャしてくるので。 #/usr/bin/env python from waveapi import events from waveapi import robot def deleteAll(context): for blip in context.GetBlips(): if not blip.IsRoot(): blip.Delete() de…

オウム返しRobot

誰かの発言を返信として繰り返すだけならこう書くだけ。 #/usr/bin/env python from waveapi import events from waveapi import robot def blipSubmitted(properties, context): blip = context.GetBlipById(properties['blipId']) text = blip.GetDocument…

Google Wave Robotを作ってみる

以下を参考にしつつ、何かやってみる。 第2回 ロボットAPI:最速!Google Wave API解説|gihyo.jp … 技術評論社 誰も知らない夜のwaveのrobot - When it’s ready. ライブラリの入手 Python版はこちら。 Google Code Archive - Long-term storage for Google …

GAE/PyでDatastoreのデータを全削除するためのbulkdeleter.pyを書いた

GAE/Pyでbulkloaderを使ってデータをアップロードする - すぎゃーんメモ GAE/Pyでbulkloaderを使ってデータをダウンロード/削除する - すぎゃーんメモ の続き。 そもそもDatastoreからfetchしてきた時点で(この処理はマルチスレッドで行われているっぽい)削…

関数の呼び出し時の処理を入れ替える

関数は、func_codeというattributeにcode objectなるものが入っているそうな。 これが実際に行う処理を持っているようなので、呼び出したときの処理をここで変更することができる。 >>> def hoge(): ... print 'hoge' ... >>> def fuga(): ... print 'fuga' …

GAE/Pyでbulkloaderを使ってデータをダウンロード/削除する

前回は、bulkloaderによるアップロードについて色々調べて試した。 GAE/Pyでbulkloaderを使ってデータをアップロードする - すぎゃーんメモ 今度は、データのダウンロードと削除について調べる。 データをダウンロードする アップロードとほぼ同様に行うこと…

GAE/Pyでbulkloaderを使ってデータをアップロードする

bulkloaderとは remote_apiを使ってコンソールからDatastoreにデータをアップロードするためのツール。 初期データとして大量のデータをDatastoreに突っ込んでおきたいときなどに便利。 逆にDatastoreにある内容をダウンロードすることもできる。削除をする…

Google App Engine でファイルをアップロードする方法 比較

Java版 GAE/J でファイルをアップロードする方法を学ぶ - すぎゃーんメモ の続き。 どうやらJava版でcommons-fileuploadを使ってファイルアップロードをする場合はgetItemIteratorから取り出すのが良いようだ。そうすればFileItemFactoryは必要ない。 import…

Perl, Pythonで1以上100未満の『2個の素数の積』である整数を列挙する

1以上100未満の『2個の素数の積』である整数をワンライナーで列挙する - すぎゃーんメモの続き。 普通にスクリプトを書くとどうなるか。 Perl モジュールを使うとなるとやはりMath::Big::Factorsが便利。 #!/opt/local/bin/perl use strict; use warnings; u…

Pythonで自分のダイアリーについたブックマークを確認

id:CortYumingさんと話してて、あったら便利かなぁ、と思って書いてみた。 はてなのAPIでとれるものを調べてみたカンジでは 自分のダイアリーについた総ブックマーク数 被ブックマーク合計数取得APIというのがある。*1 自分のダイアリーについた新着ブックマ…

GAE/J でancestorによるフィルタリングはできない?

今作っているGAE Counterでは、CounterとAccessRecordで親子関係を作っていて*1、あるCounterの子として作られたAccessRecordを取得するのに、ancestorによるフィルタリングを使ったQueryを用いている。 AccessRecord.all().ancestor(counter) で、同じこと…

Google App Engine のDataStoreからUserでフィルタリングしてデータを取得する方法

com.google.appengin.api.users.Userをプロパティに持つデータモデルから、それがログイン中のユーザーと一致するものだけを取得しようとする場合。 Python版では、 from google.appengine.api import users results = Hoge.all().filter('user = ', users.g…

Google App Engine でカウンターを作ってみた(再)

Gitの練習も兼ねて、Gitでバージョン管理をしながらアクセスカウンターを作ってみた。 http://gae-counter.appspot.com/ ソースをGitHubでまとめて公開。 GitHub - sugyan/GAE_Counter: Google App Engineで作るアクセスカウンター indexが生成されてくれな…

Google App Engine でカウンターを作ってみた

↑試作品なので消える可能性あり こちらで動かしています。 http://sugi1982.appspot.com/ どちらも共通、リロードされるたびに数字がインクリメントされます。 SDKのversion 1.2.1 からimages APIがパワーアップして、画像を合成することができるようになっ…

Django Hack-a-thon Disc.8に参加してきた

先々週のGAE Hack-a-thonに引き続き、2回目のhackathon参加。 http://twisted-mind.appspot.com/django-ja-hack-a-thon-disc-8/ http://bitbucket.org/voluntas/django-ja-hack-a-thon/src/tip/disc-8.rst 自分はハンズオンBで、id:everesさんに教えていた…

GAE Hack-a-thon Disc.3に行ってきた

「hackathon」と名のつくものには初めての参加。ドキドキでした。 http://twisted-mind.appspot.com/gae-hack-a-thon-disc-3/ 今回は事前ミーティングである程度のトピックを絞り、それぞれに興味をもったものに集まってチームを組んで作る、という形式だっ…

SoozyCon7に行ってきた

id:hide-Kさんに招待していただき、SoozyCon7に行ってきました。ありがとうございます。 http://soozy.org/?SoozyCon7 手書きメモを見返してまとめてみた。 かなり無知なので色々間違っているかもしれません。ご指摘いただけると助かります。 ■招待講演 id:e…

Google App Engine でBasic認証を実装 改

Google App Engine でBasic認証を実装 - すぎゃーんメモから少し改良してみた。 # -*- coding: utf-8 -*- import logging from base64 import b64decode from google.appengine.ext import webapp class BasicAuthentication(webapp.RequestHandler): def __…