Benutzer-Werkzeuge

Webseiten-Werkzeuge


transformer

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

transformer [2025/11/12 22:16]
jango angelegt
transformer [2026/03/13 23:45] (aktuell)
jango ↷ Seitename wurde von transformers auf transformer geändert
Zeile 1: Zeile 1:
 +Transformers ist eine spezielle Architektur von [[LLM]] Modellen und auch eine [[coding:python|Python]] Bibliothek für [[machine_learning|Machine learning]]. Siehe auch [[gpt|Generative pretrained transformers (GPT)]]. 
  
 +=====Text generation=====
 +
 +<code python>
 +from transformers import GPT2Tokenizer, GPT2LMHeadModel, pipeline
 +
 +tokenizer = GPT2Tokenizer.from_pretrained("gpt2-large", cache_dir="cache")
 +model = GPT2LMHeadModel.from_pretrained("gpt2-large", cache_dir="cache")
 +
 +generator = pipeline(model=model, tokenizer=tokenizer, task="text-generation", max_new_tokens=10, early_stopping=True)
 +
 +result = generator("algebra is the science of")
 +
 +print(result)
 +</code>
 +
 +<code python>
 +#pip install einops
 +
 +from transformers import AutoTokenizer, AutoModelForCausalLM
 +import transformers
 +import torch
 +
 +model = "tiiuae/falcon-40b"
 +
 +tokenizer = AutoTokenizer.from_pretrained(model, cache_dir="falcon40b")
 +pipeline = transformers.pipeline(
 +    "text-generation",
 +    model=model,
 +    tokenizer=tokenizer,
 +    torch_dtype=torch.bfloat16,
 +    trust_remote_code=True,
 +    device_map="auto",
 +)
 +sequences = pipeline(
 +   "AI is going to replace humans because",
 +    max_length=100,
 +    do_sample=True,
 +    top_k=10,
 +    num_return_sequences=1,
 +    eos_token_id=tokenizer.eos_token_id,
 +)
 +for seq in sequences:
 +    print(f"Result: {seq['generated_text']}")
 +</code>
 +=====Object detection=====
 +
 +Siehe auch [[yolov5|Yolov5]].
 +
 +<code python>
 +from transformers import DetrImageProcessor, DetrForObjectDetection
 +import torch
 +from PIL import Image
 +import requests
 +
 +url = "https://bilder.ottoversand.at/i/empiriecom/c6d7b41b9382cccd4b131c48a1306ac4"
 +image = Image.open(requests.get(url, stream=True).raw)
 +
 +processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-101")
 +model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-101")
 +
 +inputs = processor(images=image, return_tensors="pt")
 +outputs = model(**inputs)
 +
 +# convert outputs (bounding boxes and class logits) to COCO API
 +# let's only keep detections with score > 0.9
 +target_sizes = torch.tensor([image.size[::-1]])
 +results = processor.post_process_object_detection(outputs, target_sizes=target_sizes, threshold=0.9)[0]
 +
 +for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
 +    box = [round(i, 2) for i in box.tolist()]
 +    print(f"Detected {model.config.id2label[label.item()]} with confidence {round(score.item(), 3)} at location {box}")
 +</code>
 +
 +<code python>
 +from transformers import pipeline
 +from PIL import Image, ImageDraw, ImageFont
 +from transformers import DetrFeatureExtractor, DetrForObjectDetection
 +
 +#classifier = pipeline("sentiment-analysis")
 +#classifier = pipeline("feature-extraction")
 +#classifier = pipeline("question-answering")
 +#classifier = pipeline("text-generation", model="gpt2")
 +
 +feature_extractor = DetrFeatureExtractor.from_pretrained('facebook/detr-resnet-101')
 +model = DetrForObjectDetection.from_pretrained('facebook/detr-resnet-101')
 +object_detector = pipeline("object-detection", model = model, feature_extractor = feature_extractor)
 +
 +def draw_bounding_box(im, score, label, xmin, ymin, xmax, ymax, index, num_boxes):
 +    im_with_rectangle = ImageDraw.Draw(im)  
 +    im_with_rectangle.rounded_rectangle((xmin, ymin, xmax, ymax), outline = "red", width = 5, radius = 10)
 +    im_with_rectangle.text((xmin+10, ymin+10), label, fill="white", stroke_fill = "red")
 +    return im, label
 +     
 +with Image.open("test.jpg") as im:
 +    bounding_boxes = object_detector(im)
 +    num_boxes = len(bounding_boxes)
 +    index = 0
 +    labels = []
 +    for bounding_box in bounding_boxes:
 +        box = bounding_box["box"]
 +        im, label = draw_bounding_box(im, bounding_box["score"], bounding_box["label"], box["xmin"], box["ymin"], box["xmax"], box["ymax"], index, num_boxes)
 +        #if label not in labels:
 +        labels.append(label)
 +        index += 1
 +    #im.save("boxes.jpg")
 +    im.show()
 +    print(labels)
 +</code>
 +
 +<code python>
 +from transformers import ViTImageProcessor, ViTForImageClassification
 +from PIL import Image
 +import requests
 +
 +url = 'https://rothys.com/cdn/shop/files/05.31_HP_3_Desktop_9nsINbZq8H.jpg?v=1685080183&width=1024'
 +image = Image.open(requests.get(url, stream=True).raw)
 +
 +processor = ViTImageProcessor.from_pretrained('google/vit-base-patch16-224')
 +model = ViTForImageClassification.from_pretrained('google/vit-base-patch16-224')
 +
 +inputs = processor(images=image, return_tensors="pt")
 +outputs = model(**inputs)
 +logits = outputs.logits
 +# model predicts one of the 1000 ImageNet classes
 +predicted_class_idx = logits.argmax(-1).item()
 +print("Predicted class:", model.config.id2label[predicted_class_idx])
 +</code>
 +
 +=====Links=====
 +
 +  * [[https://www.youtube.com/watch?v=wjZofJX0v4M|Overview]]
 +  * [[https://www.youtube.com/watch?v=eMlx5fFNoYc|Attention]]
transformer.txt · Zuletzt geändert: 2026/03/13 23:45 von jango