ポスドクから企業に転職後3年目の１年間を振り返りました

# はじめに
ポスドクから民間企業のサラリーマンにキャリアチェンジしてから約3年と1ヶ月が経過しました。キャリアチェンジしてから毎年、１年間の振り返りの記事を書いており、今年も、仕事で経験したことや学んだこと、自己研鑽、深層学習の研究についてまとめました（ちなみに、過去の振り返りはこちら->[2021](https://qiita.com/tk-ml/items/d514e25ff8cf9553c0ca)、[2022](https://qiita.com/tk-ml/items/10e87c351fdfb4adc3da)）。
<!-- 
また、おまけで、ポスドクから企業に転職後3年たった今、ポスドクをやめてよかったと感じたことをまとめました。
-->

今年の主な業務は、画像認識システムの保守および改修であり、機械学習を使うことはありませんでした。私は、機械学習の専門家なので残念だったのですが、エンジニアリングを強化する良い機会と考えて取り組みました。また、研究と自己研鑽で　深層学習やPythonでの実装に取り組むことで、機械学習を使えないストレスを解消しました。

# 画像認識システムの保守、改修

システムのキャッチアップ、ETLの不具合修正やWebアプリの機能追加などを行いました。システムは複数のコンテナで構成され、Docker Composeで構築、管理されます。使用した技術は、Node-red、React、Django、PostgreSQL、Docker、WSL2です。Node-red、React、Djangoはこれまで扱ったことがなかったので、キャッチアップが大変でしたが、非常に勉強になりました。Node-red、React、Djangoを実装したり、Dockerfile、Composeファイルを読み解いてシステム構成を把握し、ファイルの内容を修正しました。

この業務を通して技術の幅が劇的に広がりました。エンジニアリングが総合的に強化され、大きく成長できました。

<!-- 通信についても理解が深まりました。　Html、CSS、Javascript等Webアプリの基本も勉強し、 　

（AzureVM）

## Webアプリ改修

システム設定フォームを追加

## ETL不具合修正
-->

# 深層生成モデルの研究

昨年に引き続き、Wavelet Scatteringを用いた深層生成モデル(Angles & Mallat, 2018)を研究しました（Wavelet Scatteringやこの生成モデルは[こちらのブログ](https://zenn.dev/tkmtark/articles/c4009e0a5030dc)で解説しています。よかったらご覧ください）。このモデルは他のモデルにない利点を有しているのですが、画像の生成能力が不十分です。今年は、モデルを拡張して画像の生成能力の改善することができました。拡張したモデルを十分に検証した後、学会等で発表しようと思っています。
### 改善例
<!--- 元画像 -->
*既存のモデルで生成した画像*
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638591/9fcb5b27-5db0-b99f-f160-08ac99baf48d.png)
 **↓**
**拡張したモデルで生成した画像**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638591/afe5fe78-1d6e-5ef4-f832-3121bcafc54c.png)

<!---
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638591/4a530c89-4276-7880-2e3d-bc3c176a6252.png)

<div style="text-align: center;">センタリングしたい文章
</div>

<div align="center">
    <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638591/2a5772ed-63c5-7738-b0a4-3caa5ab70334.png" alt="属性">
</div>

{: align="center"}
1/2縮小画像 

*既存のモデルで生成した画像*
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638591/2a5772ed-63c5-7738-b0a4-3caa5ab70334.png)

*拡張したモデルで生成した画像*
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/638591/c7f92745-bbf4-36ee-b842-b43e71b1bbff.png)

[Angles & Mallat (2018)]で提案された深層生成モデルは、
エンコーダーがWaveletを用いた特徴抽出法（Wavelet Scattering）
-->

# 書籍やブログを利用した深層学習の勉強
今年は、書籍やブログ、GitHubのソースコードなどを使って深層学習による画像認識や物体検知、深層生成モデルを主に勉強しました。
<!---主に画像認識、物体検知、インスタンスセグメンテーションを勉強しました。-->

画像認識に関しては、[ディープラーニングを支える技術〈1〉](https://www.amazon.co.jp/%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%82%92%E6%94%AF%E3%81%88%E3%82%8B%E6%8A%80%E8%A1%93-%E2%80%94%E2%80%94%E3%80%8C%E6%AD%A3%E8%A7%A3%E3%80%8D%E3%82%92%E5%B0%8E%E3%81%8F%E3%83%A1%E3%82%AB%E3%83%8B%E3%82%BA%E3%83%A0-%E6%8A%80%E8%A1%93%E5%9F%BA%E7%A4%8E-Tech-Books/dp/4297125609/ref=sr_1_3?qid=1700494209&s=books&sr=1-3)やブログで、画像認識の代表的なモデル（GoogleNet、ResNet、SENet等）を学習しました。

物体検知に関しては、[つくりながら学ぶ! PyTorchによる発展ディープラーニング](https://www.amazon.co.jp/%E3%81%A4%E3%81%8F%E3%82%8A%E3%81%AA%E3%81%8C%E3%82%89%E5%AD%A6%E3%81%B6-PyTorch%E3%81%AB%E3%82%88%E3%82%8B%E7%99%BA%E5%B1%95%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0-%E5%B0%8F%E5%B7%9D%E9%9B%84%E5%A4%AA%E9%83%8E/dp/4839970254)でSSDを勉強しました。この本はモデル、学習、推論をテキストや図で説明するだけでなく、Pytorchのソースコードで解説されているので、モデル、学習、推論の詳細まで把握できて、しっかり勉強になりました。他にもfaster R-CNN、Masked R-CNNをブログで勉強しました。

深層生成モデルに関しては、[ディープラーニングを支える技術〈2〉](https://www.amazon.co.jp/%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%82%92%E6%94%AF%E3%81%88%E3%82%8B%E6%8A%80%E8%A1%93%E3%80%882%E3%80%89-%E2%80%94%E2%80%94%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A9%E3%83%AB%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E6%9C%80%E5%A4%A7%E3%81%AE%E8%AC%8E-Tech-Books-plus%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA/dp/429712811X/ref=pd_bxgy_d_sccl_1/357-2680330-1333905?pd_rd_w=ddKJg&content-id=amzn1.sym.bc57a5ab-9f02-4944-8c5c-9e1696e0d32c&pf_rd_p=bc57a5ab-9f02-4944-8c5c-9e1696e0d32c&pf_rd_r=6G6ZGDA2RETX5E7P2HMV&pd_rd_wg=Y1X8V&pd_rd_r=86a741bb-9892-40b1-9bf1-d18f04c6dbb9&pd_rd_i=429712811X&psc=1)でGAN、拡散モデルを勉強しました。また、Higginsのbeta-VAE論文でDisentanglementの指標を勉強しました。

その他、ディープラーニングを支える技術〈1〉でAttention 機構、スキップ接続など一般的な技術も勉強（復習）しました。

# Kaggleを通したPython、深層学習の勉強

実践力を磨くためKaggleを通してPython、深層学習を勉強しました。

まず、[Kaggleに挑む深層学習プログラミングの極意](https://www.amazon.co.jp/%EF%BC%AB%EF%BD%81%EF%BD%87%EF%BD%87%EF%BD%8C%EF%BD%85%E3%81%AB%E6%8C%91%E3%82%80%E6%B7%B1%E5%B1%A4%E5%AD%A6%E7%BF%92%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AE%E6%A5%B5%E6%84%8F-%EF%BC%AB%EF%BC%B3%E6%83%85%E5%A0%B1%E7%A7%91%E5%AD%A6%E5%B0%82%E9%96%80%E6%9B%B8-%E5%B0%8F%E5%B5%9C%E8%80%95%E5%B9%B3-ebook/dp/B0C1BSCXK2/ref=sr_1_8?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=2PXMP5YRPF6XA&keywords=Kaggle&qid=1701097466&s=books&sprefix=kaggle%2Cstripbooks%2C172&sr=1-8)でKaggleでよく使用される技術を勉強しました。Data augmentation、pseudo-labeling、stacking、adversarial validation 等精度を上げるための様々な技術が記載されており、実務でも使えそうな技術も学習できました。

また、Kaggleのヒトデの検出コンペのデータにYoloxを適用しました。ライブラリを使ってモデルを学習、推論するだけでなく、Kaggleで公開されているコードを参考にして、COCOフォーマットのデータを作成するコードを作成したり、Yoloxのコードを読み込んでライブラリの構成、処理内容を把握したり、推論用のデータセット、データローダーを使った推論コードを実装したりしました。

その他、画像認識や物体検知のコンペの上位解法読んだり、公開されているコードを読んで修正、リファクタリングしたりして勉強しました。コードには知らないライブラリが使われていることもあり、それらを調べて理解することでPythonプログラミングの幅が広がりました。

# 最後に

今年は、仕事では幅広くエンジニアリングを強化でき、研究や自己研鑽で深層学習やPythonを強化できました。来年は仕事で機械学習を使いたいと思っています。また、研究が一段落ついたらKaggleコンペに参戦しようと思っています。

<!-- # ライブラリのコードリーディング -->

<!--
## 画像認識
画像認識は主に
[ディープラーニングを支える技術1](https://www.amazon.co.jp/%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%82%92%E6%94%AF%E3%81%88%E3%82%8B%E6%8A%80%E8%A1%93-%E2%80%94%E2%80%94%E3%80%8C%E6%AD%A3%E8%A7%A3%E3%80%8D%E3%82%92%E5%B0%8E%E3%81%8F%E3%83%A1%E3%82%AB%E3%83%8B%E3%82%BA%E3%83%A0-%E6%8A%80%E8%A1%93%E5%9F%BA%E7%A4%8E-Tech-Books/dp/4297125609/ref=sr_1_3?qid=1700494209&s=books&sr=1-3)
で勉強しました。

## 物体検知
[つくりながら学ぶ! PyTorchによる発展ディープラーニング](https://www.amazon.co.jp/%E3%81%A4%E3%81%8F%E3%82%8A%E3%81%AA%E3%81%8C%E3%82%89%E5%AD%A6%E3%81%B6-PyTorch%E3%81%AB%E3%82%88%E3%82%8B%E7%99%BA%E5%B1%95%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0-%E5%B0%8F%E5%B7%9D%E9%9B%84%E5%A4%AA%E9%83%8E/dp/4839970254)でSSDを勉強しました。

faster R CNN

[ディープラーニングを支える技術1](https://www.amazon.co.jp/%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%82%92%E6%94%AF%E3%81%88%E3%82%8B%E6%8A%80%E8%A1%93-%E2%80%94%E2%80%94%E3%80%8C%E6%AD%A3%E8%A7%A3%E3%80%8D%E3%82%92%E5%B0%8E%E3%81%8F%E3%83%A1%E3%82%AB%E3%83%8B%E3%82%BA%E3%83%A0-%E6%8A%80%E8%A1%93%E5%9F%BA%E7%A4%8E-Tech-Books/dp/4297125609/ref=sr_1_3?qid=1700494209&s=books&sr=1-3)
-->


<!--本版環境から切り離して検証できる一部のアルゴリズムはPythonで実装して開発、検証しました。