[PYTHON] Wollen Sie nicht sagen, dass Sie ein Gesichtserkennungsprogramm erstellt haben?

Gesichtserkennung in der Zeit

"Shenzhen" ist eine der am stärksten von der IT entwickelten Städte in China. Nach dem, was ich höre, können Sie Zahlungen tätigen, indem Sie einfach Ihr Gesicht von Zahlungen im Supermarkt bis zu Verkaufsautomaten halten. Ob es gut oder schlecht ist, es ist erstaunlich. Es ist futuristisch und cool. Dann mach mich auch! Ich habe es letztes Jahr mit einem Kleber wie w gemacht, aber ich konnte es nicht zu einem Artikel machen, also habe ich beschlossen, es dieses Mal zu machen. Das diesmal eingeführte System und Programm sind die ersten Werke, die Python richtig berührt haben, und die ersten denkwürdigen Werke, die das maschinelle Lernen berührt haben.

Überblick

Nehmen Sie ein Bild Ihres Gesichts mit der Kamera Ihres PCs auf, verarbeiten und blasen Sie das Bild mit der Bibliothek OpenCV auf und erstellen Sie dann ein Programm zur Identifizierung der Person, indem Sie das Gesicht mit traincascade lernen. Die verwendete Sprache war Python3.

Programmablauf

Dieses Mal haben wir zwei Arten der Gesichtsbildverarbeitung erstellt: das Lernprogramm und das Gesichtserkennungsprogramm.

Gesichtsbildverarbeitung, Programmablauf lernen

① Starten Sie die PC-Kamera mit der Videoaufnahme (2) Speichern Sie 40 im Gesicht erkannte Bilder als Bilder ③ Fügen Sie 40 Bilder in verschiedenen Formen hinzu, um die Trainingsdaten zu erhöhen ④ Generieren Sie einen Lernbefehl ⑤ Geben Sie den generierten Befehl in die Konsole ein, um mit dem Lernen zu beginnen. ⑥ Generieren Sie nach Abschluss des Lernens eine Kaskadendatei

Ablauf des Gesichtserkennungsprogramms

① Lesen Sie die Kaskadendatei des Registranten (2) Führen Sie jeden Frame durch eine Kaskadendatei, um Personen zu identifizieren.

Ordnerstruktur

Gesichtsbildverarbeitung, Lernprogramm

face_learner/
         ├─face_learner.py
         ├─haarcascade_frontalface_default.xml
         ├─neg.txt
         ├─pos.txt
         ├─cascade/
         ├─neg/
             ├─neg1.jpg
             ├─neg2.jpg
             ├─neg3.jpg
              …
             └─neg265.jpg
         ├─pic/
             ├─pic1.jpg
             ├─pic2.jpg
             ├─pic3.jpg
              …
             └─pic1639.jpg
         └─pos.vec

Diese Ordnerstruktur besteht nur aus den Dateien rund um das Lernprogramm. Das Personalidentifikationsprogramm ist nicht enthalten.

Programmbeschreibung (Lernprogramm)

Bitte lesen Sie den Kommentar für den Teil des Quellcodes, den Sie leicht machen können. .. Zum Lernen sind zwei Arten von korrektem Bild (positives Bild) und falschem Bild (negatives Bild) erforderlich. Das richtige Bild ist das Gesichtsbild, das Sie lernen möchten, und Sie benötigen außerdem Koordinateninformationen darüber, wo sich das Gesicht im Bild befindet. Das falsche Antwortbild kann alles andere als das richtige Antwortbild sein. Dieses Mal werden 265 niedliche Tierbilder vorbereitet und im Voraus im Negativverzeichnis gespeichert. スクリーンショット 2019-11-19 18.35.33.png

Wir beginnen mit dem Sammeln dieser korrekten Bilder. Um das richtige Antwortbild zu erhalten, nehmen Sie zuerst 40 Gesichtsbilder auf und erhöhen Sie dann die Zahl auf etwa 1640, um die Lerngenauigkeit zu verbessern. Je größer die Anzahl der korrekten Bilder ist, desto höher ist die Lerngenauigkeit. Daher ist es ratsam, die Anzahl entsprechend zu erhöhen. Ich habe das Gefühl, dass es eine Konsultation mit den PC-Spezifikationen gibt. Da Sie ein neues Gesicht lernen, müssen Sie alle unnötigen Daten löschen, die Sie zuvor verwendet haben. Sie sollten hier klug damit umgehen können (lacht). Das Sammeln von Gesichtsbildern ist der Hauptzweck dieses Programms. Unter Verwendung der vorinstallierten Kaskadendatei zur Gesichtserkennung wird das Gesicht erkannt und zuerst werden 40 Gesichtsbilder aufgenommen. Beginnen Sie von hier aus mit dem Hinzufügen von Wasser. Die Zugabe von Wasser erfolgt durch Hinzufügen verschiedener Zusätze zum Bild. Es scheint, dass es in diesem Teil bereits ein Tool gibt, daher ist es absolut schnell, es zu verwenden. Dieses Mal habe ich auch meine eigene Programmierpraxis gemacht.

[Art der Bildänderung] • Horizontal spiegeln • Ändern Sie die Sättigung • Ändern Sie den Kontrast • Ändern Sie die Helligkeit • Schärfeänderung • ± 15 Grad Drehung

Hier gibt es viel Raum für Verbesserungen bei der Verarbeitung. Zuallererst ist es absolut gut, jedes Verarbeitungsteil funktionsfähig zu machen. In diesem Programm wird die Anzahl der Fotos jedes Mal gezählt und hinzugefügt, daher ist es besser, sie etwas intelligenter anzuwenden. Nach dem Sammeln der Bilder muss eine Textdatei erstellt werden, in der die Informationen des richtigen Bildes zusammengefasst sind. Dies ist der Pfad der Bilddatei, welcher Teil des Bildes das Gesicht hat, und die Koordinateninformationen des vierseitigen Vierecks, das den Teil mit dem Gesicht umgibt. Das Format ist [Anzahl der Pfadflächen Koordinaten (x) Koordinaten (y) Koordinaten (w) Koordinaten (h)]. w ist die Breite und h ist die Höhe. Ein Beispiel ist unten gezeigt.

pos.txt


pic/pic1389.jpg 1 454 328 547 547
pic/pic302.jpg 1 565 85 380 380
pic/pic464.jpg 1 947 389 31 31
pic/pic470.jpg 1 663 238 341 341
pic/pic1438.jpg 1 658 341 540 540
pic/pic316.jpg 1 620 88 376 376
pic/pic1376.jpg 1 795 414 376 376
pic/pic1410.jpg 1 476 408 379 379
pic/pic1404.jpg 1 497 394 383 383
pic/pic1362.jpg 1 754 400 372 372
pic/pic869.jpg 1 625 235 420 420
pic/pic855.jpg 1 380 185 381 381
pic/pic666.jpg 1 361 241 424 424
pic/pic100.jpg 1 312 91 360 360
pic/pic64.jpg 1 622 101 371 371
pic/pic114.jpg 1 279 84 375 375
pic/pic70.jpg 1 618 89 382 382
pic/pic672.jpg 1 1213 216 43 43
pic/pic672.jpg 1 369 274 385 385
pic/pic882.jpg 1 721 313 353 353
.
.
.

Nachdem Sie den Text generiert haben, müssen Sie nur noch den Befehl generieren. Zunächst ein Befehl zum Konvertieren in eine Vektordatei unter Verwendung der Informationen des richtigen Bildes. Der nächste Befehl zum Lernen. Python kann Linux-Befehle aus Python-Programmen wie den Funktionen os.system () und subprocess.call () ausführen, aber ich habe sie nicht erhalten, damit ich sie manuell ausführen kann. Ich versuche einen Befehl zu generieren. Wenn mir jemand etwas über diesen Teil erzählen kann, werde ich studieren! Wenn das Lernen abgeschlossen ist, wird die Datei cascade.xml im Kaskadenverzeichnis erstellt. Lesen Sie sie, um die Person zu identifizieren. Es ist einfacher zu verstehen, ob der Dateiname ein individueller Name ist.

Programmbeschreibung (Diskriminierungsprogramm)

Hierbei wird die zuvor erstellte Kaskadendatei verwendet, um Personen zu identifizieren. Die einzige von diesem Programm geladene Bibliothek ist OpenCV (cv2). Führen Sie den von der Kamera aufgenommenen Rahmen jedes Mal durch die Kaskadendatei. Wenn das Gesicht angehoben wird, schließen Sie den geschlossenen Teil mit einem Rahmen ein. Erstens, wenn das Gesicht einer Person erkannt wird, ist es von einem weißen Rahmen umgeben, und wenn eine Person erkannt wird, ist es von einem blauen Rahmen umgeben, und der Name wird darauf gezeichnet.

S__24559619.jpg

Mit diesem Gefühl können Sie Personen in Echtzeit mit einer Kamera identifizieren!

Aktuelles Programm

Ich bin wirklich zurückhaltend, schmutzigen Code freizulegen, aber ich bin sicher, dass es helfen wird, und ich werde den gesamten Code veröffentlichen. Bitte beachten Sie, dass es lang genug ist, um zu sterben.

Bildersammlung + Lernprogramm

face_leaner.py


import os
import re
import numpy as np
import time
import glob
import shutil
import PIL.Image
from PIL import ImageEnhance
import subprocess
import cv2

#uer_name = input("Who are you")
cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

#----------------------------------------------
#mov, pic,Klar pos

os.chdir('cascade')
for x in glob.glob('*.xml'):
    os.remove(x)

os.chdir('../')
os.chdir('pic')
for x in glob.glob('*.jpg'):
    os.remove(x)

os.chdir('../')
os.chdir('pos')
for x in glob.glob('*.jpg'):
    os.remove(x)

os.chdir('../')
os.remove('pos.txt')
#----------------------------------------------
#pos.Erstellen Sie txt
f = open('pos.txt', 'a')

#----------------------------------------------
#Sammeln Sie Gesichtsbilder
cap = cv2.VideoCapture(0)
cascade_path1 = "haarcascade_frontalface_default.xml"
cascade_path2 = 'lbpcascade_profileface.xml'
cascade1 = cv2.CascadeClassifier(cascade_path1)
cascade2 = cv2.CascadeClassifier(cascade_path2)
color = (255,255,255)
picture_num = 1
while True:
    ret, frame = cap.read()
    facerect1 = cascade1.detectMultiScale(frame, scaleFactor=1.7, minNeighbors=4, minSize=(100,100))
    font = cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(frame, str(picture_num), (10,500), font, 4,(0,0,0),2,cv2.LINE_AA)
    if len(facerect1) > 0:
        for (x,y,w,h) in facerect1:
            #cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
            picture_name = 'pic/pic' + str(picture_num) + '.jpg'
            cv2.imwrite(picture_name, frame)
            #text = picture_name + ' 1 ' + str(x) + ' ' + str(y) + ' ' + str(w) + ' ' + str(h) + '\n'
            #f.write(text)
            picture_num = picture_num + 1
    cv2.imshow("frame", frame)
    if picture_num == 41:
        break
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
cv2.destroyAllWindows()

#----------------------------------------------
#Starten Sie das Auffüllen
#Zählen Sie die Anzahl der Bilder in Bildern
dir = os.getcwd()
dirPic = dir + "/pic"
files = os.listdir(dirPic)
count = 0
for file in files:
    count = count + 1
os.chdir('pic')
#Anzahl der Fotos
imageNum = count
#Horizontal spiegeln
for num in range(1, count+1):
    name = 'pic' + str(num) + '.jpg'
    if os.path.exists(name) :
        pass
    else :
        continue
    if os.path.getsize(name) == 0:
        os.remove(name)
        continue
    img = cv2.imread(name)
    yAxis = cv2.flip(img, 1)
    newName = 'pic' + str(imageNum) + '.jpg'
    cv2.imwrite(newName,yAxis)
    imageNum = imageNum + 1
print('OK')
print('NEXT STAGE')

#Zählen Sie die Anzahl der Fotos
dir = os.getcwd()
files = os.listdir(dir)
count = 0
for file in files:
    count = count + 1
print(count)

#Anzahl der Fotos
imageNum = count
#Fix imageNum
picNum = imageNum


SATURATION = 0.5
CONTRAST = 0.5
BRIGHTNESS = 0.5
SHARPNESS = 2.0
#Sättigung ändern
for num in range(1, count+1):
    name = 'pic' + str(num) + '.jpg'
    if os.path.exists(name) :
        pass
    else :
        print('NO')
        continue
    if os.path.getsize(name) == 0:
        os.remove(name)
        continue
    img = PIL.Image.open(name)
    saturation_converter = ImageEnhance.Color(img)
    saturation_img = saturation_converter.enhance(SATURATION)
    newName = 'pic' + str(imageNum) + '.jpg'
    saturation_img.save(newName)
    imageNum = imageNum + 1
print('OK')
print('NEXT STAGE')

#Zählen Sie die Anzahl der Fotos
dir = os.getcwd()
files = os.listdir(dir)
count = 0
for file in files:
    count = count + 1
print(count)

#Anzahl der Fotos
imageNum = count

count = picNum
#Ändern Sie den Kontrast
for num in range(1, count+1):
    name = 'pic' + str(num) + '.jpg'
    if os.path.exists(name) :
        pass
    else :
        print('NO')
        continue
    if os.path.getsize(name) == 0:
        os.remove(name)
        continue
    img = PIL.Image.open(name)
    contrast_converter = ImageEnhance.Contrast(img)
    contrast_img = contrast_converter.enhance(CONTRAST)
    newName = 'pic' + str(imageNum) + '.jpg'
    contrast_img.save(newName)
    imageNum = imageNum + 1
print('OK')
print('NEXT STAGE')

#Zählen Sie die Anzahl der Fotos
dir = os.getcwd()
files = os.listdir(dir)
count = 0
for file in files:
    count = count + 1
print(count)

#Anzahl der Fotos
imageNum = count

count = picNum
#Ändern Sie die Helligkeit
for num in range(1, count+1):
    name = 'pic' + str(num) + '.jpg'
    if os.path.exists(name) :
        pass
    else :
        print('NO')
        continue
    if os.path.getsize(name) == 0:
        os.remove(name)
        continue
    img = PIL.Image.open(name)
    brightness_converter = ImageEnhance.Brightness(img)
    brightness_img = brightness_converter.enhance(BRIGHTNESS)
    newName = 'pic' + str(imageNum) + '.jpg'
    brightness_img.save(newName)
    imageNum = imageNum + 1
print('OK')
print('NEXT STAGE')

#Zählen Sie die Anzahl der Fotos
dir = os.getcwd()
files = os.listdir(dir)
count = 0
for file in files:
    count = count + 1
print(count)

#Anzahl der Fotos
imageNum = count

count = picNum
#Schärfe ändern
for num in range(1, count+1):
    name = 'pic' + str(num) + '.jpg'
    if os.path.exists(name) :
        pass
    else :
        print('NO')
        continue
    if os.path.getsize(name) == 0:
        os.remove(name)
        continue
    img = PIL.Image.open(name)
    sharpness_converter = ImageEnhance.Sharpness(img)
    sharpness_img = sharpness_converter.enhance(SHARPNESS)
    newName = 'pic' + str(imageNum) + '.jpg'
    sharpness_img.save(newName)
    imageNum = imageNum + 1
print('OK')
print('NEXT STAGE')

#Zählen Sie die Anzahl der Fotos
dir = os.getcwd()
files = os.listdir(dir)
count = 0
for file in files:
    count = count + 1
print(count)

#Anzahl der Fotos
imageNum = count
#Fix imageNum
picNum = imageNum

#15 Grad Drehung
for num in range(1, count+1):
    name = 'pic' + str(num) + '.jpg'
    if os.path.exists(name) :
        pass
    else :
        print('NO')
        continue
    if os.path.getsize(name) == 0:
        os.remove(name)
        continue
    #Bild wird geladen
    img = cv2.imread(name)
    h, w = img.shape[:2]
    size = (w, h)

    #Drehwinkel festlegen
    angle = 15
    angle_rad = angle/180.0*np.pi

    #Berechnen Sie die Bildgröße nach der Drehung
    w_rot = int(np.round(h*np.absolute(np.sin(angle_rad))+w*np.absolute(np.cos(angle_rad))))
    h_rot = int(np.round(h*np.absolute(np.cos(angle_rad))+w*np.absolute(np.sin(angle_rad))))
    size_rot = (w_rot, h_rot)

    #Drehen Sie um die Mitte des Originalbilds
    center = (w/2, h/2)
    scale = 1.0
    rotation_matrix = cv2.getRotationMatrix2D(center, angle, scale)

    #Parallele Bewegung hinzufügen(rotation + translation)
    affine_matrix = rotation_matrix.copy()
    affine_matrix[0][2] = affine_matrix[0][2] -w/2 + w_rot/2
    affine_matrix[1][2] = affine_matrix[1][2] -h/2 + h_rot/2

    img_rot = cv2.warpAffine(img, affine_matrix, size_rot, flags=cv2.INTER_CUBIC)

    cv2.imwrite(newName, img_rot)
    newName = 'pic' + str(imageNum) + '.jpg'
    saturation_img.save(newName)
    imageNum = imageNum + 1
print('OK')
print('NEXT STAGE')

#Zählen Sie die Anzahl der Fotos
dir = os.getcwd()
files = os.listdir(dir)
count = 0
for file in files:
    count = count + 1
print(count)

#Anzahl der Fotos
imageNum = count

#-15 Grad Drehung
for num in range(1, count+1):
    name = 'pic' + str(num) + '.jpg'
    if os.path.exists(name) :
        pass
    else :
        print('NO')
        continue
    if os.path.getsize(name) == 0:
        os.remove(name)
        continue
    #Bild wird geladen
    img = cv2.imread(name)
    h, w = img.shape[:2]
    size = (w, h)

    #Drehwinkel festlegen
    angle = -15
    angle_rad = angle/180.0*np.pi

    #Berechnen Sie die Bildgröße nach der Drehung
    w_rot = int(np.round(h*np.absolute(np.sin(angle_rad))+w*np.absolute(np.cos(angle_rad))))
    h_rot = int(np.round(h*np.absolute(np.cos(angle_rad))+w*np.absolute(np.sin(angle_rad))))
    size_rot = (w_rot, h_rot)

    #Drehen Sie um die Mitte des Originalbilds
    center = (w/2, h/2)
    scale = 1.0
    rotation_matrix = cv2.getRotationMatrix2D(center, angle, scale)

    #Parallele Bewegung hinzufügen(rotation + translation)
    affine_matrix = rotation_matrix.copy()
    affine_matrix[0][2] = affine_matrix[0][2] -w/2 + w_rot/2
    affine_matrix[1][2] = affine_matrix[1][2] -h/2 + h_rot/2

    img_rot = cv2.warpAffine(img, affine_matrix, size_rot, flags=cv2.INTER_CUBIC)

    cv2.imwrite(newName, img_rot)
    newName = 'pic' + str(imageNum) + '.jpg'
    saturation_img.save(newName)
    imageNum = imageNum + 1
print('OK')
print('NEXT STAGE')

#Zählen Sie die Anzahl der Fotos
dir = os.getcwd()
files = os.listdir(dir)
count = 0
for file in files:
    count = count + 1
print(count)
print('OK')
print('COMPLETE')

#------------------------------------------------------
#Erstellung von Textdateien
#cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
#os.chdir('pic')
for num in glob.glob('*.jpg'):
    img = cv2.imread(num)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = cascade.detectMultiScale(gray)
    for (x,y,w,h) in faces:
        text = 'pic/' + num + ' 1 ' + str(x) + ' ' + str(y) + ' ' + str(w) + ' ' + str(h) + '\n'
        f.write(text)

cmd = 'opencv_createsamples -info pos.txt -vec pos.vec -num ' + str(count)
print(cmd)

cmd = 'opencv_traincascade -data ./cascade -vec pos.vec -bg neg.txt -numPos 1500 numNeg 255'
print(cmd)

print('COMPLETE.')

Programm zur persönlichen Identifizierung

face_id.py


# coding: utf-8

import cv2

font = cv2.FONT_HERSHEY_SIMPLEX

if __name__ == "__main__":
    cap = cv2.VideoCapture(0)
    cascade_path_human = 'haarcascade_frontalface_default.xml'
    cascade_path_hirosugu = "cascade_hirosugu.xml"
    cascade_path_kenta = 'cascade_kenta.xml'

    cascade_hirosugu = cv2.CascadeClassifier(cascade_path_hirosugu)
    cascade_human = cv2.CascadeClassifier(cascade_path_human)
    cascade_kenta = cv2.CascadeClassifier(cascade_path_kenta)

    color = (255,0,0)

    while True:
        ret, frame = cap.read()

        facerect_human = cascade_human.detectMultiScale(frame, scaleFactor=1.7, minNeighbors=4, minSize=(100,100))
        facerect_hirosugu = cascade_hirosugu.detectMultiScale(frame, scaleFactor=1.7, minNeighbors=4, minSize=(100,100))
        facerect_kenta = cascade_kenta.detectMultiScale(frame, scaleFactor=1.7, minNeighbors=4, minSize=(100,100))

        if len(facerect_human) > 0:
            for rect in facerect_human:
                cv2.rectangle(frame, tuple(rect[0:2]), tuple(rect[0:2]+rect[2:4]), (255,255,255), thickness=2)


        if len(facerect_hirosugu) > 0:
            for rect in facerect_hirosugu:
                cv2.rectangle(frame, tuple(rect[0:2]), tuple(rect[0:2]+rect[2:4]), color, thickness=2)
                cv2.putText(frame, 'Hirosugu Takeshita', tuple(rect[0:2]), font, 2,(0,0,0),2,cv2.LINE_AA)


        if len(facerect_kenta) > 0:
            for rect in facerect_kenta:
                cv2.rectangle(frame, tuple(rect[0:2]), tuple(rect[0:2]+rect[2:4]), color, thickness=2)
                cv2.putText(frame, 'Kenta Suzuki', tuple(rect[0:2]), font, 2,(0,0,0),2,cv2.LINE_AA)

        cv2.imshow("frame", frame)

        #Drücken Sie die Taste q, um die Schleife zu beenden
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break

    cap.release()
    cv2.destroyAllWindows()

Übrigens wird empfohlen, die generierte Kaskadendatei (.xml-Lerndatei) in dieselbe Hierarchie wie das Gesichtserkennungsprogramm zu stellen!

Schließlich

Richtig? Ist es nicht einfach Dies ist ein Müllprogramm für Profis! Sie mögen das denken, aber Sie können sich selbst als Ese ML-Ingenieur bezeichnen. Wenn dies zutrifft, wird die Genauigkeit weiter verbessert, wenn Sie die Feature-Extraktion durchführen und die NN selbst schreiben (ich weiß es nicht, weil ich damit nicht so vertraut bin).

Es gibt auch viele Artikel über OpenCV. Bitte lesen Sie auch diesen Artikel. Da dieser Artikel nur eine ziemlich dünne Spur ist, wird empfohlen, dass Sie den detaillierten Mechanismus und andere Befehle während des Lernens gründlich untersuchen.

Nun, diesmal ist es eine individuelle Diskriminierung durch maschinelles Lernen, deshalb habe ich sie gebeten, nur das Wissen zurückzubringen, dass es einfacher wäre, Gesichtsbilder auf diese Weise zu sammeln, und ich werde eine genauere Gesichtserkennung erstellen und sie einführen. Ich wäre dankbar, wenn Sie ... könnten!

Vielen Dank für das Lesen für eine lange Zeit!

Recommended Posts

Wollen Sie nicht sagen, dass Sie ein Gesichtserkennungsprogramm erstellt haben?
Ich habe ein Programm erstellt, um Sie per LINE zu benachrichtigen, wenn Schalter eintreffen
Wenn Sie Word Cloud erstellen möchten.
Ich möchte keinen Codierungstest machen
Soll ich diese Kopie reparieren?
Ich möchte ein Programm ausführen und verteilen, das die Größe von Bildern in Python3 + Pyinstaller ändert
Fragen Sie nicht "Sind Sie sicher, dass Sie die Verbindung fortsetzen möchten?"
Ich habe ein System erstellt, mit dem Sie nur durch einen Anruf twittern können
Wenn Sie in der for-Anweisung plt.save möchten
Ich möchte sagen, dass es eine Datenvorverarbeitung gibt ~
Wenn Sie die mathematischen Symbole nicht verstehen, können Sie ein Programm schreiben.
[Django] Memorandum, wenn Sie asynchron kommunizieren möchten [Python3]
Ich habe eine verdammte App gemacht, mit der du nicht überspringen kannst
Wenn Sie einen UNIX-Befehl in Python ausführen möchten
Ich habe Sie dazu gebracht, Befehle über einen WEB-Browser auszuführen
Ich habe ein Drehbuch gemacht, um bei meinem Koshien Hallo zu sagen
[Unterprozess] Wenn Sie ein anderes Python-Programm in Python-Code ausführen möchten
Ich habe versucht, ein Programm zu erstellen, um die Fehlersuche von Saiseriya zu lösen (Hinweis)
Wenn Sie Datenwissenschaftler werden möchten, beginnen Sie mit Kaggle
Schreiben Sie Python nicht, wenn Sie es mit Python beschleunigen möchten
Ich möchte einen Platzhalter verwenden, den ich mit Python entfernen möchte
Ich habe ein Programm erstellt, das die Fehlersuche in Sekunden löst
Qiskit: Ich möchte eine Schaltung erstellen, die beliebige Zustände erzeugt! !!
Wenn Sie einer Variablen in Python einen CSV-Export zuweisen möchten
Schreiben Sie ein Programm, das das Programm missbraucht und 100 E-Mails sendet
Wenn Sie eine mehrdimensionale Liste nach mehreren Zeilen sortieren möchten
Erstellt einen Dienst, mit dem Sie J-League-Daten durchsuchen können
Ich habe ein Programm erstellt, das den Tierkreis mit tkinter automatisch berechnet
[Python] Ein Programm, das den Inhalt der Liste nach links dreht
Beachten Sie, dass Sie die im Django-Vorlagenformular übergebenen Parameter Element für Element manuell dekorieren möchten
[AtCoder für Anfänger] Sprechen Sie über den Rechenaufwand, den Sie grob wissen möchten
Wichtige Operationen, die Sie wissen möchten
[Python] Ich habe einen Dekorateur gemacht, der keinen Nutzen zu haben scheint.
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
[Python] Ein Programm, das die Anzahl der gepaarten Socken berechnet
Ein Hinweis, mit dem Sie die Python-Umgebung von Pineapple mit pyenv ändern können
Wenn Sie eine Spalte spaltenweise durch einen fehlenden Wert (NaN) ersetzen möchten
Ich habe mit dem Lernprogramm TensorFlow --⑥ einen Dir en grey face-Klassifikator erstellt
[Python] Wenn Sie ein Streudiagramm mehrerer Cluster zeichnen möchten
Ein Programm, das "Takenoko no Sato" automatisch zu "Kinoko no Yama" "korrekt" korrigiert.
Ein Shell-Skript, um sich wieder an die pipenv-Shell zu erinnern
Ich habe ein Programm erstellt, um einzugeben, was ich gegessen habe, und um Kalorien und Zucker anzuzeigen
Ich habe eine Bibliothek konoha gemacht, die den Tokenizer auf ein schönes Gefühl umstellt
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
[Python3] Code, der verwendet werden kann, wenn Sie ein Bild in einer bestimmten Größe ausschneiden möchten
Wenn Sie eine Windows-App (exe) erstellen möchten, die jetzt nur mit Python verwendet werden kann