イメキャプ実行時のエラーの解決

やったこと

イメキャプのエラーの解決をした。

やった理由

これができないとイメキャプの学習がうまくいっているかわからないため。

メモ

エラー内容

ModuleNotFoundError: No module named 'image_captioning.build_vocab'

原因

構成しているディレクトリ(image_caption)にbuild_vocab.pyがなかった。

解決法

別のところからbuild_vocab.pyを引っ張ってきてから実行。

わからなかったところ・あやふやなところ

  • 認識がうまくできていない理由

その他

動かした結果、認識させたい対象を認識しようとしたときにうまくいかなかった。
原因がよくわからないため、データの作り方をもうちょっと変えたいところではある。

イメキャプの学習

やったこと

昨日使ってみたイメキャプのデータ生成~学習をやってみた。

なぜやったのか

データ追加して認識させる方法をひとまず知りたいと思っていたため。
昨日データ生成~学習をさせようと思っていろいろやったが、結局わからなかったのでやり方聞きながらやってみた。要は昨日の残り。

メモ

docker-compose

今回はdocker-compose build image_captiondocker-compose up をしたけどupだけでもOKらしい(わからない)?
upしたら別端末で docker-compose exec image_caption bash で入る。
落とす場合は docker-compose down -v でボリュームも同時に落としておく。
落とした後は念のため docker system prune もやっておく。

エラー

RuntimeError: DataLoader worker (pid(s) 9118) exited unexpectedly

学習を回そうとしたときに出てきたエラー。メモリーが足りないと出てくるエラーらしい。
Dockerはコンテナごとにメモリーを振り分けているらしく、コンテナがたくさん立ち上がってたらこれが出るらしい。
docker ps でコンテナがどれくらいあるか確認できる。
今回は学習のみanacondaで環境を作って実行。

RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED

anacondaで環境を作った後で学習を実行しようとしたときに出てきた。
CUDANN(CUDA用のツール)がないというエラー?
pytorchのバージョンによってはこれの指定が必要らしい。
最初に入れていたpytorchのバージョン(1.8.0)から1.6.0に下げ再度実行したところ解決。

コマンド

free

使えるメモリーを表示するやつ?

nvidia-smi

NVIDIA GPUのモニタリング用コマンド

わからなかったところ・あやふやなところ

今のところなし

その他

とりあえず学習できたので、次はちゃんとデータを増やした対象が認識できるか動かしてみる(用意するの忘れた)。

イメキャプを動かす

やったこと

イメキャプを自PCで動かした。

なぜやったのか

データを追加して動かしたいため、まずはデモを動かせるようにしたい。

メモ

デモだけの場合、デモ用Readmeに手順が書いていたため、その通りに実行。
環境構築して専用スクリプトを回すだけでOKだった。
カメラ周りがアレだった自PCでも一応動かせた。

わからなかったところ・あやふやなところ

  • データを追加したときの動かす手順
  • pickle

その他

画像、キャプションデータを追加し動かそうとしたが、RuntimeErrorが出た。この辺りはReadmeがなかったためわからないが、多分生成する必要のあるデータ周りに原因がありそうだと考えた。
ちょっと調べてみたところ、その生成の必要がありそうなデータを作るのにMeCabが必要らしい。
もともとデモを動かしていたPCでデータの生成を試みた結果、こちらにもMeCabが入っていなかった。どうも動かすだけならMeCabはいらないらしい。多分これを書いた人の環境で学習させたものをデモが動いていたPCに移して動かしていたのだろう。この辺りは本人に聞くのが一番早そうだが。
というわけで、次はMeCabが使える環境を用意した後にデータを増やして再度動かせるか試したい。家にある新PCにMeCabを入れるのを忘れていたため、とりあえずそっちから作業を始めたいところ。
pickleの存在と概要は知っていたが、よく考えたら使ったことがなかった。この休みに使えたら使いたい。

コード読み

やったこと

コードを読んだ。

なぜやったのか

Encoder-Decoderモデルの流れや構造を理解したかった。

メモ

読んだコードの内容はイメージキャプション。
EncoderにCNN、DecoderにRNNを使用。モデルの定義でどちらも必要。

RandomCrop

ランダムに切り抜く。切り抜くサイズ、パディング幅、方法などが引数。

RandomHorizontalFlip

ランダムに左右反転を行う。確率が引数。

pack_padded_sequence

concatするやつ(?)

unsqueeze

次元を1つ増やす。インプットと増やす次元の位置が引数。

torch.stack

テンソルの結合?

わからなかったところ・あやふやなところ

今のところなし。

その他

大体読んだので、次は当該コードを使用しデータを変えて実行してみたい。

振袖メイクの打ち合わせ

やったこと

3/13に行う知人の振袖撮影のメイクの打ち合わせ。

なぜやったのか

話が出た時に私が名乗り出たため。

メモ

振袖は紺色ベースのもの。

ベースメイク

  • ベースはマットより(パウダーファンデーション+パウダー)
  • ハイライトはおだやかなもの
  • シェードなし

下地

肌に補正が必要なほどの赤みがないため、グリーン下地は必要ないと判断。
目立った毛穴はないが、念のため毛穴カバーも行う。
指で点置きで塗布後、スポンジでなじませる。

  • セザンヌ UVウルトラフィットベース(Nは00、EXは02)

コンシーラー

ニキビがほとんどないため、あまり多くはつかわないかも。
クマは隠したほうがいいので、本番で使う可能性あり。

  • インテグレート スポッツコンシーラー(2)
  • エクセル サイレントカバーコンシーラー(クマ用で使用?)

ファンデーション

基本ブラシでつける。
肌のあらがある程度隠れればいいかなくらい(次のパウダーをメインで使う)

  • インテグレート プロフィニッシュファンデーション(カラー不明)

パウダー

基本ブラシの予定だが、場合によってはパフでつける。

ハイライト

ブラシでつける(Cゾーン、Tゾーン、鼻先、唇先)

チーク

あまり主張しないベージュカラーをセレクト。

ポイントメイク

  • アイシャドウは赤系
  • アイブロウはすき間埋めるくらいで
  • リップは赤

アイブロウ

眉毛がしっかりとあるため、パウダーで軽く埋めるくらいでOKと判断。
眉マスカラは所持品にいいものがなかったため見送り。

  • KATE デザイニングアイブロウ(EX-5)

アイシャドウ

アイシャドウはアイベース→ベースシャドウ→追加用カラーシャドウの順で入れる。
写真映えかつ一重のため、目じりを濃くする。

アイベース

色があっていない可能性があるため変更する可能性あり。

ベースシャドウ

振袖の花にパープルが入っているため、パープル系かつ使いやすいものを選択。

  • KATE ダークローズシャドウ(PU-1)

追加用カラーシャドウ

基本赤系で統一。パープルみを少々足すために赤以外も使用。

  • セザンヌ エアリータッチシャドウ(04)の3番カラー(ボルドー系)
  • Magic Closet(スリーコインズにて販売) 3色アイシャドウ(2)のBカラー(レンガに近いカラー)
  • KATE トーンディメンショナルパレット(EX-102)のEカラー(ディープレッド)(使わないかも)
  • URGLAM ブルーミングアイカラーパレット(03)の左下カラー(パープル)

アイライン

アイラインは現状黒にしているが、これも場合によっては変更の可能性あり。
粘膜に近い部分かつ手ブレで失敗する可能性が高いため、これは本人自身でやってもらう予定。

  • LB パワーオブアイライナーリキッド(001)

マスカラ

すだれまつげにするためビューラーなし。
マスカラは今回つけてみたところ違和感があったためなしに。

リップ

手持ちの赤リップをそのまま付けたところ、あまり顔から浮かずに使えたため重ね付けはなし。
ブラシで輪郭を縁取ってからそのまま内側を埋め、最後にスティックで内側を中心に普通に塗っていく。ムラができたらブラシでなじませる。
リップを塗る前に必ず保湿する。

  • フォーチュン マシュマロティントルージュ(01)

その他

髪型が本番の日になるまでどうなるかわからないため、その時のために柔軟に対応できるようにしたい。

反省点

  • コンシーラーの存在を忘れていたため、本番では忘れないようにする
  • アイラインが思ったよりも難しいため、修正できるように綿棒は持っていく

モデルの実装時のメモ(pytorch)

モデル実装・動作で必要なもの

  • classの定義
  • 学習用コード
  • 評価用コード

classの定義

定義するもの

  • __init__
  • foraward
  • 場合によってはbackward

学習前にやること

  1. データのロード
  2. ネットワークの用意
  3. loss関数・最適化手法の設定

学習時にやること

以下のことを繰り返す

  1. データとラベルのロード
  2. 勾配の初期化
  3. ネットワークの使用
  4. lossの取得
  5. backward
  6. パラメータ更新

テスト時にやること

  1. データとラベルのロード
  2. 勾配の初期化
  3. ネットワークの使用
  4. lossの取得

最近の記録のつけ方

はじめに

ここ半年くらいで意識的になにかしらの記録をつけていくようになった。
ここで今やっている記録のつけ方を整理してみようと思う。

大前提・ルール

この記録のつけ方は、おおざっぱかつ継続するのをめんどくさがる私がやっている方法であるため、細かいところまでは記録を取らないことを前提においておく。

ルール

一応記録のルールは決めているので書いておく。

  1. 基本アナログ媒体で記録を取る(紙とペン)
  2. 日々の記録をつけることを前提としたものに関しては、書きそびれた日はスペースを空けておく
  3. 付箋は使わない(ただしものによっては紙片の貼り付けはOK)
  4. 書きそびれても気にしない
  5. ほかの日の記録も書いてよい
  6. 何のためにつけるのかをはっきりとしておく
  7. 記録を取るノートの表紙には必ず記録するものの名前・タイトルを書く
  8. 基本ノート1冊につき1テーマ(無駄に記録することを増やさない)
  9. 家に置いておくときは所定の棚に置いておく
  10. 書き終わったら記録完了したノート用のスペースに置いておく

記録のつけ方

出費

毎日の出費を記録。何にお金を使うのかを把握するために開始。
何を買ったのか(食べ物、筆記用具くらいの粒度でOK)とその値段を記入。
少し前に一瞬だけ、空いているスペースにその日の気分も記録していたが、書いたところでなにも関連性がないことがわかったため中止。

うれしかったこと

何をして(何をされて)うれしかったのかを記録。自己分析の一環。
うれしかったこととそれがあった日を記録。
ささいなうれしい気分はなかなか感知しづらいためか、これはまだ1ページしか進んでない。

すきなもの

何が好きかを記録。これも自己分析の一環。データが集まったら「何に興味がいきやすいのか」などを分析したい。 好きなものと好きな理由をエッセイみたいに書く。
基本1ページに1つのすきなことを書くのだが、書いたら疲れるのであまり書けていない。

作った料理のレシピ

レシピノート。最近料理を意識的にやろうと思ったのでつけ始めた。
最近になってやる機会が増えたので、これも順調につけている。今は20品目が目標。

研究

研究活動で何をやったのかを記録するもの。進捗報告書を書くときに必要なのでつけ始めた。
卒研が終わったので最近はアウトプットにとられがち。

アウトプット

このブログのこと。某氏にアウトプットするといいよと言われたためやった。
紙媒体じゃないため最初記憶が定着するのか不安だったけど今のところ大丈夫そう。

一言日記

その日の気分や出来事を記録。がっつり書くタイプの日記が継続しづらいため、この方法だと継続しやすいか実験として書いている。
ノートはフリータイプのスケジュール帳(マンスリー)を使用。このためその日の記録はすぐに書き終わる。 その日の気分を表すスタンプを記録代わりにしてもいいルールを追加したらもっと続きそう?

その他アイデア

常に持ち歩いているA3のノート。無地を使用。
基本的に何でもあり。