まひろ量子のハックログ

プログラミングや機械学習などの知識を記録・共有します

illust2vecを使って類似イラストを検索する

類似画像検索 1. illust2vecとは 東北大学の齋藤真樹氏と東京大学の松井勇佑氏によって提案された「イラストの意味をベクトル化する」手法。 単語の意味をベクトル化するword2vecというものがありますが、それのイラスト版です。 ベクトル化することで、以下…

PythonでFlatten

Flattenとは 「入れ子になっているリスト」を「入れ子になっていないリスト」にすることです。 こんな感じです。 [1,[2,3]] → [1,2,3] [1,[2,[3]]] → [1,2,3] [1,[2,{'foo': 3}]] → [1,2,{'foo':3}] [1,[2,'foo']] → [1,2,'foo'] PythonでFlatten ほい。 fla…

pythonで色付きのprintをする方法

色付きの出力をしよう ここでは、pythonで色付きの出力をする方法をご紹介します。 (adsbygoogle = window.adsbygoogle || []).push({}); 以下のような色付きprint関数cprintを作りました。 class PrintColor: END = '\033[0m' BLACK = '\033[30m' RED = '\0…

文字とUTF-8, UTF-16, SJIS, EUCの相互変換【Python】

UTF-8をはじめとする各種文字コードと実際の文字を相互変換する方法について説明します。 文字コードの対応表はこちらのサイトを参考にしました。なお、UTF-16はUTF-16ビッグエンディアンを表しています。 ash.jp (adsbygoogle = window.adsbygoogle || []).…

Pythonのリストでキューを実現する方法

画像出典:https://1000ya.isis.ne.jp/1532.html 単純な方法(appendとpop) Pythonのリストを使ってキューを実現するにはどうすれば良いでしょうか? 単純な方法として、リストのappendとpopを使う方法が考えられます。 append(x)でリストの末尾にxを追加、…

【数学パズル】末尾に同じ数が777個連続する階乗は存在するか

画像提供:https://human-illustration.com/01-emotion-picture/043-free-silhouette.html 先日、いろんな数の階乗について調べていて「とある面白い性質」に気づいたので数学の問題にしてみました。難易度的には高校数学ですが、中学生でも鋭い子なら解ける…

Watson APIで{"code":401, "error": "Unauthorized"}

エラー内容 2019年1月27日現在、Watson APIで次のようにHTTPリクエストを投げたら401エラーが返ってきます。 curl -X POST --form "images_file=@xxxx.jpg" "https://gateway.watsonplatform.net/visual-recognition/api/v3/classify?api_key=xxxxxxxxxxxxxx…

Watson APIでcurl: (7) Failed to connect to gateway-a.watsonplatform.net port 443: Operation timed out

エラー内容 2019年1月27日現在、Watson APIで次のようにHTTPリクエストを投げたら443エラーが返ってきます。 curl -X POST --form "images_file=@xxxx.jpg" "https://gateway-a.watsonplatform.net/visual-recognition/api/v3/classify?api_key=xxxxxxxxxxxx…

GANを使って簡単に架空アイドル画像を自動生成(Progressive Growing of GANs)

Artificial Idol この記事で紹介する方法で、このような画像が作れるようになります。 (adsbygoogle = window.adsbygoogle || []).push({}); 最近趣味でやってる画像生成系のDNNについて簡単にレポートします。 1. Progressive Growing of GANsとは Paperは…

Pythonでゼロパディング (ゼロ埋め)を行う

以下の関数でOK int型であってもstr型であってもうまく動きます。 def zero_padding(num, length): num = str(num) return num.zfill(length) print( zero_padding(402, 5) ) print( zero_padding(4032, 7) ) print( zero_padding('402', 5) ) print( zero_p…

OpenCV3をインポートするときcv3ではなくcv2なのは何故?

ふと気になったので調べてみました。 こちらに答えがありました。↓ answers.opencv.org cv2はconvert toの略なんじゃないか?という意見もあるみたいですが、実際は、「2はバージョンを表しているのではなく、C APIをcvというプレフィックスで表し、C++ API…

Google ColaboratoryのCUDAを9.0にアップグレードする方法【失敗】

結論 失敗しました。CUDA9をインストールしても、Nvidiaドライバとの互換性を合わせられなかったり、pipでtensorflowをアップグレードできなかったりと、色々ハマります。Googleが公式でCUDA9をサポートしてくれるのを待つしかなさそうだという結論に至りま…

Image Inpainting(画像修復)をやってみた

画像出典: https://arxiv.org/pdf/1804.07723.pdf Image Inpaintingとは 不定形に塗りつぶされた画像を修復させるというタスクだ。NVIDAが発表した論文とデモ動画が、その精度の高さで話題となっている。 元論文 元論文はこちら。 Image Inpainting for Irre…

Google Colaboratory に大量データをアップロードする方法

Google Driveをマウントする Colab上で以下を実行。/content/driveというディレクトリにGoogle Driveがマウントされる。 !apt-get install -y -qq software-properties-common python-software-properties module-init-tools !add-apt-repository -y ppa:ale…

RailsアプリをAWS EC2で公開する超簡単な手順 【独自ドメイン/HTTPS対応】

やりたいこと Railsアプリをインターネットに公開したい AWS EC2で公開したい 独自ドメインで公開したい HTTPSで公開したい 単一のEC2で複数のアプリを公開したい この記事では、独自ドメインやHTTPSにも対応した形でEC2でアプリを公開する手順を紹介する。 …

深層学習の「超解像」でモザイクは除去できるのか (Tensorflow + Keras)

画像出典: http://mmlab.ie.cuhk.edu.hk/projects/SRCNN.html 結論から言うと うまくいかなかった。 あくまで実験記録として記事を書くが、ここにあるコードを真似してもうまく高解像度化できないので注意していただきたい。 超解像をやってみた。 モザイク…

Falconを使い超簡単なAPIを作る 【所要時間たったの3分】

Falconとは Falcon - Bare-metal web API framework for Python Falcon を使えばRESTful な Web API をサクッと作ることができる。業務で簡単なWeb API を用意する必要があったり、ハッカソンなどの短期間開発で疎結合なアークテクチャを作らなくてはならな…

Google Colaboratory のTips集その1 (GoogleDriveマウント、セッション継続、TensorBoard接続)

Google Colaboratory、すごいです。 誰でも、Tesla K80のGPUを無料ですぐに使うことができる。Tensorflow環境もすぐに手に入れることができる。 https://colab.research.google.com/ この記事では、Google Colaboratoryを使って深層学習をまわすときのちょっ…

GPU搭載のMacBook Pro (Retina, 15-inch, Mid 2014)でCUDAを動かす

CUDA周りにはあまり詳しくないのだが、MacでCUDAを動かす方法を色々調べたのでまとめておく。 特に、「何が必要か」「今の状況をどうやって確認するか」「何をすれば動くようになるか」を一元的にまとめた記事がなかったので、それを重点的に書こうと思う。 …

pip face_recognitionでcmakeエラー(Mac OSX)

Macでpip install face_recognitionが失敗してハマったので、解決策をメモしておく。 まず、筆者がハマったときのエラーを以下に示す。 -- Looking for sys/types.h - found -- Looking for stdint.h -- Looking for stdint.h - found -- Looking for stddef…

正規表現をFSTに変換してOpenFSTで扱えるようにする

FSTとは Finite-state Transducerの略。オートマトンの一種で、複数のノードとアークから成る。 入力系列に対し、その入力系列が受領可能か受領不可能かを返す。受領可能だった場合は、同時に出力系列も返す。 出力系列の候補が2通りあった場合、重みの大小…

独自学習したモデルをTensorFlow.jsで使う

1. TensorFlow.js Tensorflowをブラウザで動かす技術が登場した。その名もTensorFlow.jsだ。 js.tensorflow.org この記事では、独自に学習したモデルをTensorflowで使うときの流れを紹介する。 2. 学習するモデル(デブ判定器) 身長と体重を入力すると、ど…

世界一わかりやすいTensorflowのチュートリアル(を目指す)

Tensorflowの公式チュートリアル、わかりにくくないっすか…? Get Start with Tensorflow!さぁ、チュートリアルを始めよう! そう思って1番最初のBasic classificationに足を踏み入れた瞬間、そこにはFashion Mnistをmatplotlibで描画するGoogle先生の姿が……

bashrcに定義した関数をシェルスクリプトの中で呼ぶ

bashrcで以下のように関数を定義することができる。 myfunction() { echo "Hello" } 定義した関数はコマンドとして使えるようになる。 $ myfunction Hello この関数を内部で使用するスクリプトを書いてみた。 #!/bin/bash myfunction このスクリプトを実行す…

OpenFSTを使ってWFSTを作成・描画してみる (日本語対応)

重み付き有限状態トランスデューサ(WFST)の簡単なサンプルを作って描画してみる。 なお、WFSTの説明は他サイトに譲る。 参考:http://www.openfst.org 以下のような、入力シンボル、出力シンボル、そしてWFSTを定義しよう。 cat sample.ins <eps> 0 あ 1 b 2 c 3 </eps>…

Linuxコマンドのリダイレクトで上書き保存できる?

echo "今日も1日がんばるぞい" > a cat a > a cat a # a に書かれていた文字列はきえてしまう。。。 あるファイルをリダイレクトで上書きできるのだろうか? 結論から言うとできない。上の例で書いたように、リダイレクト後のファイルは中身が空になる。 少…

1文字ごとに改行するコマンド (日本語もOK)

あいうabc ▲これを、こうしたい▼ あ い う a b c 自然言語処理をやっていると、テキストファイルの中に含まれている「文字」を1つ1つ列挙したくなることが時折ある。Linuxコマンドを使ってサクッとできないものかと思い、「1文字ごと 改行」などのキーワード…

お名前.com + Route53 で独自ドメインのメールアドレスをGmailで運用する【無料: 所要時間5分】

お名前.comなどのレジストラで独自ドメインをゲットし、それを外部のネームサーバ(Route53など、お名前.com以外のネームサーバ)で運用するケースがよくある。たとえば、AWSのEC2でWebサイトを公開している場合だ。 このとき、www.example.com や example.com…

Kozuko Mahiro's Hacklog ―― Copyright © 2018 Mahiro Kazuko