Skip to content

Blog Posts

Small Objects, Big Images: Evaluating YOLO and SAHI on 4K Drone Imagery

By Marco A. Parra on Aug. 11, 2026 · 4 min read

Standard YOLO inference silently loses small objects when high-resolution drone images are downscaled to the model's input size. This post walks through how the AgriDrone Vision pipeline uses SAHI sliced inference and a COCO-based evaluation layer to make that trade-off measurable — and why the real deliverable is a georeferenced map, not a bounding box.

computer-visionmachine-learningprecision-agricultureyolo

Read More →

Data Management and Visualization

By Marco A. Parra on Aug. 29, 2023 · 3 min read

This is a publication that provides data management for data exploration in the Mars craters dataset. Selected dataset: marscrate_pds This data set provides information about the morphological features of the surface of Mars. It contains data about recorded latitude, longitude, circular diameter, depth of rim floor, other morphological information, and the number of layers of craters on Mars.

pandas

Read More →

Show Code


views.py Code

def index(request):
    return _listing(request, published_posts(), index)


def published_posts():
    return Post.objects.filter(published_at__lte=timezone.now())


def _listing(request, queryset, view, tag=None):
    """Listado paginado: una entrada por artículo en el idioma activo.

    `view` es la vista que llama (index o tag_index): su "Show Code" enseña esa
    vista, la consulta de publicados y este listado, que es donde está el trabajo.
    """
    posts = pick_language(
        queryset.select_related("author").prefetch_related("tags"), translation.get_language()
    )
    page_obj = Paginator(posts, POSTS_PER_PAGE).get_page(request.GET.get("page"))
    logger.debug("Got %d posts (page %s)", len(posts), page_obj.number)
    return render(request, "blog/index.html", {
        "posts": page_obj.object_list, "page_obj": page_obj, "tag": tag,
        **show_code([view, published_posts, _listing], "blog/index.html"),
    })

Template

{% extends "base.html" %}
{% load blog_extras i18n static %}
{% block title %}{% trans "Blog" %} | Marco A. Parra F.{% endblock %}
{% block meta_description %}{% trans "Engineering notes on computer vision, backend architecture and industrial operations, each tied to a real project." %}{% endblock %}
{% block og_title %}{% trans "Blog" %} — Marco A. Parra F.{% endblock %}
{% block og_description %}{% trans "Engineering notes on computer vision, backend architecture and industrial operations, each tied to a real project." %}{% endblock %}
{% block extrahead %}
    {% get_current_language as FEED_LANGUAGE %}
    <link rel="alternate" type="application/atom+xml" href="{% url 'blog_feed' FEED_LANGUAGE %}" title="Atom">
{% endblock %}
{% block content %}
{% get_current_language as CURRENT_LANGUAGE %}
<div class="container blog-list py-4">
    {% if tag %}
        <h1 class="text-center mb-2">{% blocktrans %}Articles tagged “{{ tag }}”{% endblocktrans %}</h1>
        <p class="text-center text-muted mb-4"><a href="{% url 'blog_index' %}">← {% trans "All articles" %}</a></p>
    {% else %}
        <h1 class="text-center mb-4">{% trans "Blog Posts" %}</h1>
    {% endif %}
    {% for post in posts %}
        <article class="blog-entry py-4 border-bottom">
            <div class="d-flex gap-3 align-items-start">
                {% if post.hero_image %}
                    <a href="{% url 'blog-post-detail' post.slug %}" class="flex-shrink-0 d-none d-sm-block" tabindex="-1" aria-hidden="true">
                        <img src="{{ post.hero_image.thumbnail.100x100.url }}" alt="" class="rounded blog-thumb">
                    </a>
                {% elif post.hero_static %}
                    <a href="{% url 'blog-post-detail' post.slug %}" class="flex-shrink-0 d-none d-sm-block" tabindex="-1" aria-hidden="true">
                        <img src="{% static post.hero_static %}" alt="" class="rounded blog-thumb">
                    </a>
                {% endif %}
                <div class="flex-grow-1">
                    <h2 class="h3 mb-1">
                        <a href="{% url 'blog-post-detail' post.slug %}" class="text-reset text-decoration-none">{{ post.title }}</a>
                        {% if post.language != CURRENT_LANGUAGE %}
                            <span class="badge bg-secondary align-middle fs-6"
                                  title="{% trans "This article is only available in this language" %}">{{ post.language|upper }}</span>
                        {% endif %}
                    </h2>
                    <p class="blog-meta text-muted small mb-2">
                        {% include "blog/post-byline.html" %}
                        · {% blocktrans count n=post.content|reading_time %}{{ n }} min read{% plural %}{{ n }} min read{% endblocktrans %}
                    </p>
                    <p class="blog-summary mb-2">{{ post.summary }}</p>
                    {% include "blog/post-tags.html" %}
                    <a href="{% url 'blog-post-detail' post.slug %}" class="btn btn-sm btn-outline-dark">{% trans "Read More" %} →</a>
                </div>
            </div>
        </article>
    {% empty %}
        <p class="text-muted">{% trans "No articles yet." %}</p>
    {% endfor %}
    {% if page_obj.paginator.num_pages > 1 %}
    <nav class="d-flex justify-content-between align-items-center pt-4" aria-label="{% trans "Pagination" %}">
        {% if page_obj.has_previous %}
            <a class="btn btn-sm btn-outline-dark" href="?page={{ page_obj.previous_page_number }}">← {% trans "Newer" %}</a>
        {% else %}<span aria-hidden="true">&nbsp;</span>{% endif %}
        <span class="text-muted small">{% blocktrans with n=page_obj.number m=page_obj.paginator.num_pages %}Page {{ n }} of {{ m }}{% endblocktrans %}</span>
        {% if page_obj.has_next %}
            <a class="btn btn-sm btn-outline-dark" href="?page={{ page_obj.next_page_number }}">{% trans "Older" %} →</a>
        {% else %}<span aria-hidden="true">&nbsp;</span>{% endif %}
    </nav>
    {% endif %}
</div>

{% include 'partials/_show_code.html' %}
{% endblock %}