постройте несколько изображений из категорий классификации

#python #deep-learning

Вопрос:

Здравствуйте, я делаю множественную классификацию изображений, и я хочу построить 3 изображения из каждой категории вот код

 i=0
labels=[]

for label in y_train:
    if not label in labels :
        labels.append(label)
        print("Category  : ", y_train[i])
        plt.imshow(plt.imread(train_dir "/" train_files[i]))
        plt.show()
    i =1
    if len(labels)==11:
       break 
print('[INFO] done')
 

этот код отображает только одно изображение из каждой категории, как я могу изменить его, чтобы отобразить 3 изображения из 11 категорий.
Я новичок во всем этом.
Спасибо

Ответ №1:

вы можете использовать диктант вместо списка:

 import matplotlib.pyplot as plt
i=0
labels={}
y_train = ['a','b','c','a','b','c','a','b','c','a','b','c','a','b','c']
for label in y_train:
    if not label in labels :
        labels[label] = 0
    else:
        labels[label]  = 1
    if labels[label] <3:
        print("Category  : ", y_train[i])
        #plt.imshow(plt.imread(train_dir "/" train_files[i]))
        plt.plot(1,1,'ko')
        plt.text(1,1,f'{label} --> plot {labels[label]}')
        plt.show()
    i =1
    if len(labels)==11:
       break 
print('[INFO] done')
 

Согласно вашему комментарию. Если вы хотите, чтобы они были на одном участке, и они не отображаются отсортированными, и вы заранее не знаете, сколько у вас меток и участков, вам нужен такой двухэтапный процесс, как этот.

 import matplotlib.pyplot as plt
i=0
mydict={}
y_train = ['a','b','c','a','b','c','a','b','c','a','b','c','a','b','c']
for label in y_train:
    if not label in mydict :
        mydict[label] = {}
    if len (mydict[label]) < 3:
        print(f"Storing data for {label} image {len(mydict[label])}")
        image_No = len(mydict[label])
        mydict[label][image_No] = {}
        mydict[label][image_No]["xdata"] = 1
        mydict[label][image_No]["ydata"] = 1


for label in mydict:
    plt.figure()
    for im in mydict[label]:
        plt.subplot(1,3,im 1)
        plt.plot(mydict[label][im]["xdata"],mydict[label][im]["xdata"],'ko')
        plt.text(mydict[label][im]["xdata"],mydict[label][im]["xdata"],label)
    plt.show()
 

Комментарии:

1. Это вроде как работает, но мне нужно, чтобы он показывал 3 изображения из одних и тех же категорий в одном ряду, я не знаю, ясно ли это