Lβobiettivo Γ¨ lanciare labelimg
su Windows usando Docker in modo da evitare tutti i problemi di dipendenza e avere un ambiente uguale per tutti.
Per prima cosa Γ¨ necessario creare un Dockerfile
:
# Usa una base leggera con Python e Conda
FROM continuumio/miniconda3:latest
# Imposta la directory di lavoro all'interno del container
WORKDIR /app
# Installa dipendenze di sistema
RUN apt-get update && apt-get install -y \
pyqt5-dev-tools \
libgl1-mesa-glx \
&& apt-get clean
# Copia i file necessari nella directory del container
COPY . /app
# Crea un ambiente Conda per LabelImg
RUN conda install -y pyqt=5 && \
conda install -y -c anaconda lxml
# Compila le risorse di LabelImg
RUN pyrcc5 -o libs/resources.py resources.qrc
# Imposta un volume per le immagini
VOLUME /data
# Specifica il comando per eseguire LabelImg
ENTRYPOINT ["python", "labelImg.py"]
CMD ["/data/image.png", "/data/classes.txt"]
Nella stessa cartella dove si trova il Dockerfile
mettere il contenuto della repository di labelimg
.
Modificare il file labelimg\data\predefined_classes.txt
con le classi predefinite che si pensa di utilizzare, per esempio:
0
1
2
Ora costruiamo lβimmagine Docker:
docker build -t labelimg .
Una volta costruita lβimmagine possiamo eseguirne il container. Se le immagini che voglio utilizzare sono in un path locale, tale path dovrΓ essere montato come volume facendo in modo che punti alla cartella /data
allβinterno del container.
Eβ necessario che la cartella contenente le immagini di cui voglio fare il labelling contenga un file classes.txt
con indicate le classi dei file separati da \n
.
Su Windows non Γ¨ scontato lanciare finestre grafiche allβinterno di Container in quanto sono ambienti virtualizzati. Per risolvere Γ¨ necessario installare VcXsrv
indicando come opzioni:
- Multiple windows
- Start no client
- Abilita βDisable access controlβ
Infine posso avviare labelimg
con il comando:
docker run -it --rm -e DISPLAY=host.docker.internal:0 -v C:/path/immagini/locali:/data labelimg