로컬에서 가져온 jpg 파일 그룹을 npy 형식의 데이터 집합으로 설정

안녕하세요.
오늘, 나는 비망록의 방법으로 현지에서 가져온 이미지 그룹의 데이터 집합을 사용하는 제작 방법을 총괄하고 싶다.
또 이번 데이터 집합은 열거했다Oxford-ⅢT Pets

Oxford-ⅢT Pets


옥스포드 대학이 공개한 동물 이미지 데이터 집합최대 37종.고양이계와 개계.

데이터 세트가 될 이미지 그룹 다운로드


위의 Oxford-Pets III 링크를 클릭하고 Dataset을 클릭하면 압축된 이미지 파일 그룹을 얻을 수 있습니다
///
해동법
///
압축을 풀면 jpg 파일이 많이 나타납니다.

탭의 내보내기 (수작업! 압도적인 수작업!!!)


프로그램에 라벨 일람표를 배열하다.이것과 일치하는 문자열 등으로 필터를 하기 때문에 여기를 줄이면 클래스 분류의 클래스 수를 조정할 수 있습니다

PETS = [
"Abyssinian",
"american_bulldog",
"american_pit_bull_terrier",
"basset_hound",
"beagle",
"Bengal",
"Birman",
"Bombay",
"boxer",
"British_Shorthair",
"chihuahua",
"Egyptian_Mau",
"english_cocker_spaniel",
"english_setter",
"german_shorthaired",
"great_pyrenees",
"havanese",
"japanese_chin",
"keeshond",
"leonberger",
"Maine_Coon",
"miniature_pinscher",
"newfoundland",
"Persian",
"pomeranian",
"pug",
"Ragdoll",
"Russian_Blue",
"saint_bernard",
"samoyed",
"scottish_terrier",
"shiba_inu",
"Siamese",
"Sphynx",
"staffordshire_bull_terrier",
"wheaten_terrier",
"yorkshire_terrier"]

이미지에 대한 PATH 기술
grob을 사용합니다.
file_type  = 'jpg'

img_list = glob.glob(r"./images/*.jpg")
변수를 정의합시다.
#全データ格納用
img_array_list = []
img_label_list = []

#教師用データ格納用
test_array_list = []
test_label_list = []

#学習データ格納用
teach_array_list = []
teach_label_list = []

폴더에서 파일 이름의 문자열을 모두 핥은 후 PETS 배열의 인덱스를 탭으로 적용합니다.
for img in img_list:
    for i in PETS:
        if(i in img):
            #print(i)
            #print(img)すると、一致しているのがわかるが、長いのでオススメしない
            img_label_list.append(PETS.index(i))

    imgcv = plt.imread(img)
    # 画像の大きさを取得
    temp_img = load_img(img,grayscale=False,target_size=(imgcv.shape[0],imgcv.shape[1]))
    temp_img_array = img_to_array(temp_img) /255
    img_array_list.append(temp_img_array)
그나저나 댓글을 빼면 이런 상황이 생길 수 있다.
Egyptian_Mau
./images/Egyptian_Mau_167.jpg
pug
./images/pug_52.jpg
basset_hound
./images/basset_hound_112.jpg
Siamese
그리고 학급당 20장씩(몇 장도 괜찮아요. 좋은 비율이 있으면 알려주세요)
교사의 데이터를 삽입하다.
#各クラス20枚ずつ取り出して教師用データにする。
# 20*37 = 740
# 学習データ3050枚、教師データ740枚にわけたい
j=0
for j in range(37):
    for i in range(len(img_label_list)):   
        while(teach_label_list.count(j) <=20):
            teach_label_list.append(img_label_list.pop(i))
            teach_array_list.append(img_array_list.pop(i))
        continue

test_label_list = img_label_list
test_array_list = img_array_list
역시 데이터로는 부족할 것 같으니 37개 반으로 분류하지 않는 게 좋을 것 같아요, 웃음.
참고로 Length 검사
print(len(teach_array_list))
print(len(teach_label_list))
print(len(test_label_list))
print(len(test_array_list))
#1180
#1180
#6210
#6210
모두 7390장입니다. (전 200장, 9장 적은 반은 1개 반, 1장 적은 반은 1개 반입니다.)오케이 같은데.
그리고 완성된 목록을 빈 그룹으로 설정합니다
test_array_listnp = np.array(teach_array_list)#教師データ
test_label_listnp = np.array(teach_label_list)#教師ラベル
train_array_listnp = np.array(test_array_list)#学習データ
train_label_listnp = np.array(test_label_list)#学習ラベル
np.save npy 파일로 완성!여긴 무거워요
np.save('test_array.npy',test_array_listnp)
np.save('test_label.npy',test_label_listnp)
np.save('train_array.npy',train_array_listnp)
np.save('train_label.npy',train_label_listnp)
몇 번 하면 주소 공간에서 확보하지 못해 목록이 비어 있는 경우가 많아요!무슨 해결책이 있으면 알려주세요!
아직 검증이 안 됐습니다.만약 결과가 없다면 우선 데이터 집합을 말해 보세요.

좋은 웹페이지 즐겨찾기