鹿児島ハードチル同好会

ブログ移行しました→ http://fuchami.com/

macOS Mojaveのダークモードを時間指定によって切り替える方法

macOS Mojaveから搭載された「ダークモード」

f:id:fuchami:20181003040305p:plain
2018年9月25日からmacOS Mojaveが配信されましたね.皆さんはアップデートしましたか?

今回のアップデートの目玉はなんといっても「ダークモード」じゃないでしょうか

ダークモードの切り替え方

  1. 「システム環境設定」→ 「一般」
  2. 「外観モード」

から
ライト(今までの白基調のUI)
ダーク(Mojaveで追加された黒基調のUI)

に変更することができます


f:id:fuchami:20181003030847p:plain


f:id:fuchami:20181003030852p:plainf:id:fuchami:20181003030856p:plain
これがダークモードです

ダークモードを時間指定によって切り替える

ずっとダークモードでもいいんですけど意外と日中に明るい部屋で使ってみると見づらいんですよね

なので
・日中は通常のライドモード
・夜間はダークモードで使用

みたいに自動的に切り替える方法をご提示致します

Macに標準搭載されているAutomator というアプリを使って設定していきます.


まずはAutomatorを起動

起動の仕方がわからない人は
⌘Command + Space(スペース) で Spotlight検索を表示させて
"automator.app" と入力したら出てきます.エンターキーで起動するはず
f:id:fuchami:20181003032705p:plain

時間指定によるダークモードの変更スクリプトを作成

新規作成を押してスクリプトを作成します
f:id:fuchami:20181003032057p:plain


「カレンダーアラーム」を選択
f:id:fuchami:20181003032059p:plain


検索バーで「apple 」と検索したら「AppleScriptを実行」というのが出てくるので右側にドラッグ・ドロップ

f:id:fuchami:20181003032642p:plainf:id:fuchami:20181003032648p:plain


紫色でなんか書いてるゴチャゴチャを消して以下のスクリプトを貼り付けてください

tell application "System Events" to tell appearance preferences to set dark mode to not dark mode

f:id:fuchami:20181003032645p:plain

上の再生ボタンを押してダークモードに切り替われば上手くいっています.


そしたら
⌘Command+S でこのスクリプトを保存します.
f:id:fuchami:20181003035935p:plain

なんか言われたらOKしてください
f:id:fuchami:20181003035938p:plain

適当な名前で保存したらカレンダーにて,切り替えたい時間を指定します.
日中はライトモード,夜間はダークモードとしたいときは1日に2回イベントを作成しましょう
(右クリック→複製 で1日に同じイベントを複製できます)

f:id:fuchami:20181003035941p:plainf:id:fuchami:20181003035945p:plain


恐らくこれで自動的にダークモードの切り替わりができます.よかったですね



参考にしたサイト(ありがとうございます)

applech2.com

tonochang.hatenablog.com

mobilelaby.com

【ディープラーニング】DCGANでポケモンのドット絵を生成してみた【Tensorflow】

はじめに

Deep Learningのネタ系記事はn番煎じではありますが一応記録として。
DCGANはDeep Convolutional Generative Adversarial Networksの略で、画像なんかを生成するアルゴリズムです。
画像認識において効果的な畳み込み層の構造を逆にして、ベクトル列を拡張しながら画像を生成します。

f:id:fuchami:20170715162313p:plain
詳しいアルゴリズムは僕が説明するより良い記事はたくさんあるので割愛。

実行環境

学習モデル

自分で作れるほど技術力がないのでTensorflowで動かせるDCGANのデモを使用。
github.com

gitから持ってきました。

学習用データセット収集

bohemia.hatenablog.com

こちらの記事の方はPokemon Goスクリーンショットにてポケモンを生成してるのですが、これを見た僕は「ドット絵の方でもできるんじゃ」
なんて思いつき試してみました。


http://hikochans.com/pixelart/zip/download

有志の方がドット絵データセット作られていました。感謝、、、
カラードット(金銀)以降の対面画像のものだけを抽出、
さらに左右反転などの水増し処理を行ったものをデータセットとして学習に用いました。

その結果フシギダネだけで184枚のデータセットが出来上がりました。
画像総数は80,622枚です。いい具合に集まったと思われます。

f:id:fuchami:20170715163606p:plain

学習結果

epoch 99

f:id:fuchami:20170715164110p:plain

まあ最初はこんな感じ、、


epoch 600

f:id:fuchami:20170715164144p:plain

お?それっぽいぞ




最終的にうまくできたやつ

f:id:fuchami:20170715164318p:plainf:id:fuchami:20170715164733p:plain
f:id:fuchami:20170715164458p:plainf:id:fuchami:20170715164543p:plainf:id:fuchami:20170715164311p:plain

gifにした

f:id:fuchami:20170715165935g:plain

まとめ

どことなくそれっぽいのが出来ました。
アンノーンのデータが多い(A〜Zの形のやつがいる)のでアンノーンっぽいのがちょこちょこ混じってます。

データ整形がうまくいってないような気もするのでぼちぼちまたいじりないおします。

TensorflowのEmbedding Visualizationでカッコよく可視化したい

TensorBoardがカッコいい

大学でディープラーニングを用いた研究をやろうと意気込んでおります。 TensorBoardでカッコよく可視化してみたいと思ったところ、アイドル顔認識の先駆者である偉大なすぎゃーんさんのこのツイートを発見

memo.sugyan.com

ご丁寧に記事まで書いてくださっており、動かそうと思ったのですがTensorflowのバージョンが1.0系に変わってからの大幅な仕様変更でいろいろと問題があったので躓いたところを簡単にまとめました。

実行環境

学習済みモデルとデモのダウンロード

Tensorflowのページを参考に学習済みのモデルをダウンロード

Image Recognition  |  TensorFlow

ターミナルを開いて

 $ git clone https://github.com/tensorflow/models

にてクローリングします。

学習済みのモデルのディレクトリが tensorflow.models.image.imagenet から models/tutorials/image/imagenet へと変更されていました

同様にすぎゃーん氏のデモもクローリングします

 $ git clone https://github.com/sugyan/tf-embedding-visualization-demo/blob/master/README.md

デモディレクトリ内にmodels/tutorials/image/imagenetにある classify_image.pyをコピーしておきます

以下修正

このまますぐ実行できれば良いのですがそうなるとこの記事の存在意義がなくなってしまいます。 以下修正箇所です。 コメントアウトが修正前、その下が修正後のコードです

# main.py

# line 5
# from tensorflow.models.image.imagenet import classify_image
import classify_image


# line 35
# embedding_var = tf.Variable(tf.pack([tf.squeeze(x) for x in outputs], axis=0), trainable=False, name='pool3')
embedding_var = tf.Variable(tf.stack([tf.squeeze(x) for x in outputs], axis=0), trainable=False, name='pool3')


# line 40
# summary_writer = tf.train.SummaryWriter(os.path.join(basedir, 'logdir'))
summary_writer = tf.summary.FileWriter(os.path.join(basedir, 'logdir'))

# line 53 ~ 55
# for i in range(size):
#     rows.append(tf.concat(1, images[i*size:(i+1)*size]))
# jpeg = tf.image.encode_jpeg(tf.concat(0, rows))

for i in range(size):
    rows.append(tf.concat(images[i*size:(i+1)*size], 1))
jpeg = tf.image.encode_jpeg(tf.concat(rows, 0))

恐らくこれで動くかと思われます。 Tensorflowが1.0系になってからとそれ以前の情報で溢れているインターネットでこれからも頑張りたいという気持ちのもと、うどんを眺めています

参考ページ

TensorFlow の "AttributeError: 'module' object has no attribute 'xxxx'" エラーでつまづいてしまう人のための移行ガイド - Qiita

TensorFlow v1.1 / 移行 > tf.pack()はtf.stack()になった - Qiita

TypeError: Expected int32, got <prettytensor.pretty_tensor_class.Layer > of type 'Layer' instead. · Issue #48 · google/prettytensor · GitHub