‫よしっ｡
‫これで､ トレーニング用と検証用に分かれたことになります｡
‫Xの値は画像のファイルパス､ Yの値は画像のファイルパスです｡
‫ラベルはブール型のnumpy表現である｡
‫そこで､ ラベルはすでに数値形式になっているので､ 画像を数値に変換するか､ 少なくとも変換するための関数を作成する必要があります｡
‫そこで､ そのための小さな見出しを作ろう｡
‫必ず成功させる｡
‫画像の前処理を行う｡
‫イメージを時制に変える
‫というわけで､ このステップを正式に開始することになりました｡
‫そして今､ イメージを時制に変えると言っても､ これはどんなデータであっても共通するテーマでしょう｡
‫ですから､ 画像でなくても､ 音声ファイルのようなものであったり､ テキストの文章であったりしても､ TensorFlowで作業する場合は時制に変換する必要があるのです｡
‫そして､ 時制はマトリックスのような数値表現であることを忘れないでください｡
‫では､ これをもう一度やるにはどうしたらいいでしょうか？
‫ノートブックで画像を前処理するのではなく､ 必要なときだけ前処理をすることもあります｡
‫なぜなら､ ファイルパスを操作することは､ 画像を操作するよりも少ないデータで作業できるので､ とても簡単だからです｡
‫というわけで､ すでにファイルのパスが通っているので､ このテーマはこの先もそのままでいいと思います｡
‫そして､ そうするかもしれない､ と言っているのです｡
‫これをやるんです｡
‫これから､ プロジェクトのステップのための機能を開発し始めます｡
‫そして､ 私が言いたいのは､ 1行のコードを書いてセルを実行するだけでなく､ 関数を作るということです｡
‫何もないからセルが動かない｡
‫最初の頃は､ それが当たり前だったんです｡
‫無数のセルに無数のコードを書き込んで､ それをひたすら実行するのです｡
‫そうすると､ たとえノートブックのずっと下の別の場所にいたとしても､ この上のどこかにすでに書いたのと同じコードを書き直さなければならなくなる｡
‫そこで､ コードを一回で書けるようにするために､ 関数を作るようになるわけです｡
‫最初は少し時間がかかるかもしれませんが､ その機能を後で再利用することができますので､ それをワークフローで考え始めてほしいのです｡
‫もしあなたが､ ここでデータの前処理をしようと思っているなら､ その関数や機能は後で必要になるかもしれませんね｡
‫だから､ 単発のセルではなく､ 機能にしてしまう｡
‫だから､ それを前処理にしよう｡
‫私たちのイメージを時制に
‫これから､ いくつかのことを行う関数を書きます｡
‫さて､ この前処理機能は画像に特化したものになりますが､ コンセプトは変わりません｡
‫どのようなデータを扱うにしても､ おそらく何らかの形でテンソルに変換する必要があるだろう｡
‫そこで､ 画像ファイルのパスを入力として受け取りたいと思います｡
‫それが､ これまでの成果です｡
‫画像ファイルのパスを取得しました｡
‫TensorFlowでファイルを読み込んで変数に保存したい｡
‫その変数をイメージと呼ぶことにしよう｡
‫シンプルで良いですね｡
‫3 私たちのイメージを変えたい｡
‫つまり､ 画像変数は､ JPEGになります｡ これは､ 2つの時制で扱う画像イメージファイルのタイプだからです｡
‫4つです｡
‫次に何をするか？
‫画像のサイズを変更する必要があります｡
‫つまり､ すべての画像のサイズが異なるからです｡
‫通常､ 画像や画像分類､ 画像を使ったある種のディープラーニングのパイプラインは､
‫すべて標準的なサイズにリサイズするのが定石です｡
‫そこで､ 画像のサイズを変更することにします｡
‫ええと､ 224の形になるように｡
‫では､ 実際に画像を整形した経験がなくても､ 考えてみてほしいんです｡
‫なぜ､ 持つことが重要かもしれない｡
‫それは
‫さて､ このサイズは任意で構いませんが､ なぜ作業するときに同じようなサイズの画像を用意することが重要なのでしょうか？
‫最後に､ 修正した画像を返す｡
‫今すぐ
‫機能としては､ 5つのステップを用意しました｡
‫うわー､ どうしたらいいんだろう､ と思うかもしれません｡
‫さて､ ここで資料を見てほしい｡
‫だからTensorFlow｡
‫データの読み込み｡
‫さあ､ どうぞ｡
‫ということで､ TensorFlowにデータを読み込む方法の読み始めは､ 余談としておきますね｡
‫だから､ これは本当に良いセクションだと思います｡
‫TensorFlowのガイドデータですね｡
‫資料編に添付ファイルとして残しておきますので､ よろしければご覧ください｡
‫ここに目を通すのに10分ほど費やしているだけです｡
‫理解できなくても､ 2､ 3日かけて10分くらいかけてもいいかもしれませんね｡
‫コンセプトの一部がまとまりつつあるところです｡
‫そして､ チュートリアルについては､ ここにもあるはずです｡
‫データの読み込みや前処理が必要だと思います｡
‫だから､ これも貴重な1枚です｡
‫ここに来るの？
‫これが､ 画像の読み込みになるわけです｡
‫私の問題は､ 画像を読み込もうとしているのですが､ それを時制に変える方法を知りたいのです｡
‫だからチュートリアルに通うんです｡
‫負荷データを調べる｡
‫そして､ 画像の読み込み方を調べます｡
‫そして､ ここに目を通せばいいのです｡
‫だから､ この2つのリソースをリンクさせるようにするんだ｡
‫そして､ このビデオを見終わった後､ それぞれ10分ほど目を通してほしいのです｡
‫では､ 戻ってみましょう｡
‫ここで､ この機能を構築してみましょう｡
‫ただ､ その前に､ 実際に画像を読み込むとどのように見えるのか､ テンソルがどのように見えるのか､
‫デモをしておきたいと思います｡
‫では､ そうしましょう｡
‫画像をアンパイヤaに変換する｡
‫ここです｡
‫その前に､ 画像の取り込みがどのようなものかを説明します｡
‫そこで､ numpyの配列に変換しています｡
‫時制は次元のあるnumpyの配列や行列に非常に似ていると言ったのを覚えていますか？
‫これから見るものは､ read（image read）の中のmap plot関数をインポートしているところです｡
‫M読みに画像保存します｡
‫ファイル名を取得しよう 42
‫ファイル名とは､ 学習用画像のファイルパスのリストに過ぎないことを忘れないでください｡
‫どっちが上なんだろう｡
‫ドッグビジョン｡
‫トレーニングイメージ｡
‫そして､ 画像の形状を確認したいと思います｡
‫なるほど｡
‫というわけで､ こちらが今回のイメージです｡
‫これが高さです｡
‫幅です｡
‫実は､ いつも迷うのですが､ そのため､ 正方形の画像のように形を変えているのです｡
‫だから､ その縦横はあまり関係ないんです｡
‫高さ､ 幅､ カラーチャンネルだと思います｡
‫そして､ カラーチャンネルというのは､ 赤､ 緑､ 青のピクセルのことです｡
‫では､ ここで､ カラーチャンネルとは何か？
‫チャンネル obj a sample.
‫つまり､ 赤､ 緑､ 青の色で構成された画像とはこういうものなのです｡
‫もう少し､ 自分で飛び込んでみてください｡
‫しかし､ ここでは画像の各ピクセルが赤､ 緑､ 青の値の組み合わせで､
‫0から255の範囲にあることを信じて欲しい｡
‫そこで､ numpyの配列である画像を見てもらうと､ そのようになるはずです｡
‫これでよしとしよう｡
‫0 から 255 までの値｡
‫だから､ イメージドットマックスにすれば､ もしかしたらこれでわかるかもしれない｡
‫255とイメージマン｡
‫ゼロです｡
‫これでよしとしよう｡
‫つまり､ 赤､ 緑､ 青の画素値は0から2までの間です｡ 55.
‫それは文字通り､ 私たちのイメージ通りです｡
‫です｡
‫今､ まさにアンパイヤにあります｡
‫時制はnumpyの配列とよく似ていると言ったのを覚えています｡
‫だから､ これを時制に変えればいいんです｡
‫TF定数を使えば､ ほとんどのものをテンソルにすることができます｡
‫ここで､ docstringを読むと､ テンソルのようなオブジェクトから定数テンソルを生成していることがわかる｡
‫美しい｡
‫もう少し読み込んでみてください｡
‫しかし､ 私たちのモットーである「疑わしきは罰せず」を忘れないでください｡
‫だから､ それを実践するのです｡
‫これがどうなるのか､ 見てみましょう｡
‫価値観が全く同じなんです｡
‫実際に､ 実証してみましょう｡
‫画像は欲しいし､ 2つまでならいいかもしれない｡
‫TFA定数と同じです｡
‫つまり､ ここでの唯一の違いは､ 今は353へのシェイプというテンソルになっていることです｡
‫2つだけ表示されるようにインデックスを作成しました｡
‫しかし､ これが配列のnumpyで､ これがテンソルだとすると
‫ただ､ このテンソルはインテンシブフローで､ CPU上で実行できるようになったので､ より高速な計算が可能になりました｡
‫つまり､ GPUは､ 私の現在のマシンであるMacBook Proに搭載されているCPUがこれらの数字のパターンを見つけるよりも､
‫ずっと速く見つけることができるのです｡
‫ここに行こう｡
‫画像をテンソルに変換する｡
‫さて､ ここまでで画像はどのようなデータで構成されているのか､ 基本的なことを少し見てきました｡
‫画素値｡
‫赤､ 緑､ 青のいずれかを0〜255の間で指定します｡
‫アンパイヤでイメージがどのように見えるか､ テンソルでイメージがどのように見えるかを見てきました｡
‫最後に､ この5つのステップを実行する関数を紹介しましょう｡
‫そこで､ この動画が長くならないようにするために､ 私たちができることは｡
‫関数を書いて確認すると言いましたが､ 実際にこの関数を書く前に､ ある程度勘を養っておくといいと思います｡
‫次のビデオでは､ この機能を構築します｡
‫だからとりあえず､ ここに自分の画像を1枚入れてみてください｡
‫ファイル名の番号を自由に選んで､ いろいろな値で遊んでみて､ テンソルにしてみればいいんです｡