群馬県でPythonを使ったAIやシステムを開発しているファントム

Navigation
群馬県でPythonを使ったAIやシステムを開発しているファントム

群馬県でPythonを使ったAIやシステムを開発しているファントムです。企業の経営課題を最適なテクノロジーで解決します。テックブログではPythonを中心にプログラミングに役立つ情報を発信しています。

投稿を検索する


  • 株式会社ファントム コーポレートサイト

カテゴリー



  • AWS 16
  • Django 45
  • FastAPI 4
  • Flask 8
  • GCP 1
  • Information 37
  • Other 32
  • PHP 2
  • Python 93
  • Pythonista 3
  • Rust 1

タグ


Alembic API argparse Beautiful Soup black Channels charset CodeCommit datetime Django REST framework Docker enumerate f-string git GitHub glob Google Colaboratory i18n IAM Internship Jupyter Lambda Matplotlib Nginx OpenCV pandas PIL Pillow PostgreSQL PyCharm PyCon pyenv PyTorch Redis Rembg ReportLab requests S3 Sentry slack tqdm uWSGI venv Vue.js youtube
このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシーと利用規約が適用されます。

© 2022 Fantom, Inc.

Hydra WordPress Theme by EckoThemes.

Published with WordPress.

Related Articles

Filter by Category

  • Python(93)
  • Django(45)
  • Information(37)
  • Other(32)
  • AWS(16)
  • Flask(8)
  • FastAPI(4)
  • Pythonista(3)
  • PHP(2)
  • GCP(1)
  • Rust(1)

Filter by Author

  • EIGHT (14)
  • hayai017 (2)
  • press (196)
Back to Latest Articles
Python

PytorchのDataloaderに関するTips

Posted on 8th 3月 2022 by EIGHT

Python

Pytorchで画像分類の精度を高める

今回、画像分類で精度を高めるために複数データの入力できる学習モデルを作成した。その経緯から始めて実際のモデリングまでを書くことにする。 前提 今回は洋服の図面を読み込み、それがなんの種類かを判別するCNNを作成した。 図 […]

Posted on 7th 3月 2022 by EIGHT

Python

OpenCVで画像から輪郭を上手く抽出する

pythonのOpenCVで輪郭を上手く抽出することができなかったが、いくつかの改善点により上手く行った経緯をここに書き残しておく。 改善前 これは50×50のスカートの画像である。単にfindcontourし […]

Posted on 7th 3月 2022 by EIGHT

Python

Jupyter NotebookでもBlackでコードフォーマット

Jupyter NotebookでもBlackでコードフォーマット コードの可読性を上げて保守性を高めたり、コードの属人化を防いで生産性を向上させるためのルール(コーディング規約)に則った開発を行うために、ファントムでは […]

Posted on 1st 3月 2022 by press

Python

PythonのRequestsを使ってSlackに通知

PythonのRequestsを使ってSlackに通知 フォームから送られた内容やプログラムの処理結果や途中結果をSlackに通知する方法です。 以下のコードのBOT USER TOKENとCHANNEL NAMEを任意 […]

Posted on 28th 2月 2022 by press

Information

2022年度 採用についてのお知らせ

2022年度 採用についてのお知らせ 概要2022年度の採用募集を開始します。(フルタイム、副業問わずビデオ会議等で意見交換からでもOKです。) 募集職種・インフラエンジニア・ウェブアプリケーションエンジニア・機械学習エ […]

Posted on 28th 2月 2022 by press

Python

Pythonのf文字列を使った書式パターン

Pythonのf文字列を使った書式パターン この記事で紹介したf文字列を使った文字列の操作ですが、文字列に変数を埋め込む際に書式を指定できます。0埋めして文字数を揃えたり、カンマで桁を区切ることも可能です。 カンマで桁区 […]

Posted on 27th 2月 2022 by press

Python

Pythonのf文字列を使った文字列の操作

Pythonのf文字列を使った文字列の操作 Pythonのf文字列は{1}や{a}のように変数を{}(波括弧)で囲うことで、文字列の中に変数を挿入できるので直感的な記述ができるようになります。従来のように複数の変数や文字 […]

Posted on 22nd 2月 2022 by press

Python

Pythonのargparseでコマンドライン引数をパース

Pythonのargparseでコマンドライン引数をパース argparseモジュールを使って、Pythonを実行する際にコマンドライン引数を指定してプログラム内に情報を渡す方法です。 引数によって処理を変えたり、別々の […]

Posted on 21st 2月 2022 by press

Information

Announcement about Internships for 2022

Announcement about Internships for 2022 日本語のページ OverviewWe’re now accepting applications for full remote […]

Posted on 4th 2月 2022 by press

Information

2022年度 インターンシップについてのお知らせ

2022年度 インターンシップについてのお知らせ For English page 概要2022年度のインターンシップの募集を開始します。 募集職種・インフラエンジニア・ウェブアプリケーションエンジニア・機械学習エンジニ […]

Posted on 3rd 2月 2022 by press

Information

最新情報をお届けするメルマガ始めます

最新情報をお届けするメルマガ始めます 本ブログも開始から3年ほどが経過しこれまでに多くの方にアクセスしていただきました。なかにはブログ経由でスタッフや学生インターンとして採用にいたったり、新規プロジェクト、新規案件をまか […]

Posted on 3rd 2月 2022 by press

Python

ERROR: ResolutionImpossible

ERROR: ResolutionImpossible docker-composeコマンドでビルドした際にERROR: ResolutionImpossibleというエラーが発生しました。このエラーは複数の原因があるよ […]

Posted on 2nd 2月 2022 by press

Python

PyCharm&DockerでもBlackでコードフォーマット

PyCharm&DockerでもBlackでコードフォーマット venvなどで環境構築されたプロジェクトであれば、PyCharmのFile Wacherというプラグインでファイルの保存時にBlackによるコードの […]

Posted on 29th 1月 2022 by press

Python

Pythonでソートが効かないリストを文字列を操作してソートさせる

Pythonでソートが効かないリストを文字列を操作してソートさせる [‘01234_B.jpg?X=n…’,‘12340_A.jpg?X=n…’,& […]

Posted on 16th 1月 2022 by press

Python

PythonでXserverからメール送信

PythonでXserverからメール送信 レンタルサーバーで処理が終わった時や進捗を確認したいときにPythonでメールを送る方法です。今回はXserverでPythonを実行していますが、他のレンタルサーバーでもホス […]

Posted on 12th 1月 2022 by press

Python

UnicodeEncodeError: ‘ascii’ codec can’t encode

UnicodeEncodeError: ‘ascii’ codec can’t encode Pythonのprint() 関数で文字列を出力する時に以下の様なUnicodeEncod […]

Posted on 12th 1月 2022 by press

Other

2021年に最も読まれた記事ランキング

2021年に最も読まれた記事ランキング 早いもので今年も残すところあとわずかとなりました。今年のまとめとして2021年に最も読まれたブログをランキング形式で発表します。 第5位 第4位 第3位 第2位 第1位 1位、2位 […]

Posted on 30th 12月 2021 by press

Other

dockerignoreで転送に時間がかかるファイルを除外

dockerignoreで転送に時間がかかるファイルを除外 数GBを超えるSQLiteやメディアデータを含むプロジェクトをDocker Composeで起動する際に、ファイルの転送に時間がかかってしまいビルドがなかなか終 […]

Posted on 29th 12月 2021 by press

Other

Docker Composeで起動したコンテナ内に入る

Docker Composeで起動したコンテナ内に入る Docker Composeで起動したコンテナ内に入って処理やコマンドを実行する方法です。 コンテナ内に入るコマンド docker-compose up -dでコン […]

Posted on 29th 12月 2021 by press

View Latest Posts
Python

PytorchのDataloaderに関するTips


EIGHT
PytorchのDataloaderに関するTips
Posted on 8th 3月 2022 by EIGHT
2024年度 インターンシップ 募集開始

今回はPytorchで入力するデータセットを作成するためのDataloaderについて解説する。

Datasetについて

Datasetとは入力するデータをすべて保存しておくためのclassである。 Datasetは非常に便利なので、是非使い方をマスターしてほしい。

Dataloaderの最小構成はこうである。


class DataSet_A(Dataset):
    def __init__(self):
        super().__init__()
                pass

    def __len__(self):
        return self.len

    def __getitem__(self, index):
                return x,t

Datasetで前処理をすべて行うべきである。 例えば画像分類であれば、前処理として

  1. 画像ファイルの読み込み
  2. 画像ファイルの加工 サイズをあわせる グレースケールにする等
  3. numpyやtensorへの変換
  4. 正解ラベルの作成

などの処理が必要になるだろう。 これらをDatasetに記述してゆく。

initに書くべきこと

initに書くべきことは確定している情報だ。 例えば画像ファイルのresizeする規格の情報や、画像フォルダのパスなどを書くのがよいだろう。

lenに書くべきこと

lenに書くべきことは全体のデータセットのうち、どこまでを使うかだ。 基本はすべてのデータを使いたいのでself.lenを返すようにしているが、例えばデータのうち最初の1000個だけを使いたい場合は1000を返せばよい。

getitemに書くべきこと

getitemに書くべきことは実際の前処理だ。 getitemの引数index番目の入力データと正解データをgetitemによって出力している。 ここで、学習用のデータセットを作る場合と予測用のデータセットを作る場合で処理を共通化するために、Datasetには前処理用の関数も用意しておくべきだろう。

それらを踏まえると画像認識用のclassは次のようになる。



class DataSet_A(Dataset):
    def __init__(self):
        super().__init__()
        self.image_size = (200,200)
                # フォルダに入ってる画像パスをすべて取得する
        self.image_paths = glob.glob("/Dir/to/path/")

    def __len__(self):
        return self.len

    def __getitem__(self, index):
                # index番目の画像パスを取得
                image_path = self.image_paths[index]
                # 画像をOpenCVで読み込み
                image = cv2.imread(image_path,1)
                #画像の前処理
                image = self.reshape_image(image)

                #正解ラベル
                label = 0
                return image,label

        def reshape_image(self, image)
                #画像を加工する
                image = cv2.resize(image,dsize = self.image_size)
                ...

                return image

これで前処理とデータセットの作成は完成である。 特筆すべきは、reshape_image関数だ。 getitemに前処理を全部書いてもいいのだが、このように分けておくことで予測するときに画像の前処理をDataset_A.reshape_image(image)とすることで完了できる利点がある。

Dataloaderについて

Dataloaderとは、作成したDatasetを複数個にまとめてバッチ化するclassのことだ。 コードを書く時は次のようにするだけでよい。

train_dataloader = DataLoader(train_dataset, batch_size=16, shuffle=True)

ここまできたら後は学習するだけである。

ファントムYouTubeチャンネル

株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    EIGHT
    • PyTorch
    • Share Article:
    • Twitter
    • Facebook
    • Pinterest
    • LinkedIn
    • Reddit

    Related Articles

    Python

    Pythonで文字列をリスト化して一文字づつ処理

    Pythonで文字列をリスト化して一文字づつ処理 Pythonで文字列をリスト化して一文字づつ処理する方法です。サンプルでは一文字づつ文字をshift-jisに変換して、変換できない文字を表示します。 開発環境 ソースコ […]

    Posted on 1st 6月 2020 by press
    Django

    DjangoのFormに初期値を設定する

    DjangoのFormに初期値を設定する Djangoで生成したFormをhiddenにしたまま、あらかじめ設定しておいた初期値が入ったvalueをPOSTする方法です。 forms.pyでinitial=’ […]

    Posted on 17th 2月 2019 by press