# ちーむかぐるmtg#6
## 開催情報
| 日付 | 09/06 |
| -------- | ---------------------------------- |
| 主催 | 中井 |
| 開始時刻 | 22:00 |
| 終了時刻 | |
| 場所 | Zoom |
| 参加者 | 中井,瀬尾,池側,阿部|
| 参加人数 | 8人 |
## 議題
### 進捗報告
- 畑中
- すみません,今日はDBpjのAWSmtgを個別で行うので参加できません.
- 研究室で[これならわかる深層学習入門](https://www.amazon.co.jp/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E3%81%93%E3%82%8C%E3%81%AA%E3%82%89%E3%82%8F%E3%81%8B%E3%82%8B%E6%B7%B1%E5%B1%A4%E5%AD%A6%E7%BF%92%E5%85%A5%E9%96%80-KS%E6%83%85%E5%A0%B1%E7%A7%91%E5%AD%A6%E5%B0%82%E9%96%80%E6%9B%B8-%E7%80%A7-%E9%9B%85%E4%BA%BA/dp/4061538284/ref=sr_1_7?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3NATI9NWHNGHD&dchild=1&keywords=%E6%B7%B1%E5%B1%A4%E5%AD%A6%E7%BF%92&qid=1630933216&sprefix=%E6%B7%B1%E5%B1%A4%E5%AD%A6%E7%BF%92%2Caps%2C294&sr=8-7)の勉強会が週2-3で行われており,再来週には深層学習の入門は終わりそうです👊
- [デバッグ用学習コマンド](https://it-ntw8349.slack.com/archives/C028SBFAF4K/p1629724903052700)で動作確認すると`mnist_dataset.py`の`self.dataset = dataset[:int(len(dataset) * train_ratio)]`でエラーがでて解決できていない状態で終わってました…(というよりも業務優先で忘れていました🙇)
- 以下,エラーメッセージ
- それ以外のコーディングは完了しているのでこれの解決だけ終えたら最低限の学習はできるかと…!
```#bin/bash
raceback (most recent call last):
File "kaggle_image_recognition_models/train.py", line 52, in <module>
train(opt)
File "kaggle_image_recognition_models/train.py", line 13, in train
train_dataset = datasets[opt.dataset_name](train_transform, True, opt)
File "/home/hatanakashummpei/tutorial/kaggle-image-recognition-challenge/kaggle_image_recognition_models/src/datasets/mnist_dataset.py", line 12, in create_dataset
return MnistDataset(transform, opt.max_dataset_size, opt.img_dir, is_train, opt.train_ratio)
File "/home/hatanakashummpei/tutorial/kaggle-image-recognition-challenge/kaggle_image_recognition_models/src/datasets/mnist_dataset.py", line 28, in __init__
self.dataset = dataset[:int(len(dataset) * train_ratio)]
File "/home/hatanakashummpei/.pyenv/versions/tutorial/lib/python3.6/site-packages/torchvision/datasets/mnist.py", line 88, in __getitem__
img, target = self.data[index], int(self.targets[index])
ValueError: only one element tensors can be converted to Python scalars
```
↑labelがonehotなのが原因かも?
- 瀬尾
- 僕も畑中さんと同じやつ読み直してます.
- 阿部
- ゼロから作る1,2を学習中です
- LSTMのsequence2sequenceがわかりやすい(中井)
- 池側
- 研究室の都合でNLPに浮気してしまっています。
- 前処理のモジュールの使い方を勉強中
- 9/10にAIチームで中井がtransformerについて講義
- 中井
- githubで何かレビューするものありましたっけ(?)
- 院試後transformerの勉強をひたすらしています
- 12日までに何か出したいですね...
### 次コンペについて
- 自然言語処理でも良さそう(?)
- signateで論文分類
### 来週の月曜mtgまでのTODO
# ちーむかぐるmtg#5
## 開催情報
| 日付 | 08/23 |
| -------- | ---------------------------------- |
| 主催 | 中井 |
| 開始時刻 | 22:00 |
| 終了時刻 | 22:45 |
| 場所 | Zoom |
| 参加者 | 畑中,阿部,中井,池側,赤司, 川上|
| 参加人数 | 6人 |
## 議題
- datasetの作成(坂東)
- transformerの作成(赤司)
- transformerを追加した
- 動かないことはなさそう
- seed値固定の追加(畑中)
- このprは中井は目を通したので、どなたか修正後prに目を通してmergeしてください
- 動く状態にしてからmergeしたい
- k-foldに関して(畑中)
- 引き続き
- メタデータのサーベイ(川上)
- 年代・移っているもの・画材のカテゴリを手作業か自動でするか
- 画像認識は個人的に勉強中(阿部)
- とりあえず実行してみたり、pr見たり、勉強したり
- モデルの精度向上
## 疑問点
### mlflowの利用方法
* 事前準備は`$ pip install mlflow`
* 学習の際には、単純にloggerをmlflowにするだけで、特にすることはない
* 学習結果を確認する際は、`$ mlflow ui --port 5000`
### エラー
> 実際にtrainすることができていないのですが,だれか実行できたひといますか…?
- 自分の現状は[プルリクエスト](https://github.com/nnaakkaaii/kaggle-image-recognition-challenge/pull/3)にも書いたとおりです.
- Adamあたりでエラーが起こっているが,parameterが渡っていない…?(自分では渡っていると思うのだが)
`[{k: v.parameters()} for v in self.modules.values()]`
-> `[{"params": v.parameters()} for v in self.modules.values()]`
### 参加したいコンペのスプシについて
> すみません、他の用事が忙しくなってきたため、直近の参加は遠慮させていただいてもよろしいでしょうか?
また、誰がどのコンペに参加または参加予定などといった情報はどこかスプシ等で記録とかしていますか?
- ITのドライブにスプシに作成してみますかね?
- みなさんの8月いっぱいは忙しそうなので,進捗がないにしても興味あるコンペに関しては把握してもらいたい.
- 自分のドライブに作成しました
- [参加したいコンペ一覧](https://docs.google.com/spreadsheets/d/1wDOfWSwQuwaNV6lqjKC4NTbXt3ghDymE2nbVtPCqGFs/edit?usp=sharing)
### 来週の月曜mtgまでのTODO
* 引き続きサーベイなどは行う
* 単純に他の人がやっていて知らない技術があったら調べてみると興味持てて良さそう
* 基本の学習が回せるように整備するので、各自自身の環境で回せるようにする
*
## 動かし方
makeコマンド -> 学習データが自動ダウンロード
requirementsをpip install
(venv環境がない場合は自動で作成するのもmakeに入れても良いかも)
長いコマンドを打ってもらえれば動くはず
## おすすめの本
* [これならわかる深層学習入門](https://www.amazon.co.jp/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E3%81%93%E3%82%8C%E3%81%AA%E3%82%89%E3%82%8F%E3%81%8B%E3%82%8B%E6%B7%B1%E5%B1%A4%E5%AD%A6%E7%BF%92%E5%85%A5%E9%96%80-KS%E6%83%85%E5%A0%B1%E7%A7%91%E5%AD%A6%E5%B0%82%E9%96%80%E6%9B%B8-%E7%80%A7-%E9%9B%85%E4%BA%BA/dp/4061538284)
* そもそもの深層学習の理論的な本
* 実装側ではない
* コードの本ではないが,これから機械学習をする人なら前提としてしって起きたい背景
* 0から作る
* 理論ベースを固めたい人向け
* ベイズ
* 
* 面白いけど、好みが分かれるかも
* 数学がほとんど
* [発展ディープラーニング](https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.amazon.co.jp%2F%25E3%2581%25A4%25E3%2581%258F%25E3%2582%258A%25E3%2581%25AA%25E3%2581%258C%25E3%2582%2589%25E5%25AD%25A6%25E3%2581%25B6-PyTorch%25E3%2581%25AB%25E3%2582%2588%25E3%2582%258B%25E7%2599%25BA%25E5%25B1%2595%25E3%2583%2587%25E3%2582%25A3%25E3%2583%25BC%25E3%2583%2597%25E3%2583%25A9%25E3%2583%25BC%25E3%2583%258B%25E3%2583%25B3%25E3%2582%25B0-%25E5%25B0%258F%25E5%25B7%259D%25E9%259B%2584%25E5%25A4%25AA%25E9%2583%258E%2Fdp%2F4839970254&psig=AOvVaw1iBm77Zqd5ralce8SJMr0F&ust=1629812123827000&source=images&cd=vfe&ved=0CAwQjhxqFwoTCKDItrehx_ICFQAAAAAdAAAAABAE)
* 前から読んでいく想定
* モジュール開発と相性が良い
- [実装ハンドブック](https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.amazon.co.jp%2FPyTorch%25E3%2583%258B%25E3%2583%25A5%25E3%2583%25BC%25E3%2583%25A9%25E3%2583%25AB%25E3%2583%258D%25E3%2583%2583%25E3%2583%2588%25E3%2583%25AF%25E3%2583%25BC%25E3%2582%25AF-%25E5%25AE%259F%25E8%25A3%2585%25E3%2583%258F%25E3%2583%25B3%25E3%2583%2589%25E3%2583%2596%25E3%2583%2583%25E3%2582%25AF-%25E5%25AE%25AE%25E6%259C%25AC%25E5%259C%25AD%25E4%25B8%2580%25E9%2583%258E-ebook%2Fdp%2FB084JKYKMF&psig=AOvVaw1iBm77Zqd5ralce8SJMr0F&ust=1629812123827000&source=images&cd=vfe&ved=0CAwQjhxqFwoTCKDItrehx_ICFQAAAAAdAAAAABAL)
- 気になる部分だけ読めるので辞書的な感じで使える
# ちーむかぐるmtg#4
## 開催情報
| 日付 | 08/16 |
| -------- | ---------------------------------- |
| 主催 | 畑中 |
| 開始時刻 | 22:00 |
| 終了時刻 | 23:00 |
| 場所 | Zoom |
| 参加者 | 畑中,阿部,川上|
| 参加人数 | 3人 |
## 議題
### 現在のチーム構成
* first_step
* 畑中 peter
* 川上 watarugurunnn
* 赤司 CaramelPopcorn
* 阿部 kyosu
* beginners
* 中井 nn
* 楠本 Kaito34
* 瀬尾 geeeeorge
* 坂東 dlbsabu
### 進捗報告(各自)
- datasetの作成(坂東)
- transformerの作成(赤司)
- seed値固定の追加(畑中)
- プルリクエストを送りレビュー待ちです.
- 多分気づいていないぽいのでメンションしておきます.
- k-foldに関して(畑中)
- 上記のseed値固定がmainにマージされ次第プルリクエストを送ります
- 上記のメソッドも用いているため
- メタデータのサーベイ(川上)
- 年代・移っているもの・画材のカテゴリを手作業か自動でするか
- trainデータ数は500枚くらいなので,分担して確実なものをつけてもいい
- (年代確率)×(移っているもの各物体の確率)×(画材の確率)が最大となるようなラベルを最終的な出力としたい
- AlexNetが使えるか?
- 2色画像に関しては年代情報を付与して白黒で統一したほうがいい可能性がある
- 輝度をいじると精度あがるぽい
- モデルの精度向上
- ResNetなどの公式のモデル内容を見るといいかも
- torchinfoのライブラリが便利
- だいたい2^nでchannel数とかかわっている
- おすすめの本
- [これならわかる深層学習入門](https://www.amazon.co.jp/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E3%81%93%E3%82%8C%E3%81%AA%E3%82%89%E3%82%8F%E3%81%8B%E3%82%8B%E6%B7%B1%E5%B1%A4%E5%AD%A6%E7%BF%92%E5%85%A5%E9%96%80-KS%E6%83%85%E5%A0%B1%E7%A7%91%E5%AD%A6%E5%B0%82%E9%96%80%E6%9B%B8-%E7%80%A7-%E9%9B%85%E4%BA%BA/dp/4061538284)
### 疑問点
- 実際にtrainすることができていないのですが,だれか実行できたひといますか…?
- 自分の現状は[プルリクエスト](https://github.com/nnaakkaaii/kaggle-image-recognition-challenge/pull/3)にも書いたとおりです.
- Adamあたりでエラーが起こっているが,parameterが渡っていない…?(自分では渡っていると思うのだが)
### 来週の月曜mtgまでのTODO
* 引き続きサーベイなどは行う
* 単純に他の人がやっていて知らない技術があったら調べてみると興味持てて良さそう
* 基本の学習が回せるように整備するので、各自自身の環境で回せるようにする
# ちーむかぐるmtg#3
## 開催情報
| 日付 | 08/09 |
| -------- | ---------------------------------- |
| 主催 | 中井 |
| 開始時刻 | 22:00 |
| 終了時刻 | 23:07 |
| 場所 | Zoom |
| 参加者 | 中井,畑中,川上,瀬尾,赤司,阿部, 坂東, 池側|
| 参加人数 | 8人 |
## 議題
### 現在のチーム構成
* first_step
* 畑中 peter
* 川上 watarugurunnn
* 赤司 CaramelPopcorn
* 阿部 kyosu
* beginners
* 中井 nn
* 楠本 Kaito34
* 瀬尾 geeeeorge
* 坂東 dlbsabu
### 担当分担
1. データのダウンロード (中井)
* download.shとかにshellコマンドを書いて、どの環境(linux)でもデータセットをダウンロードできるようにする
* S3やGoogleDriveにデータをおいてそこからwget/curlコマンド叩いて取得
* Makefileがあるので、そこで書いたdownload.shを呼べば、makeコマンドが使えるようになる
* つまり、利用する人はgit cloneしたあと、makeコマンドをすれば自動的にデータが配置される
2. データのロード (坂東)
* Datasetを書く(torch.utils.data.Dataset)
*
3. データのTransform (赤司)
* とりあえず、Input Sizeは224x224にするので、その前提でtransformを用意する (オプションが用意できるとなおよし)
* ここまで行えば、とりあえず学習が回る(MLPしかない)←←来週全員が到達する
4. その後
* 各々モデル周りを作成していく
* VGGのファインチューニング/転移学習とか (中井)
* ResNetなど
* CNN (224x224に対応するのが必要、より汎用的だとなお良い) (瀬尾)
* kaggle mnistで見てみるといいかも
* [この辺のアーキテクチャが参考になる](https://www.kaggle.com/cdeotte/how-to-choose-cnn-architecture-mnist)
* オプションでサイズ変更や何層にするかを参考にしながら
* [これは中井の実装です](https://github.com/nnaakkaaii/various-gan-models/blob/main/various_gan_models/src/models/modules/discriminator_modules/cnn_module.py)
* transformer/attention (畑中, 池側)
* [AttentionBranchNetworkの元論文](https://keiojp0-my.sharepoint.com/:b:/g/personal/inovation_keio_jp/EcG_L878HgBNpcdz6yBVci4BL6d_Vdnnar0oi52TopwE1w?e=8OppKW)
* Transformerのself-attentionとは違う
* 画像のどこに注目するかをLossで学習することができる
* [AttentionIsAllYouNeed](https://keiojp0-my.sharepoint.com/:b:/g/personal/inovation_keio_jp/EXWBbnDW6rpDub97_JfOJwwBq7bBI3vQWCn1q5kE0A__3A?e=rPHfvp)の論文
* Transformerの代表格
* EfficientNet (畑中)
* ENASでデータセットに対してアーキテクチャを適合させる
* ImageNetの学習済みモデル(timm)を転移学習
* これの転移学習やFine tuningを試しても良さそう
* [トピック](https://prob.space/competitions/religious_art/discussions/skywalker-Post1a375b68565d3d022e6a)であがっていたものは[timmライブラリ](https://github.com/rwightman/pytorch-image-models)の転移学習をしている
* Assemble Resnet
* [EfficientNet B6+AutoAugと同等程度の精度で5倍早いAssemble-ResNet](https://akichan-f.medium.com/efficientnet-b6-autoaug%E3%81%A8%E5%90%8C%E7%AD%89%E7%A8%8B%E5%BA%A6%E3%81%AE%E7%B2%BE%E5%BA%A6%E3%81%A75%E5%80%8D%E6%97%A9%E3%81%84assemble-resnet-c3b8b846e0a2)
* など
* 正則化Regularization
* 正規化Normalizationなどを入れる
* パラメータチューニングを行う
* 今不完全な部分を作る(tuning.py, test.pyなど)
* seed値固定
* src/utilsにseed値を固定
```python
def seed_everything(seed=42):
"""seedを固定させる
[参考]
https://qiita.com/si1242/items/d2f9195c08826d87d6ad
Args:
seed (int, optional): seedの設定値. Defaults to 42.
"""
os.environ['PYTHONHASHSEED'] = str(seed)
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.backends.cudnn.deterministic = True
```
* kfoldなど(畑中)
```python=kfold.py
# datasetの作成
dataset = make_kflod_train_dataset(TrainDfBefore)
fold = StratifiedKFold(n_splits=PARAMS['n-fold'], random_state=SEED, shuffle=True)
cv = 0
indexs = fold.split(TrainDfBefore[ID], TrainDfBefore[TARGET])
models = []
for fold_idx, (train_idx, valid_idx) in enumerate(indexs):
print('======================================')
print('fold {}'.format(fold_idx + 1))
# modelの呼び出し
model = ResNetKMNIST().to(DEVICE)
# optimaizerは今回Adamを使用
# optim = Adam(model.parameters(), lr=PARAMS['lr'])
# SAM optimizerの使用
base_optimizer = torch.optim.SGD
optimizer = SAM(model.parameters(), base_optimizer, lr=0.001, momentum=0.9)
# LambdaLRを用いて学習率を変化させる
# [参考](https://katsura-jp.hatenablog.com/entry/2019/01/30/183501)
# scheduler = LambdaLR(optimizer, lr_lambda=lambda epoch: 0.85 ** epoch)
scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau(optimizer,mode='min',factor=0.2,patience=1)
criterion = nn.CrossEntropyLoss()
train_loader = DataLoader(Subset(dataset, train_idx), shuffle=True, batch_size=PARAMS['batch_size'])
valid_loader = DataLoader(Subset(dataset, valid_idx), shuffle=False, batch_size=PARAMS['valid_batch_size'])
# initialize the early_stopping object
# early stopping patience; how long to wait
# after last time validation loss improved.
early_stopping = early_stopping_pytorch.pytorchtools.EarlyStopping(
patience=PARAMS['patience'],
verbose=True
)
for epoch_idx in range(PARAMS['epochs']):
# epochループを回す
start_time = time.time()
model, train_loss, train_acc = train(model, train_loader)
model, valid_loss, valid_acc = valid(model, valid_loader)
```
* メタデータの付与に関して (川上)
* [トピック](https://prob.space/competitions/religious_art/discussions/shinmura0-Post28f14afac122cd06cbd5)にあがっていました。
* trainデータのラベル付け
* 言語情報を入れれるようにしたい
* これができそうだったら、FC層で言語情報とconcatして入力できるようなネットワーク構成にする
* ただtest時には言語情報の部分は0を入力
* 半教師あり学習を利用してもよい (中井)
* 教師なしデータとして、testデータを利用して良い
* noisy studentとか, PNU Learning
### 来週の月曜mtgまでのTODO
* 引き続きサーベイなどは行う
* 単純に他の人がやっていて知らない技術があったら調べてみると興味持てて良さそう
* 基本の学習が回せるように整備するので、各自自身の環境で回せるようにする
*
# ちーむかぐるmtg#2
## 開催情報
| 日付 | 08/02 |
| -------- | ---------------------------------- |
| 主催 | 中井 |
| 開始時刻 | 22:00 |
| 終了時刻 | 23:00 |
| 場所 | Zoom |
| 参加者 | 中井,畑中,池側,大鐘,川上,瀬尾,坂東,赤司,阿部 |
| 参加人数 | 9人 |
## 議題
### フレームワーク

> 所々にあるmodify_commandline_optionsは、例えばvggのモデルとresnetのモデルを使う時で利用したいコマンドライン引数が変わると思うので、一段階目にmodel名、二段回目に各モデルの指定するコマンドライン引数をパースできるように多段にしています
(指定可能なコマンドライン引数はreferences以下です)
#### transform 画像の前処理(augmentation)
torchvision.transformsを組み合わせて実装
今はaffineによる前処理と推論用の2つ
#### dataset データ読み込み
今はmnistのみ。torch.utils.data.datasetを継承してgetitemメソッドの実装
#### dataloader バッチサイズごとにデータ取り出し
torch.utils.data.DataLoaderを利用、ほぼ不変
#### logger ロギングと実験フロー管理
mlflowを選ぶことで実行した実験が自動でmlflowの形式で保存され、mlflow uiとコマンドラインで実行するとuiで全ての実験が確認可能
実験条件(オプション、かかった時間)やlossやaccuracyが全て可視化できる
#### options オプションパーサー
コマンドラインで最低限利用したいオプションを設定
#### models メインのモデル
さらに、loss,metrics,optimizer,schedulerなどを指定可能で、それぞれはmodelsのサブディレクトリで実装
modelsではmodulesで定義したnnを組み合わせて一連のforwardやbackwardのフローをabstract_modelのインターフェイス上で継承・定義していく
#### modules
今はmlpのみ
resnet, vgg, senet, transformerなど種々の実装をする
#### activation modules
個人的に最終層は深層距離学習に置き換え可能にしたかったので、modulesから切り分けた
arcface, cosface, softmax, l2softmaxが現時点で利用可能
### github
https://github.com/nnaakkaaii/kaggle-image-recognition-challenge.git
専用のリポジトリ作りました
とりあえずワンライナーでcovidのデータセットをダウンロードできるようにmakefile編集したいです
datasetとdataloaderもcovidのデータセット用に改変すれば学習できます
(自分も動き出し8月からになると思います)
リポジトリ招待するのでgithubアカウント名送ってもらえると助かります
kaggleのnotebookからもpip installで使用可能
#### 参考
以下は研究室の新人研修で言われたことです.コンペ参加する上で参考になることがあると思うので適宜見返したらと思います.
>optimizer: 配布したコードはoptimizerにSGDを使っていますが、もっといいoptimizerがあるので調べてみましょう
epoch数:epochが何かわからない人は調べて欲しいのですが、学習は何回もやったほうが精度は上がりそうですよね
Learning Rate Scheduling: 学習率(lr)は重要なハイパパラメータです。同じモデルでも学習率を変えるだけで精度が大きく上下します。学習率は小さすぎると学習があまり進まないが最適解に行く可能性はあがる、大きすぎると学習が早く進む代わりに最適解に辿りつけないことがあり、調整する必要があります。はじめのうちは大きいlrを、学習終盤は小さいlrをといった工夫をしてみると良いかもしれません!
early stopping: epoch数を伸ばすと過学習を起こす可能性があります。過学習が起きる前に学習を中断するように早期終了させると良いモデルが得られるかもしれません。また、今は最後のepochのモデルでの評価を行っていますが、途中のモデルのほうが精度が良い可能性もあります。validation scoreが一番高い時のモデルを保存するといったearly stoppingを行うと高い精度が期待できそうですね
k-fold cross validation : 今は1foldですがfold数を増やせば増やすほどモデルの精度向上に繋がりそうですね。5-foldとかちょうど良さそう
転移学習:ImageNetなどでの学習済みモデルを用いると精度向上に期待ができます。使い方は簡単ですがその分重くなるので学習時間は結構かかります。(はじめはVGGやResNetなどを試すとよいでしょう)入力サイズが224☓224とかなのでtransformsでresizeしてあげる必要があります。
ensemble: 複数のモデルから得られた予測値を利用して最終的な予測値を取得します。異なるモデルを複数用いることで汎用性が高まりそうですね。
Data Augumentation : 研修でちらっと触れましたが、ノイズに強くしたりするために使われることが多いです。色々種類があるので気になる人は調べてみよう。
https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix.git
|名前|githubのアカウント名|
|---|----------------|
|畑中|hatanakashumpei|
|池側|yuu0412|
|赤司|kazuma8888|
|大鐘|ganechi|
|坂東|dlbsabu|
|川上|watarungurunnn|
|瀬尾|geeeeorge|
|阿部|kyosu-1|
### 参加するコンペについて
slackであげたコンペはどうやら物体検出で難易度が少し高い.
コンペに参加するモチベとして
- 賞金を獲得したい
- いきなりKaggleで賞金をとるのは難しいと思うのでSignateなどの国内の賞金ありのコンペに参加してもいい.(参加者が少ない)
- 個人の勉強として頑張りたい
- その場合,まずは画像(自然言語処理)の識別系のコンペとかで参加する.
- Sginate
- https://signate.jp/competitions/471
- kaggle
- https://www.kaggle.com/c/rsna-miccai-brain-tumor-radiogenomic-classification
- Probspace
- https://prob.space/competitions/religious_art/ranking
- 宗教画のテーマ分類
# ちーむかぐるmtg#1
## 開催情報
| 日付 | 07/24 |
| -------- | ---------------------------------- |
| 主催 | 畑中 |
| 開始時刻 | 10:00 |
| 終了時刻 | 10:48 |
| 場所 | Zoom ([録画リンク](https://drive.google.com/file/d/10m6A_maJ0eu5HqNmiLVnLiCB-ZvX5JLN/view?usp=sharing)) |
| 参加人数 | 6名 |
| 参加者 | 武田、川上、阿部、楠本、赤司,畑中|
## 自己紹介
|名前|データ分析・機械学習の経験|興味がある分野・参加したいコンペ|Kaggleなどの経験|
|---|----------------------|-----------|--------------|
|畑中|今年研究室に所属してから画像と自然言語処理に関する研究をしています|画像分類タスク|過去の開催したコンペ(dog vs cat)に軽く提出&新人研修で研究室内で簡単なコンペを参加した程度です.(つまりKaggle初心者)|
|赤司|遊びでやるくらいで本格的にはやったことないです|画像関係|エントリーだけはして、いつも手付かずで終わります。|
|武田|時系列分析(SARIMAX)やkeras,LightGBMでの機械学習経験あり、深層学習は勉強しただけ(CNN)|特徴量エンジニアリングなどを必要とする<br>ビジネスの文脈のコンペ|なし(titanicとHome Credit Default Riskは授業でやりました)|
|楠本|pandasを使った分析はAIチームでやっています。深層生成モデルとRNN,CNNを用いたモデルの研究を研究室でしています。(先生の話によると畑中さんの研究室とテーマが近いらしいです)|割と何でも良いです|タイタニックとHouse Prisesは初学者の時に触ったことがあります|
|川上|ラボで叩き込まれてる最中。脳decodingしてます|全部興味あります|なし|
|阿部|機械学習に関してはUdemyと本で勉強中で,本格的な実装経験はまだありません。|時系列予測(割と何でも大丈夫です。)|なし|
|||||
## Kaggleについて
### 開催中のコンペ
- [コンペ一覧](https://www.kaggle.com/competitions)
### チーム編成
- チームの上限は現在5人らしい(?)
- フレームワークはPytorch
### 共同開発
- 考えられる共同開発方法は以下の2通り
1. KaggleNotebook
2. Github
- どのような共同開発の方針で行くか
#### KaggleNotebook
- GoogleColabと同様に環境構築は不要
- GPUを使える(ただし一人あたり週30時間の時間制約などあり)
- notebookは版として保存・共有できるらしい
#### Github
- これまで同様にGitHubでコーディング
- ローカルでの環境が十分にあればローカルでも学習してよい
- `pip install`でKaggleNotebookでも使用させる(?)
- pip installってパブリックレポジトリでやるんですか?privateでもできるんですかね(武田)
- 自分もわからないので中井さんに確認し後日共有
## LeaderBoardについての提案(畑中)
- LeaderBoard(LB)はこれまでのコードから何を変えた結果,どのような精度が得られたかを表で簡単にとめる
- Kaggle上でのLBとは参加者のランキングがわかる感じ
- Githubでいうコミットメーセージみたいな感じでログを起こしておく
- できたらLBとgithubのコミットメーセージが一致していたらいつでもそのLBの状況を再現できるので分析がしやすいと思います.
- 使用イメージ

- 最低限ID・Method・accuracyがあればよい
- ハイパーパラメータの値はどこかに設定する?
- LBの例
|ID|Method|parameters|acc|remark|
|--|------|----------|---|------|
|1|ResNet(Adam)|lr=0.0003, epoch=30|0.9777|optimizerは<br>SGD->Adamに変更した|
- ここまでしないくてもいいかもしれませんが,見返すときに便利だと思うのでスプレッドシートとかにやってみるのはどうでしょうか?
- スプレッドシートで情報交換という意味合いからやってみる
## wandbの使用の提案(畑中)
### wandbとは
- [wandb公式サイト](https://wandb.ai/site)
- データ分析や機械学習の学習のログを簡単に可視化させるツール
- `pip install wandb`で使える
- 個人使用は無料
- 使用イメージ

- こちらを使いたいのですがいかかでしょうか?
- よさそうなので,後日簡単な資料を作成して動かしてみる
## その他・質問等
### おすすめの本・サイトなど
- [AIcia Solid Project](https://www.youtube.com/channel/UC2lJYodMaAfFeFQrGUwhlaQ)
- 機械学習などに関してわかりやすく説明している
- [timm](https://github.com/rwightman/pytorch-image-models)
- 画像系の最新研究のモデルを簡単に使える
- 一部のモデルはImageNetで事前学習済みモデルのパラメータを公開しているので転移学習として使える
- [paper with code](https://paperswithcode.com)
- コードがGitHubで公開されている論文だけが表示されている
- 各データセットに関するLBも見れる
- [kaggleで勝つデータ分析の技術](https://www.amazon.co.jp/Kaggle%E3%81%A7%E5%8B%9D%E3%81%A4%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90%E3%81%AE%E6%8A%80%E8%A1%93-%E9%96%80%E8%84%87-%E5%A4%A7%E8%BC%94/dp/4297108437)
- 定番
- [kaggle コンペティションチャレンジブック](https://www.amazon.co.jp/dp/B08R78BQ2G/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)
- 上位勢の解法の解説、モデル改善の流れが書いてある
### 質問・相談事項
#### 参加したい期間
| 名前 | 参加したい期間・頻度 |
| -------- | ---------------------------------- |
| 畑中 | 夏休みに1,2つ参加してみたい.その後は面白そうなのがあれば |
| 武田 | 夏休み(8月~9月) その後は修論の進捗次第 |
| 赤司 | わりといつでも大丈夫です。積極的に参加します |
| 楠本 | 8月~でコンスタントにやりたいです。業務が多すぎるのでフルコミットは出来ないかも... |
| 阿部 | 今読んでいる本を終わらしてから参加したい&東進が忙しそうなので9月~(or 8月後半~) 年間を通してコンスタントに参加したい。 |
| 川上 |割といつでも大丈夫です。年間通じて参加したいです。 |
| | |
| | |