La ruta del código para el progreso común de conjuntos de datos y redes neuronales

El ajuste continuo del siguiente código puede hacer que la red neuronal y el conjunto de datos progresen juntos

Inserte la descripción de la imagen aquíLa clasificación 5 se divide con éxito en 7 clasificaciones, es decir, la capacidad del modelo no se clasificará en esta categoría.
Sin embargo, las personas todavía usan el modelo para forzar las 5 clasificaciones de estas imágenes, por lo que es necesariamente inexacto.

Es decir, esta imagen no es ni clasificación 0 ni clasificación 1, pero las personas
solo reconocen 5 resultados después de entrenar el modelo y, naturalmente, solo hay 5 resultados. Aunque esta imagen no es ninguna, todavía se considerará como 5 categorías. Una, es decir, el modelo no está equivocado, pero redujo por la fuerza su rango y orientación. Es decir, los datos que proporcionó están anotados, solo los tipos que piensa, pero el modelo puede etiquetar completamente su Se encuentran todas las clasificaciones de,
pero si no lo visualiza, no sabe que hay varias categorías en las que no pensó en absoluto,
pero el modelo piensa en l, de
modo que el modelo realmente puede separarse, pero la voluntad humana ha causado que el modelo esté equivocado.
Entonces , el siguiente paso será corregir dichos errores y tomar el progreso común del modelo y el conjunto de datos
para resolver una gran cantidad de tiempo de etiquetado y el modelo no logra los resultados que los humanos desean.

La suma por encima de ella hacia arriba, hay algunos conjunto de datos de los datos que no necesitamos la clase
a continuación se retira

La siguiente figura es la red de datos de entrenamiento que permite la verdadera distribución de la clasificación de imágenes. Puede ver que este conjunto de datos debe etiquetarse como 7 tipos en
lugar de 5
tipos. Por lo tanto, las coordenadas de cualquiera de los dos puntos en la línea de segmentación de 7 tipos se incluyen en mi conjunto de datos En el método de categoría de corrección, divida el nivel de datos en 7 categorías, elimine las categorías que no deseamos, continúe usando el nivel de datos recién marcado o use el conjunto de datos de la eliminación miscelánea para
Inserte la descripción de la imagen aquíponer sus propias imágenes en el proyecto y cambie los datos en el readmist Procese el código
Genere un archivo txt de la etiqueta y la ruta de la imagen
Primero ejecute el
entrenamiento del código y luego ejecute la clasificación manual de datos en readminst cls_data ()
para obtener una clasificación similar a la que se muestra Inserte la descripción de la imagen aquí
en la figura. Use el mouse para seleccionar dos puntos en el espacio en blanco como la línea divisoria (en sentido horario) O viceversa, la línea divisoria debe estar al lado de la línea divisoria),
este formato

[3.35,-6.27,10.72,-22.7,8.56,-2.69,21.89,-3.40,9.37,2.08,22.34,4.95,7.75,6.38,17.57,15.95,6.12,9.25,12.28,19.05,-1.25,7.34,-8.1,21.92,-3.15,-5.79,-9.0,-17.15]

Después de grabar, cierre la imagen,
ingrese los datos anteriores en la consola
y se generará. Un archivo json, la dirección de la imagen se ha almacenado en la lista de acuerdo con la línea divisoria anterior, y finalmente solo la ruta debe leerse sola Sal y escribe otra
imagen y guárdala en el archivo correspondiente para completar, clasificación manual

El código está en
https://download.csdn.net/download/weixin_32759777/12328521

Puede usar el siguiente código para la segmentación manual

def get_path_and_dir(path):
    with open(path,"r") as f:
        data=json.load(f)
    for i ,one_path_list in enumerate(data["new_path_data"]):
        makedirs("image"+str(i))
        for one_path in one_path_list:
            with open(one_path,"rb") as f:
                data=f.read()
            with open("image"+str(i)+"/"+one_path.split("/")[-1],"wb") as f:
                f.write(data)

if __name__ == '__main__':
    # cls_data()
    get_path_and_dir("/home/chenyang/PycharmProjects/arc_face/new_data_path.json")

Inserte la descripción de la imagen aquíDespués de que la imagen no se encuentra clasificada por separado de acuerdo con la línea que divide en el mapa, pero de acuerdo con tal separada
examen encontró que la imagen delante de cada archivo son los mismos, es decir nuestra cls_data ()
para escribir un problema
Inserte la descripción de la imagen aquí
causa del problema es que todos Las imágenes serán más pequeñas que dos líneas AB

Entonces, toda la confusión se ve como círculos concéntricos, los
círculos concéntricos reales deben ser como se muestra
en la figura a continuación,
Inserte la descripción de la imagen aquí
así que reescribe
cls_data ()

Inserte la descripción de la imagen aquíBásicamente, se divide en cuatro casos, de acuerdo con la dirección de la imagen de arriba

división c_x_0 punto en la línea fuera del punto x x Guardar a partir
la línea de separación c_x_1 extremo exterior punto punto resta x x
x_0_1 dos líneas focales divisorias x
en x real_0 valor inicial a un valor de línea divisoria y
en el valor x Punto final línea divisoria y valor real_1
y valor real

c_x_0> x_0_1
c_x_1> x_0_1
y <real_1
y> real_0

c_x_1 <x_0_1 
 y>real_1
 y>real_0

c_x_0 <x_0_1
c_x_1> x_0_1
y <real_1
y <real_0

c_x_1 <x_0_1 
y>real_1
y<real_0

El código es el siguiente


def cls_data():
    data=dis_data()
    draw_json(data[0],data[1])
    print("请在图中输入分割线的坐标(线上两个点坐标共计四个值),保留两位小数")
    print("输入的线要按照分割的顺序输入")
    line_data=json.loads(input("请按照说明输入数据这样的格式[1,2,3,4,5,65]"))
    line_data=numpy.array(line_data).reshape(-1,4).tolist()
    k_b_list=[]
    cls_index_path=[]
    for xy in line_data:
        k_b = y_kx_b(xy)
        cls_index_path.append([])
        k_b_list.append(k_b)
    k_b_list.append(k_b_list[0])
    cls_index_path.append([])
    index_x=-1
    set_path=[]
    for x,y in zip(data[0],data[1]):
        try:
            index_x+=1
            k_b_index=0
            for _ in range(len(k_b_list)):
                k_b_index+=1
                real_0=k_b_list[k_b_index-1][0]*x+k_b_list[k_b_index-1][1]
                real_1=k_b_list[k_b_index][0]*x+k_b_list[k_b_index][1]
                c_x_0=k_b_list[k_b_index-1][2]
                c_x_1=k_b_list[k_b_index][2]
                x_0_1=(k_b_list[k_b_index][1]-k_b_list[k_b_index-1][1])/(k_b_list[k_b_index-1][0]-k_b_list[k_b_index][0])

                # c_x_0大于x_0_1的y>real_0否则y<real_0
                # 当c_x_0 >x_0_1 ,c_x_1 >x_0_1的y<real_1  c_x_1 <x_0_1 y>real_1
                # 当c_x_0 <x_0_1 ,c_x_1 >x_0_1的y<real_1  c_x_1 <x_0_1 y>real_1

                if c_x_0 >x_0_1:
                    if c_x_1 >x_0_1:
                        if y>real_0 and y<real_1:
                            if data[2][data[0].tolist().index(x)] in set_path:
                                continue
                            else:
                                set_path.append(data[2][data[0].tolist().index(x)])
                                cls_index_path[k_b_index].append(data[2][data[0].tolist().index(x)])
                    else:
                        if y>real_0 and y>real_1:
                            if data[2][data[0].tolist().index(x)] in set_path:
                                continue
                            else:
                                set_path.append(data[2][data[0].tolist().index(x)])
                                cls_index_path[k_b_index].append(data[2][data[0].tolist().index(x)])

                else:
                    if c_x_1 > x_0_1:

                        if y<real_0 and y<real_1:
                            if data[2][data[0].tolist().index(x)] in set_path:
                                continue
                            else:
                                set_path.append(data[2][data[0].tolist().index(x)])
                                cls_index_path[k_b_index].append(data[2][data[0].tolist().index(x)])
                    else:
                        if y<real_0 and y>real_1:
                            if data[2][data[0].tolist().index(x)] in set_path:
                                continue
                            else:
                                set_path.append(data[2][data[0].tolist().index(x)])
                                cls_index_path[k_b_index].append(data[2][data[0].tolist().index(x)])

            print(index_x)
        except:
            pass
    with open("new_data_path.json", "w", encoding="utf-8") as f:
        json.dump({"new_path_data":cls_index_path}, f, ensure_ascii=False)
    # q=[-4.70, -6.42, -15.51, -27.40,1.92, -2.72,7,14,2.21, 3.45,8.1, 15.37,-1.87, 3.86,-7.82, 17.64,-6.75, 7.35,-11.03,12.90,-9.57, 4.88,-19.60, 7.14,-8.40, -1.07,-21.84, -1.28]
    #将坐标
    q=[3.35,-6.27,10.72,-22.7,8.56,-2.69,21.89,-3.40,9.37,2.08,22.34,4.95,7.75,6.38,17.57,15.95,6.12,9.25,12.28,19.05,-1.25,7.34,-8.1,21.92,-3.15,-5.79,-9.0,-17.15,-3.42,-9.62,-9.18,-28]


Publicado 285 artículos originales · elogiado 89 · 2.48 millones de visitas

Supongo que te gusta

Origin blog.csdn.net/weixin_32759777/article/details/105380273
Recomendado
Clasificación