Abg Kakek | Ml Ama Cucu Sendiri. Kakek 01.3gp

Musim panas berakhir, Nina kembali ke kota, namun ia meninggalkan sebuah paket belajar di rumah kakek: sebuah USB berisi kode, dataset, dan catatan langkah‑langkah proyek. Pak Jaya menaruhnya di rak khusus “Warisan Teknologi”. Setiap kali ada anak‑anak di desa yang penasaran, Pak Jaya membuka paket itu dan mengajarkan kembali, sambil menambahkan modul baru—seperti deteksi hama tanaman atau prediksi harga pasar.

Nina, di kota, mengirimkan video vlog tentang “Kakek ML dan aku” yang menjadi viral di media sosial. Banyak orang terinspirasi, bahkan ada sekolah yang mengundang Pak Jaya sebagai pembicara tamu.


Di sudut ruang tamu rumah tua di pinggir kampung, tergeletak sebuah kotak plastik berwarna coklat tua. Di dalamnya ada sebuah pita kaset VHS, sebuah kamera mini analog, dan sebuah flashdisk berlabel “kakek 01.3gp.”
Kakek Raden, yang kini berusia 73 tahun, selalu menolak untuk menyingkap isi kotak itu. “Kalau tidak ingin dilihat, biarkan saja mengendap di dalam,” katanya sambil menutupnya rapat‑rapat.

Suatu sore, setelah Raden selesai memetik daun kelor untuk ramuan jamu, cucunya, Bima yang baru menginjak 12 tahun, menemukan kotak itu di bawah tumpukan majalah lama. “Kakek, apa ini? Ada video di dalamnya?” tanya Bima dengan mata berbinar‑binar. ABG kakek ML ama cucu sendiri. kakek 01.3gp

Raden menatap cucunya, lalu menggeleng perlahan. “Itu… itu rekaman lama, Bima. Lebih baik kau tidak menontonnya. Ada hal‑hal yang tak lagi cocok untuk zaman sekarang.” Namun rasa penasaran Bima sudah tumbuh, dan ia tidak bisa menahan diri.


def color_histogram(img, bins=32):
    # img is RGB np.ndarray
    hist = cv2.calcHist([img], [0, 1, 2], None, [bins]*3, [0,256]*3)
    return cv2.normalize(hist, hist).flatten()
hist_features = np.array([color_histogram(f) for f in tqdm(frames)])
print(hist_features.shape)   # (num_frames, bins**3)
  • Gather Data Together

  • Choose a Friendly Platform

  • Build the Model (step‑by‑step)

  • Iterate & Reflect

  • Showcase the Result


  • import torch, torchvision.transforms as T
    from torchvision import models
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    model = models.resnet50(pretrained=True).to(device)
    model.eval()
    # Remove the classification head; we keep the 2048‑dim penultimate layer
    feature_extractor = torch.nn.Sequential(*list(model.children())[:-1])
    preprocess = T.Compose([
        T.ToPILImage(),
        T.Resize(256),
        T.CenterCrop(224),
        T.ToTensor(),
        T.Normalize(mean=[0.485, 0.456, 0.406],
                    std =[0.229, 0.224, 0.225]),
    ])
    def embed(img):
        tensor = preprocess(img).unsqueeze(0).to(device)   # (1,3,224,224)
        with torch.no_grad():
            feat = feature_extractor(tensor)               # (1,2048,1,1)
        return feat.squeeze().cpu().numpy()
    embeddings = np.stack([embed(f) for f in tqdm(frames)])   # (num_frames, 2048)
    

    These 2048‑dim vectors can be used for:

    | Concept | Simple Analogy for the Grandparent | Minimal‑Tech Implementation | |---------|-----------------------------------|-----------------------------| | Supervised Learning | “Teaching a dog to fetch a ball by rewarding it each time it brings the right ball.” | Use Google Colab to train a tiny image‑classifier on a few photos of family members. | | Unsupervised Learning | “Sorting a pile of mixed marbles into groups based on color without telling you the colors beforehand.” | Run a k‑means clustering demo on a spreadsheet of household expenses. | | Neural Networks | “A network of tiny decision‑makers (like a village council) that together decide what the output should be.” | Play with TensorFlow.js in the browser to recognize handwritten digits. | | Model Evaluation | “Checking whether a recipe turned out well by tasting it, then adjusting the ingredients.” | Compute accuracy, precision, recall on a simple spam‑filter dataset. |