「画像でゴミ分類！」アプリ作成日誌day1～データセットの作成～

# はじめに
みなさん、ごみの分類についてどれぐらい知っていますか？

たとえば、旅行の際には手放せない延長コード。デスク周りでも大活躍していることと思います。そんな、延長コードですが例えば接触不良で使えなくなってしまって捨てるとき、あなたは何ごみに捨てていますか？

適当に可燃ごみとして捨ててしまいますか？
答えは資源品（金属類）と筆者の住む地域ではなっていますが、正確には市町村によって異なります。
例えば横浜市では可燃ごみだそうです。また、流山市では不燃ごみとして扱われるようです。
このように同じごみでも捨て方は焼却設備や人口（すなわち出るごみの量）によって異なりますが、皆さんはゴミを正しく捨てているでしょうか？ゴミの出し方を熟知している人は少ないでしょうし、ましてや引越しなんかをして捨て方が変わった日には全部一から確認しなければなりません。
そこで、ごみの写真を撮れば適切な分類を教えてくれるwebアプリを作っていこうと思い立ちました。

せっかくなので、この経過を日誌という形で記録をつけていきたいと思います。もしよければ続編を楽しみにしていただけると幸いです。

＜記事一覧＞

- [「画像でゴミ分類！」アプリ作成日誌day1～データセットの作成～](https://qiita.com/eycjur/items/7d8223b28758c7dfaaa0) ←イマココ
- [「画像でゴミ分類！」アプリ作成日誌day2～VGG16でFine-tuning～](https://qiita.com/eycjur/items/3e954cb70dc15f996c2d)
- [「画像でゴミ分類！」アプリ作成日誌day3～Djangoでwebアプリ化～](https://qiita.com/eycjur/items/9c618538177c82f7fdc3)
- [「画像でゴミ分類！」アプリ作成日誌day4～Bootstrapでフロントエンドを整える～](https://qiita.com/eycjur/items/7b58c28eb8b16e722b5d)
- [「画像でゴミ分類！」アプリ作成日誌day5～Bootstrapでフロントエンドを整える2～](https://qiita.com/eycjur/items/08808097acd625e00652)
- [「画像でゴミ分類！」アプリ作成日誌day6～ディレクトリ構成の修正～](https://qiita.com/eycjur/items/f436787c2d517af6cad6)
- [「画像でゴミ分類！」アプリ作成日誌day7～サイドバーのスライドメニュー化～](https://qiita.com/eycjur/items/009dca5866c3e9ad0dd6)
- [「画像でゴミ分類！」アプリ作成日誌day8～herokuデプロイ～](https://qiita.com/eycjur/items/ebfae5db5dd1cd8349ea)


# 作るアプリの説明
まず、写真を撮ったらゴミの分類が表示されるところが最低限のやりたいことになります。分類の基準はとりあえず筆者の住んでいる柏市のものとします（需要があればもっと広げたいな）。
また、分類だけでなく出し方など、出す際の注意点も表示できるようにしたいです。
もっと言えば、自動でカレンダーに追加して通知する機能なんかをつけられると最高です。
上記のようなことをイメージしながら開発していきたいと思います。

# 具体的な流れ

1. データセットの作成
2. モデルの作成(VGG16をfine tuning)
3. バックエンドの実装(Django)
4. フロントエンドの実装(HTML,CSS,Bootstrap)
5. カレンダーに追加する機能の作成

こんな感じで行きたいと思います。

# データセットの作成
まず初日はデータセットを作成していきたいと思います。選択肢は以下の3点です

- 既存のデータセットを転用する
- スクレイピング
- 自作

結論から言うと、今回は自作しようと思います。理由は自分が利用することを考えてなるべく身の回りにあるものを分類できるようになりたいことが一番の理由です。また、ほかの方法だと、既存のデータセットには家庭ゴミとしてありそうなものがあまり含まれていないこと（当然ですね）、スクレイピングは意外と検索結果に違うものが含まれてしまうことから断念しました。しかし、自作できるデータの数は限られているので、もっとデータ増やしたいと思ったらスクレイピングすると思います。

# 写真を撮る
データセットを作るために写真を撮っていきます。

|PETボトル|ティッシュ（未使用）|電池|
|---|---|---|
|![IMG_20201108_105949.jpg](https://github.com/eycjur/garbage/blob/master/qiita_image/IMG_20201108_105949.jpg?raw=true)|![IMG_20201108_165803.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678160/82c81fc1-409e-80a3-6027-94b0f8f0ea42.jpeg)|![IMG_20201108_104844.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/678160/0ccace8e-a754-4e9e-779e-f2c7a2f1ab35.jpeg)|

こんな感じで写真を撮り終えました。合計499枚です。2,3時間撮り続けてだいぶ大変だったのに意外と集まってない…水増しで頑張ります泣

# フォルダ構造
画像のフォルダ構成はこのようにしておきます。
train
├可燃ごみ
│　└画像たち（以下同様）
├資源品
├不燃ごみ
├包装容器プラスチック類
└有害ごみ
val
├可燃ごみ
│　└画像たち（以下同様）
├資源品
├不燃ごみ
├包装容器プラスチック類
└有害ごみ

これはモデルを作る際に分類を自動で生成してもらえるようにこのような構成にしています。

# githubリポジトリ
このアプリの開発はgithubを使って行おうと思います。リンク( https://github.com/eycjur/garbage )です。

さて、初日はこんなもんで締めたいと思います。
次回も楽しみにしていてください

＜記事一覧＞

- [「画像でゴミ分類！」アプリ作成日誌day1～データセットの作成～](https://qiita.com/eycjur/items/7d8223b28758c7dfaaa0) ←イマココ
- [「画像でゴミ分類！」アプリ作成日誌day2～VGG16でFine-tuning～](https://qiita.com/eycjur/items/3e954cb70dc15f996c2d)
- [「画像でゴミ分類！」アプリ作成日誌day3～Djangoでwebアプリ化～](https://qiita.com/eycjur/items/9c618538177c82f7fdc3)
- [「画像でゴミ分類！」アプリ作成日誌day4～Bootstrapでフロントエンドを整える～](https://qiita.com/eycjur/items/7b58c28eb8b16e722b5d)
- [「画像でゴミ分類！」アプリ作成日誌day5～Bootstrapでフロントエンドを整える2～](https://qiita.com/eycjur/items/08808097acd625e00652)
- [「画像でゴミ分類！」アプリ作成日誌day6～ディレクトリ構成の修正～](https://qiita.com/eycjur/items/f436787c2d517af6cad6)
- [「画像でゴミ分類！」アプリ作成日誌day7～サイドバーのスライドメニュー化～](https://qiita.com/eycjur/items/009dca5866c3e9ad0dd6)
- [「画像でゴミ分類！」アプリ作成日誌day8～herokuデプロイ～](https://qiita.com/eycjur/items/ebfae5db5dd1cd8349ea)