質問編集履歴

2 プレビューを見ておかしな部分が多々あったので正しい文章に書き替えました。

Nathalie_22

Nathalie_22 score 5

2018/11/27 14:13  投稿

顔画像をクラスタリングできるプログラムを作成したいです
### 前提・実現したいこと
今まででは国旗の画像をクラスタリングするプログラムを用いて国旗のクラスタリングを行っていました。
実現したいことは顔画像をクラスタリングできるようにプログラムを改良したいです
ここに質問の内容を詳しく書いてください。
実現したいことは顔画像をクラスタリングできるようにプログラムを改良したいです
Pythonの付属モジュール(Jupyter notebook)を用いています。OSはWindows 10です
以下がソースコードです
``````Python
import os
import shutil
import numpy as np
from PIL import Image
from skimage import data
import pandas as pd
from sklearn.cluster import KMeans
for path in os.listdir('C:/Clustering2/human_origin'):
   img=Image.open(f'C:/Clustering2/human_origin/{path}')
   img=img.convert('RGB')
   img_resize=img.resize((400,400))
   img_resize.save(f'C:/Clustering2/human_convert/{path}.jpg')
feature=np.array([data.imread(f'C:/Clustering2/human_convert/{path}') for path in os.listdir('C:/Clustering2/human_convert')])
feature=feature.reshape(len(feature),-1).astype(np.float64)
model=KMeans(n_clusters=15).fit(feature)
labels=model.labels_
for label,path in zip(labels,os.listdir('C:/Clustering2/human_convert')):
   os.makedirs(f"C:/Clustering2/human_group/{label}",exist_ok=True)
   shutil.copyfile(f"C:/Clustering2/human_origin/{path.replace('.jpg','')}",f"C:/Clustering2/human_group/{label}/{path.replace('.jpg','')}")
   print(label,path)
```
```■■な機能を実装中に以下のエラーメッセージが発生しました。
### 発生している問題・エラーメッセージ
クラスタリングした画像をフォルダ分けする際にエラーが発生します。  
```  
No such file or directory: 'C:/Clustering2/human_origin/img_136'
```
### 該当のソースコード  
```Python  
shutil.copyfile(f"C:/Clustering2/human_origin/{path.replace('.jpg','')}",f"C:/Clustering2/human_group/{label}/{path.replace('.jpg','')}")  
```  
### 試したこと
エラー文をみて、画像が問題だと思い、画像を変えてみましたが改善されませんでした。
追記(27/11/2018)  
国旗画像の場合では問題なく行えています。  
私の場合は顔画像をクラスタリングしたいのですが顔画像の場合だと上記エラーによりうまくいかなくなります。  
### 補足情報(FW/ツールのバージョンなど)
Python(Jupyter notebook)
使用ライブラリ 
scikit-learn
K-Means法を用いたクラスタリングを行っています。
  • Python

    19190 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1 回答ありがとうございます。 プログラムが正常に動くVersionのままだったのでエラーが起こっているプログラムに修正いたしました。 また、<code>のなかにプログラムを挿入しました。

Nathalie_22

Nathalie_22 score 5

2018/11/27 14:08  投稿

顔画像をクラスタリングできるプログラムを作成したいです
### 前提・実現したいこと
今まででは国旗の画像をクラスタリングするプログラムを用いて国旗のクラスタリングを行っていました。
実現したいことは顔画像をクラスタリングできるようにプログラムを改良したいです
ここに質問の内容を詳しく書いてください。
Pythonの付属モジュール(Jupyter notebook)を用いています。OSはWindows 10です
以下がソースコードです
``````Python  
import os
import shutil
import numpy as np
from PIL import Image
from skimage import data
import pandas as pd
from sklearn.cluster import KMeans
for path in os.listdir('C:/Clustering/flag_origin'):
   img=Image.open(f'C:/Clustering/flag_origin/{path}')
for path in os.listdir('C:/Clustering2/human_origin'):
   img=Image.open(f'C:/Clustering2/human_origin/{path}')
   img=img.convert('RGB')
   img_resize=img.resize((200,100))
   img_resize.save(f'C:/Clustering/flag_convert/{path}.jpg')
   img_resize=img.resize((400,400))
   img_resize.save(f'C:/Clustering2/human_convert/{path}.jpg')
feature=np.array([data.imread(f'C:/Clustering/flag_convert/{path}') for path in os.listdir('C:/Clustering/flag_convert')])
feature=np.array([data.imread(f'C:/Clustering2/human_convert/{path}') for path in os.listdir('C:/Clustering2/human_convert')])
feature=feature.reshape(len(feature),-1).astype(np.float64)
model=KMeans(n_clusters=15).fit(feature)
labels=model.labels_
for label,path in zip(labels,os.listdir('C:/Clustering/flag_convert')):
   os.makedirs(f"C:/Clustering/flag_group/{label}",exist_ok=True)
   shutil.copyfile(f"C:/Clustering/flag_origin/{path.replace('.jpg','')}",f"C:/Clustering/flag_group/{label}/{path.replace('.jpg','')}")
for label,path in zip(labels,os.listdir('C:/Clustering2/human_convert')):
   os.makedirs(f"C:/Clustering2/human_group/{label}",exist_ok=True)
   shutil.copyfile(f"C:/Clustering2/human_origin/{path.replace('.jpg','')}",f"C:/Clustering2/human_group/{label}/{path.replace('.jpg','')}")
   print(label,path)
■■な機能を実装中に以下のエラーメッセージが発生しました。
```
```■■な機能を実装中に以下のエラーメッセージが発生しました。
### 発生している問題・エラーメッセージ
クラスタリングした画像をフォルダ分けする際にエラーが発生します。
```
No such file or directory: 'C:/Clustering2/human_origin/img_136'
```
### 該当のソースコード
```Python
shutil.copyfile(f"C:/Clustering2/human_origin/{path.replace('.jpg','')}",f"C:/Clustering2/human_group/{label}/{path.replace('.jpg','')}")
```
### 試したこと
エラー文をみて、画像が問題だと思い、画像を変えてみましたが改善されませんでした。
### 補足情報(FW/ツールのバージョンなど)
Python(Jupyter notebook)
使用ライブラリ 
scikit-learn
K-Means法を用いたクラスタリングを行っています。
  • Python

    19190 questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る