Ich bin ein professioneller Student, ungefähr 20 Jahre alt. Es ist ein Jahr her, seit ich eine Berufsschule betreten habe. Ich hatte noch nie vor dem Eintritt in eine Berufsschule programmiert. Nachdem ich die Grundlagen von Python gelernt habe, möchte ich lernen, während ich verschiedene Dinge mache!
Ich habe hier auf discord.py verwiesen. https://qiita.com/mizunana/items/4afddc71f37df555078e Informationen zu CustomVision und OpenVINO finden Sie hier. https://github.com/hiouchiy/IntelAI_and_Cloud/blob/master/Azure/demo1/Lesson1_AzureCognitiveService_and_OpenVINO_Collaboration.ipynb
class Model(object):
def __init__(self):
self.labels = []
labels_filename = "labels.txt"
# Create a list of labels.
with open(labels_filename, 'rt') as lf:
for l in lf:
self.labels.append(l.strip())
def predict(self, imageFile):
raise NotImplementedError
def convert_to_opencv(self, image):
# RGB -> BGR conversion is performed as well.
image = image.convert('RGB')
r,g,b = np.array(image).T
opencv_image = np.array([b,g,r]).transpose()
return opencv_image
def crop_center(self, img,cropx,cropy):
h, w = img.shape[:2]
startx = w//2-(cropx//2)
starty = h//2-(cropy//2)
return img[starty:starty+cropy, startx:startx+cropx]
def resize_down_to_1600_max_dim(self, image):
h, w = image.shape[:2]
if (h < 1600 and w < 1600):
return image
new_size = (1600 * w // h, 1600) if (h > w) else (1600, 1600 * h // w)
return cv2.resize(image, new_size, interpolation = cv2.INTER_LINEAR)
def resize_to_256_square(self, image):
h, w = image.shape[:2]
return cv2.resize(image, (256, 256), interpolation = cv2.INTER_LINEAR)
def update_orientation(self, image):
exif_orientation_tag = 0x0112
if hasattr(image, '_getexif'):
exif = image._getexif()
if (exif != None and exif_orientation_tag in exif):
orientation = exif.get(exif_orientation_tag, 1)
# orientation is 1 based, shift to zero based and flip/transpose based on 0-based values
orientation -= 1
if orientation >= 4:
image = image.transpose(Image.TRANSPOSE)
if orientation == 2 or orientation == 3 or orientation == 6 or orientation == 7:
image = image.transpose(Image.FLIP_TOP_BOTTOM)
if orientation == 1 or orientation == 2 or orientation == 5 or orientation == 6:
image = image.transpose(Image.FLIP_LEFT_RIGHT)
return image
class OpenVINOModel(Model):
def __init__(self, target_device):
super(OpenVINOModel, self).__init__()
# These are set to the default names from exported models, update as needed.
model_xml = 'model.xml'
model_bin = 'model.bin'
# Plugin initialization for specified device and load extensions library if specified
# Set the desired device name as 'device' parameter. This sample support these 3 names: CPU, GPU, MYRIAD
ie = IEPlugin(device=target_device, plugin_dirs='')
# Read IR
self.net = IENetwork(model=model_xml, weights=model_bin)
self.input_blob = next(iter(self.net.inputs))
self.out_blob = next(iter(self.net.outputs))
self.net.batch_size = 1
# Loading model to the plugin
self.exec_net = ie.load(network=self.net)
def predict(self, imageFile):
start1 = time.time()
# Load from a file
image = Image.open(imageFile)
# Update orientation based on EXIF tags, if the file has orientation info.
image = super().update_orientation(image)
# Convert to OpenCV format
image = super().convert_to_opencv(image)
# If the image has either w or h greater than 1600 we resize it down respecting
# aspect ratio such that the largest dimension is 1600
image = super().resize_down_to_1600_max_dim(image)
# We next get the largest center square
h, w = image.shape[:2]
min_dim = min(w,h)
max_square_image = super().crop_center(image, min_dim, min_dim)
# Resize that square down to 256x256
augmented_image = super().resize_to_256_square(max_square_image)
# Get the input size of the model
n, c, h, w = self.net.inputs[self.input_blob].shape
# Crop the center for the specified network_input_Size
augmented_image = super().crop_center(augmented_image, w, h)
frame = augmented_image
#
augmented_image = augmented_image.transpose((2, 0, 1))
images = np.ndarray(shape=(n, c, h, w))
images[0] = augmented_image
start2 = time.time()
predictions = self.exec_net.infer(inputs={self.input_blob: images})
infer_time = time.time() - start2
# Print the highest probability label
predictions = predictions[self.out_blob]
highest_probability_index = predictions[0].argsort()[-1:][::-1]
if highest_probability_index[0] == 1 and predictions[0][0] > 1e-12:
print("Menschliche Klasse1")
score = predictions[0]
send_message = "Sie haben einen niedrigen Gorillakoeffizienten.\n Wenn Sie es aufziehen möchten, sollten Sie jeden Tag 3 Bananen essen."
elif highest_probability_index[0] == 1 and predictions[0][0] > 1e-6:
print("Menschliche Klasse2")
score = predictions[0]
send_message = "Sie, vielleicht ist Ihr Vorfahr ein Gorilla(Lüge)"
elif highest_probability_index[0] == 1:
print("Menschliche Klasse3")
score = predictions[0]
send_message = "Vielleicht war dein vorheriges Leben ein Gorilla?"
elif highest_probability_index[0] == 0 and predictions[0][1] > 1e-12:
print("Gorilla Klasse1")
score = predictions[0]
send_message = "Du bist ein echter Gorilla\n Du kannst ein legendärer Gorilla werden!"
elif highest_probability_index[0] == 0 and predictions[0][1] > 1e-6:
print("Gorilla Klasse2")
score = predictions[0]
send_message = "Der Gorillakoeffizient ist etwas niedrig\n Wenn du extremer sein willst, renne durch den Dschungel und hilf den Gorillas um dich herum!"
elif highest_probability_index[0] == 0:
print("Gorilla Klasse3")
score = predictions[0]
send_message = "Du bist mehr ein Gorilla als eine Person!"
return score,send_message
def download_img(url, file_name): r = requests.get(url, stream=True) if r.status_code == 200: with open(file_name, 'wb') as f: f.write(r.content)
def run_inference(target_device='CPU'): model = OpenVINOModel('CPU') file_list = glob.glob("images/*.png ") img_path = random.choice(file_list)
return model.predict(img_path)
TOKEN = 'Fügen Sie hier den Bot-Token ein' client = discord.Client()
#Verarbeitung, die beim Start ausgeführt wird @client.event async def on_ready(): #Nach dem Start wird im Terminal eine Anmeldemeldung angezeigt print('Sie sind jetzt angemeldet')
#Verarbeitung, die beim Empfang einer Nachricht ausgeführt wird @client.event async def on_message(message): #Ignorieren Sie, wenn der Absender der Nachricht Bot ist if message.author.bot: return
#Beurteilung, ob es gesprochen wurde
if message.content.startswith('/pic'):
#Es gibt viele Informationen, wenn ich sie hier aus Zwietracht bekomme
juge_img = str(message.attachments[0])
#Teilen Sie die Informationen nacheinander und machen Sie sie zu einem Element der Liste
juge_img_cre = juge_img.split(' ')
#Jetzt möchte ich den Inhalt der URL, also schneide ich die Teile ab, die die URL nicht benötigen, und erhalte diese URL_Definiert als img
get_img = juge_img_cre[3].lstrip("url='").rstrip("'>")
download_img(get_img, "images/image.png ")
deta = run_inference(target_device='CPU')
await message.channel.send("Ihr Gorilla-Koeffizient ist"+str(deta[0][0])+"\n"+deta[1])
client.run(TOKEN)
Meistens habe ich die Site verwendet, auf die ich verwiesen habe.
## Wo ich kämpfte
Ich wusste nichts darüber, wie man zum ersten Mal einen Zwietracht-Bot erstellt, aber ich hatte Probleme damit, zu beurteilen, wann ein Bild gesendet wurde und wie man das Bild speichert und an das Modell weitergibt.
Zunächst wurde das gesendete Urteil durch Senden eines Kommentars an das Bild gelöst.
Und es war ein wenig schwierig, das Bild zu speichern.
Zuerst habe ich ** download_img ** erstellt, indem ich mir die referenzierte Site angesehen habe.
Ich habe es etwas anders gemacht, weil die Site aufgrund des Unterschieds zwischen der Site, auf die ich mich bezog, und der Entwicklungsumgebung nicht funktioniert hat.
OpenVINO
OpenVINO ist eine CPU, die Intel für die Verarbeitung von Prozessen wie maschinellem Lernen entwickelt hat.
Ich habe es diesmal im Unterricht benutzt, aber die Geschwindigkeit hat sich enorm geändert. Zuerst dachte ich, dass es nicht notwendig ist, so schnell zu sein, aber als ich ein Video ohne Standbilder machte, sagte ich, dass es besser wäre, weniger Verzögerung zu haben Ich wollte es benutzen, weil ich krank war, also habe ich es dieses Mal benutzt.
# Impressionen
Ich interessierte mich für KI und trat in eine Berufsschule ein. Zuerst machte ich die Grundlagen des Programmierens, also konnte ich nicht viel KI machen, also fing ich an, etwas Einfaches zu machen.
Mit benutzerdefinierten Visionen ist es einfach, ein Modell zu erstellen, und es ist nicht allzu schwierig, einen Zwietracht-Bot zu erstellen!
Von nun an möchte ich mein eigenes Modell bauen und interessante Dinge machen, während ich verschiedene Verbesserungen vornehme!
Abgesehen davon kam ich zum Finanzamt, als ich gebeten wurde, eine Steuererklärung zu beantragen, weil meine Familie diese brauchte und ich keine Zeit hatte, aber ich warte auf 100 Minuten, was den beliebten Disneyland-Attraktionen ebenbürtig ist. .. Ich werde mein Bestes geben.