‫さて､ ここまでで画像がどのようなものか､ 集約された形が見えてきました｡
‫このステップを実行する小さな関数を作ってみましょう｡
‫そこで､ コピーして下に表示させることが考えられます｡
‫そして､ ここにちょっとだけセルを書きます｡
‫さて､ 画像がテンソルとしてどのように見えるかを見てきた｡
‫それらを事前に処理する関数を作ってみましょう｡
‫了解です｡
‫そこで､ この画像サイズ224という変数を定義することにしました｡
‫こういう説明のないものを見ると､ いつもそう思うんです｡
‫224とは？
‫どこで手に入れたんだろう？
‫さて､ この後のビデオで､ 使用する機械学習モデルを選び出すことになります｡
‫機械学習の多くは､ 入力のサイズや形状（この場合は画像）を､ 使用しているモデルと一致させることです｡
‫これもまた､ 後ほど取り上げます｡
‫しかし基本的には､ 機械学習モデルに送り込む画像が､
‫縦24×横24という形状であることを確認しています｡
‫なぜなら､ 同じ形状の画像で学習した機械学習モデルを使うからです｡
‫でも､ それは後ほど実際に見てみてください｡
‫しかし､ この機能を正そう｡
‫そこで､ 画像の前処理をするための関数を作成します｡
‫だから､ この素敵でシンプルなプロセスイメージと呼ぶことにします｡
‫画像パスを入力として受け取ることになる｡
‫と｡
‫小さなdocstringは､ 画像ファイルのパスをタグ付けし､ 画像をテンソルに変換することができる｡
‫そんな単純なものです｡
‫後でもう少し直感的にわかるようにすることもできますが､ そもそも､ 自分たちで説明するにはそれで十分です｡
‫そこで､ 画像ファイルを読み込みたいのですが､ そのためにimageという変数に保存しておきます｡
‫また､ 画像を読み込めば､ 他のタイプのデータにも適用できますね｡
‫そこにテキストデータがある｡
‫pandas､ dataframe､ numpy､ csvがあります｡
‫しかし､ そこに目を通すと､ 入力､ 出力､ 読み取り､ ファイルのためにIOに行くことができることがわかります｡
‫これでよしとしよう｡
‫なんて書いてあるんだ｡
‫入力ファイル名の全内容を読み出して出力する｡
‫なるほど､ それは納得です｡
‫string 型のテンソルを返す｡
‫美しい｡
‫イメージパスをやってみよう！でも鵜呑みにしないように｡
‫私たちが行うのは､ そしてあなたにもこの習慣を取り入れてほしいということです｡
‫もし､ 何をするものなのか全く分からない関数を見かけたら｡
‫一行ずつ書き換えてください｡
‫では､ これを確認してみましょう｡
‫tensor equals t io read, read, file と進み､ 画像パスが必要になる｡
‫そこで､ ファイル名を行うことにします｡
‫26歳なのでファイル名を
‫26.
‫そして､ それはどのようなものなのでしょうか？
‫ああ｡
‫だから､ 紐の形なんですね｡
‫それから､ 理解できない文字もたくさんありますが､ それはコンピュータが私よりも理解してくれているからです｡
‫つまり､ ファイル名から中身を取り出しただけなのです｡
‫この長い､ 緊張感｡
‫素晴らしい｡
‫そこで次のステップ､ TensorFlowを使ってファイルを読み込む｡
‫画像に保存する｡
‫うん｡
‫画像をjpegにして時制にする｡
‫よし､ じゃあそうしよう｡
‫JPEG画像を3つのカラーチャンネルを持つ数値テンソルに変換する｡
‫赤い雨｡
‫ブルー
‫そしてまた､ ローディングイメージのドキュメントをチェックすることです｡
‫つまり､ この変数をここで再利用しているわけです｡
‫今度はそれをリセットしてb tfにします｡
‫イメージドットデコード｡
‫ここでは､ いくつかの選択肢をご紹介します｡
‫画像ファイルの種類はPNGを用意しました｡
‫画像はJPEG画像なのでJPEGを使用し､ それに変数を渡します｡
‫チャンネルは
‫Attaチャンネルは､ デコードされた画像に必要なカラーチャンネル数を示す｡
‫私たちの場合､ 3つ､ 4つ､ 赤､ 緑､ 青が欲しいのです｡
‫美しい｡
‫さて､ もう一度､ これが何をしているのか､ 正確に確認したいと思います｡
‫テンソルを取って､ tf dot image decodeしてみよう｡
‫JPEGです｡
‫テンソルを取って､ それからです｡
‫チャンネルは3つです｡
‫あ､ これ見てください｡
‫私たちがここに持っているのとまったく同じ種類のデータを持っているのです｡
‫素晴らしい｡
‫わかりました｡
‫さて､ 時間の節約のため､ この関数の中にもう2行ほど書きますが､
‫同様の手順は省略します｡
‫それが私の望みです｡
‫する練習をしてほしい｡
‫もし､ 機能を見て､ それが何をするものなのか興味を持ったなら｡
‫一行ずつ書き出してみて､ どうなるのか見てみましょう｡
‫だから､ このセリフの意味は､ 私を信じてほしい｡
‫そこで､ カラーチャンネルの値を変換します｡
‫これをノーマライゼーションと呼ぶのですね｡
‫先にコードを書いてから､ 0から2､ 55から0から1の値でお伝えします｡
‫だから私たちは､ イメージに等しいTFをイメージに変換するイメージd型イメージtfのフロート32を移動したい｡
‫さて､ docstringには何と書いてあるのでしょうか？
‫画像を d 型に変換し､ 必要に応じてその値をスケーリングする｡
‫浮動小数点数で表現される画像は､ 0から1の範囲の値を持つことが期待される｡
‫素晴らしい｡
‫さて､ どうやって？と思われるかもしれません｡
‫どうして知ってるんだ､ ダニエル？
‫ゼロから55まで､ ゼロと1の間に変換する必要があることを､ どうして知っているのですか？
‫実は､ 嘘なんです｡
‫それを見るつもりはないと言ったが､ これは調査するのがいい｡
‫ゼロから255までの値が入っているのがわかると思います｡
‫これを実行します｡
‫ああ､ いや､ 実はここで自分を混乱させたくないんです｡
‫これを再実行する｡
‫そこで､ これが何をしているのか､ 実演してみたいと思います｡
‫だから画像変換｡
‫つまり､ 基本的にやっていることは､ 値を変換して､ 0から255の間の値ではなく､ スケーリングすることです｡
‫今は､ 同じ尺度で0と1の間にある｡
‫フロート32｡
‫ああ｡
‫Freefloat 32.
‫素晴らしい｡
‫だから､ 同じ形をしているんです｡
‫しかし､ 今は0と2の間でも55の間でもなく､ 0と1の間になっているのです｡
‫そして今､ このようなプロセスによって､ これら上のコンピューティングがより効率的に行われるようになったのです｡
‫それが一番知りたいことです｡
‫それをノーマライゼーションといいます｡
‫また､ これはloading imagesのドキュメントからそのまま引用しています｡
‫さて､ 私たちは何をすればいいのでしょうか？
‫実は､ ここにはそのためのステップがなかったと思うんです｡
‫画像を正規化するために､ カラーチャンネルの値を0〜255から0〜1へ変換する必要があるかもしれません｡
‫5つにしてください｡
‫6つです｡
‫なるほど｡
‫さて､ いよいよ画像のリサイズです｡
‫さて､ もうそろそろ私のことも､ このラインが何をするものなのかも､ 信頼していただけると思います｡
‫だから､ 打ち出すことはしない｡
‫24にお任せします｡
‫24に｡
‫だから､ 基本的には正方形です｡
‫その通りです｡
‫実は正方形なんです｡
‫画像のリサイズを行います｡
‫指定された方法で画像をリサイズする｡
‫そして､ 今度は画像のサイズを変更したいのですが､ サイズはheightになります｡
‫待ってください｡
‫なぜ､ ここで定義するのか､ おわかりいただけたでしょうか｡
‫この関数をもう少しうまく書けば､ 画像サイズを画像サイズとして入力できるのかもしれません｡
‫その方が少しはマシかもしれませんね｡
‫素晴らしい｡
‫そして､ 今度は自分で関数を書き始めると､ このような練習ができるようになります｡
‫初めて関数を書くときは､ おそらくかなり下手くそになるでしょう｡
‫しかし､ その後､ ワークフローがわかってくると､ よりよい関数の書き方がわかってくるはずです｡
‫これで画像を返すことができるようになりました｡
‫では､ これは何を意味するのでしょうか？
‫今､ 私たちが言ったことをそのままやってくれているのでしょうか｡
‫画像パスと画像サイズを指定します｡
‫それをここで定義することができます｡
‫パス名から美しい画像ファイルを読み込む｡
‫JPEGを数値テンソルに変換する｡
‫つまり､ 赤､ 緑､ 青の3つのカラーチャンネルを持つテンソルに変換しているのです｡ これは､ ほとんどのディープラーニングの画像モデルで採用されている方法です｡
‫彼らは赤を欲しがっている｡
‫私は読めと言った｡
‫それが悪いというわけではありません｡
‫読書は素晴らしいことです｡
‫次に､ カラーチャンネルを0から55の値から0から1の値に変換し､ 最後に画像を希望する値にリサイズします｡
‫これは関数で書いたので､ 後でこれを使えるのがいいところです｡
‫これ､ 昔やったことあるんだよね｡
‫以前は､ 画像を処理するたびにこれらのコードラインを実行していましたが､ ひどいワークフローなので､ 実際にこれらを削除することができます｡
‫関数が実際に何を行っているかを確認したい場合は､ 一行ずつ分解していくことを忘れないでください｡
‫画像パスを入力とし､ 残りの処理を見る｡
‫さて､ 今回の動画はここまでとします｡
‫関数を作成し､ 画像を処理する準備ができました｡
‫今やりそうなことは､ やはりTensorFlowの読み込みデータを読み込むとしたら､ これだと思います｡
‫ああ､ ここを通って戻るんだ｡
‫この中に､ TensorFlowはバッチという形で物事を見るのが好きだという項目が少しあります｡
‫では､ どのようなバッチなのかは､ 次の動画で考えます｡