Linuxのデスクトップとサーバーについて扱います。イラストを艦これとアズールレーンに分類するアジェンダnijiflowをベースに、機械学習で艦これとアズールレーンの画像の分類器を作り、学習済みグラフ等を公開した。これのTwitterBotを作成し公開している。データセットはPixivのタグ付け済み画像情報を元に作成した。艦これ・アズールレーンそれぞれ6500画像を使用した。colaboratory)環境にて約48h行い、約10000epocを実行した。(テストデータによる)認識率は8割を超える。学習済みグラフの学習状況をplotするスクリプトが欲しい艦これとアズールレーンの画像を分類する分類器を作りました。スクリプトと学習済みグラフを公開しています。bot(@DFleetclassify)を公開しています。(が、簡易なおためし用Botなので専用サーバも立てておらず、不安定かつ不定休です。nijiflow自体は、MobileNetを用いた、転移学習による2D/3Dイラスト判別器です。Letter1に記載されています。公開前なのもあって、自分がやった作業についてざっくり書き残しておきます。fleetclassifyの精度は8割程度で、nijiflowと比べると低いです。(nijiflowはMobileNetを使っていながら98%を実現している。Letter1が公開前なので、その前処理までの手順を記載する。学習データ作成を行う。学習用画像の収集pixivより学習データに使用する画像を収集した。https://github.com/MichinariNukazawa/pixivpy_wrapperpixivpy_wrapperリポジトリ内の`kancolle.sh`により`${HOME}/pixiv_data/image__艦これ`が、`azure.sh`により`${HOME}/pixiv_data/image__アズールレーン`が作成される。ディレクトリには、画像ファイルとそのメタデータ`data.json`が作成される。雑事として、`data.json`は厳密なjsonではないので、読み込みの際に小細工が必要。データの前処理nijiflowは、`models/research/slim/create_niji_dataset.py`でTensorFlowの学習データバイナリを生成している。これは、nijiflow独自(?)の単純なフォーマットの画像一覧テキストファイルを読みこむ。pixivpy_wrapperのダウンロードデータを、このnijiflowデータファイルに変換する。これにより、nijiflowの前処理にそのまま乗っかることができる。変換を行う`util/nijiflow_source_from_path.py`を書いた。pixivpy_wrapperのダウンロード・ディレクトリから、`data.json`を読んで`nijiflow.list`を作成する。艦これ,艦隊これくしょん```それぞれの指定ディレクトリ内に`nijiflow.list`が書き出される。アズールレーンx艦これの画像の除外(艦これアズレンのキャラクターが一枚の絵に入っているような、クロスオーバー的な二次創作イラストを学習から除くため)-jpg以外の画像の除外(pixiv画像にはpngが含まれている。image.modeがRGBでない画像の除外("L"が20ファイルほど混じっている模様)ファイルフォーマットは以下の通り。一行ごとに1つ、ソースファイルの相対パスと分類ID。半角空白(?)で区切るtsvファイルフォーマット。学習データ化nijiflowのスクリプトを使ってtensorflowの学習データセットを作成する。データセットは複数のファイルを持ったディレクトリである。学習の実行TensorFlow-gpuが、CUDA9.0を要求する。Ubuntu18.04で作業していたのだが、デフォルトのCUDA9.1では駄目とのこと。collabにて行った。ドライバだけ入れないことで回避できるとのこと。チェックポイント(学習済み元モデルデータ)を取得nijinetの手順に従い、チェックポイントをダウンロードして展開する。mobilenet_v1_1.0_224_2017_06_14.tar.gzpopd```以上。9:複数枚の投稿を取り除く。漫画はともかく、まとめは他作品のキャラも入っているので。ファイルの事前圧縮は、少なくともデータセットのサイズには影響なかった。'/mnt/tmp/datasets/niji/metadata.json'```単なるデータセット引数の指定ミスだった。gradients/MobilenetV1/Logits/Dropout_1b/dropout/div_grad/Shape_1)]]```あらかじめGPU学習が設定されていたエラー。GPU版をインストールすることで解決。runtime.```ローカルのUbuntu18.04環境が原因だった模様。cuda9.1では駄目で、cuda9.0を入れなければならない、とのことです。parallel_read/filenames)]]```テストデータからEXIFの壊れたファイルを除いた。それが原因だったと思われる。(テストデータ生成部はEXIFが壊れているのをチェック等していない。学習中に使っているのかは不明だが。parallel_read/filenames)]]```GoogleDriveのファイルが壊れていたのが原因だった。yield```不明。colaboratoryが切れた場合UbuntuのFireFoxで、ダイアログが出なかったので気づかなかった。(コアダンプ)```cuDNNがインストールされていなかったのが原因だった。tensorflow```python3をpythonと打っていた(3つけ忘れ)。シューズを買いました。メインの靴がアシックスウォーキングで街歩き用なのですが、これまではこれで高尾山などの軽い山も登っていました。今回、靴底があまりに摩耗したこともあってアシックスウォーキングを買い替えたのですが、ついでに消耗が激...100均の液晶保護フィルムを13インチのノートPCに貼ってみましたノートPCの液晶保護フィルムが100円で買えるなんて、良い時代になりました。ダイソーに行ったら、ノートPCで使えそうな液晶保護フィルムがあったため、衝動的に購入。A4サイズと書いてあります。(HTMLでPOST、そしてhidden)formでユーザの入力やファイルを送信する際、IDを付与したり、送信した情報を紐付けるか、などの情報を一緒に送信したい場合があります。その場合、ID情報はブラウザに表示しないのがベストです。ユーザに見せたり、編集してもらう必要はありません。オルタネイティヴは数あれど、小さな実験プロジェクトを始めるときに、簡単に使えるMakeは未だにビルドツールとして有力な選択肢だと思います。MakefileはUNIX環境、というかCLIツール群があることを前提にしているところがあります。