l3p-cv / lost Goto Github PK
View Code? Open in Web Editor NEWLabel Objects and Save Time (LOST) - Design your own smart Image Annotation process in a web-based environment.
Home Page: https://lost.training
License: MIT License
Label Objects and Save Time (LOST) - Design your own smart Image Annotation process in a web-based environment.
Home Page: https://lost.training
License: MIT License
Hi
I want to know how to perform full lost backup.
Simply backuping Lost Data Folder - folder choosen during installation with sudo permissions does not work.
Steps taken to test if it is working:
clean_lost
foldershould_not exist_after_restore
clean_lost
clean_lost
should_not exist_after_restore
still exists and users from backup are not restoreda)Do I need to backup entire docker container along with Lost Data Folder ?
b)Is it somewhat related to docker volume mounting 'rprivate' ?
Many thanks
Konrad Adamczyk
Is your feature request related to a problem? Please describe.
Not directly. When the sim_class parameter is passed with the request_anno function then there is no use for it in the MIA frontend
Describe the solution you'd like
If the requested image is pre-annotated then the image should already be displayed as pre-annotated in the MIA frontend and therefore making it faster in MIA overall
Describe alternatives you've considered
The class should be pre-selected and all images that do not belong are selected in the MIA frontend.
Is your feature request related to a problem? Please describe.
When there are a lot of images to be submitted then nothing happens till the submitting process is finished
Describe the solution you'd like
An indication whether LOST is processing the submit or even a progress bar would be helpful.
Describe alternatives you've considered
A normal loading circle should be enough
When I run docker-compose up it ends up with an error that says:
rabbitmqlost | 2020-01-23 15:18:03.800377 crash_report #{label=>{supervisor,start_error},report=>[{supervisor,{local,net_sup}},{errorContext,start_error},{reason,{"Cookie file /var/lib/rabbitmq/.erlang.cookie must be accessible by owner only",[{auth,init_cookie,0,[{file,"auth.erl"},{line,286}]},{auth,init,1,[{file,"auth.erl"},{line,140}]},{gen_server,init_it,2,[{file,"gen_server.erl"},{line,374}]},{gen_server,init_it,6,[{file,"gen_server.erl"},{line,342}]},{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,249}]}]}},{offender,[{pid,undefined},{id,auth},{mfargs,{auth,start_link,[]}},{restart_type,permanent},{shutdown,2000},{child_type,worker}]}]}
and other errors that occurs on the same log file.
Describe the bug
...it was deleting before with the DEL key and was received back from the history with CTRL+Z
To Reproduce
Steps to reproduce the behavior:
Desktop (please complete the following information):
In my opinion, LabelTree helps to find a class by its superclass.
However, in LOST, you can just choose one between the class and its superclass. I think the exported CSV should contain all the node classes from the root node to the leaf node. In this way, the CSV file can be more rational and sufficient to parse.
remove maxLabel from API
Describe the bug
Sometimes when i switch to a new image to annotate and i want to start with the annotation the point for the polygon is randomly offset to the mouse pointer. It does happen randomly about every ten images. Can not reproduce the bug.
Can be probaply fixed when the position of the mouse pointer is reset for every image.
Expected behavior
The point is set where the mouse pointer is.
Desktop (please complete the following information):
Thanks for the work guys!
Describe the bug
When using the zoom function of the SIA Editor the view can be moved by click+drag. However the focus of a selected annotation is lost when using it.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Keeping the focus on the annotation while dragging the view.
Desktop (please complete the following information):
Describe the bug
When doing SIA the history regarding CTRL+Z contains all previously annotaded images in the session.
This means when pressing CTRL+Z too often you get the history of the previous image into the current image.
To Reproduce
Expected behavior
Only the annotation history of the current image is displayed to the current image
Desktop (please complete the following information):
Is your feature request related to a problem? Please describe.
Different users have different preferences. Some of our annotators reported the wish to have the keyboard shortcuts customizable.
Describe the solution you'd like
As this is user dependend it should be, if implemented, be a user specific configuration
Describe alternatives you've considered
If a user group for an annotation task could agree on a central configuration. It might be an option to have the shortcuts configured during the pipeline design by a configuration file.
Describe the bug
The image area is very constrained by the other UI elements. As a result an image of 1200x700 will be about 900x500 px an a "modern" 1920x1080 dektop. This wasts nearly 80% of the availabel screen area. A smaller laptop screen with the same resolution results in even smaller image area, which makes the tool unusable.
Expected behavior
Maximise the image area to increase the usability. See my proposal image. When moving all control elements to the left or right, making the top info bar foldable there would be enough space to increase the image size significantly.
However element arrangement depends on the used image. For ultra wide images the proposed arrangement would not be optimal. Maybe the UI should calculate differenz arrangements of the control elements (horizontal or vertical) and than select the arrangement with the biggest resulting image area.
Describe the bug
See an example pipeline in screenshot. When I want to start this pipeline the loop gets automatically to finished and the variable self.iteration in the first script node (requestannos.py) is 9.
Expected behavior
The iteration should be 0 not 9 when I start the pipeline.
Desktop (please complete the following information):
I have an application where I need to label time-series imagery, I cannot simply convert the images to single images and label those as I am trying to track differences between images in the time series stack (even between pairs of images would be fine for now).
I envision an interface like (https://www.cssscript.com/demo/view-before-after-images-reveal/) where the two images can be compared, with annotation taking place on top of that interface. So far the issue in implementing this seems to be that LOST only fetches a single image from a folder at a time, and the interface only expects a single image.
I am willing to have a go at implementing this, but could you provide some guidance on the best approach and relevant parts of LOST which will need to be updated? I was thinking that instead of relying on flask to fetch the data directly from a folder, perhaps a data loader like interface (as PyTorch etc have) might be the most flexible way to go.
Describe the bug
When i draw the whole polygon twoards the image edge the polygon gets squeezed on the location of edge contact. Means that the points of the polygon do not cross the edge of the image but with further dragging the other points do move and thus the polygon gets squeezed.
Propably the same with bounding boxes and lines.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Not only the point but the whole polygon should not be further moveable when one point edges the images.
Desktop (please complete the following information):
Describe the bug
When selecting a point of a polygon and pressing the key del at the same time the point gets deleted but the mouse pointer at the same time. Means that the mouse pointer is not visible for the SIA area.
To Reproduce
Expected behavior
Only the point disappears but not also the mouse pointer
Desktop (please complete the following information):
Describe the bug
Using the browsers zoom function changes the shown size of annotation in SIA
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Consitent W,H,X,Y values for unchanged labels
Desktop (please complete the following information):
Describe the bug
When only changing the the label of an pre annotated image the changes are not saved.
To Reproduce
Steps to reproduce the behavior:
This does not happend if the annotation is modified (moved, resized) after the label change.
Expected behavior
The label should be saved after changing it without modifing the annotation
Desktop (please complete the following information):
Add JSON Specification for API Endpoints Documentation
Is your feature request related to a problem? Please describe.
Currently when starting a pipeline it's only possible to assigne an annotation task to the current user starting the pipeline or a user group which includes the user starting the pipeline. Also it's only possible to select one item from the list.
Describe the solution you'd like
List all users, and groups and let the Designer select multiple items from the list (users + groups).
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The button should lead to the latest image presented to the user not an unknown image
Describe the bug
When having 12 users and switching to the second page of the user view, the tabel is inconsistent. The user names are correct, but the other columns are filled with information from the first page. I didn't try to modify them.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Consitent user data on every page
Desktop (please complete the following information):
Describe the bug
You need at least two users. Log in as User A and logout. Klick on the return to login button. Login as user B. The first view you get is for user A instead of User B
To Reproduce
Steps to reproduce the behavior:
see description...
Expected behavior
Login in as different user should give only access to views of the logged in user.
Desktop (please complete the following information):
Is your feature request related to a problem? Please describe.
Forget an annotation
Describe the solution you'd like
Alert the user when there are e.g. polygons which are annotated as "no label" before switching to the next image.
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:
1.Users and a group, ex mygroup
2.add two users, named user1 、user2, and belong to mygroup
3. start pipeline, create two annotation task
4. delete pipeline when user1 user2 cannot finish annotation task
5. click Users to delete user1 user2, cannot delete(an unexpected error has occured)
cat flask.log:
Traceback (most recent call last):
File "/opt/conda/envs/lost/lib/python3.7/site-packages/flask/app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "/opt/conda/envs/lost/lib/python3.7/site-packages/flask/app.py", line 1799, in dispatch_request
return self.view_functionsrule.endpoint
File "/opt/conda/envs/lost/lib/python3.7/site-packages/flask_restplus/api.py", line 325, in wrapper
resp = resource(*args, **kwargs)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/flask/views.py", line 88, in view
return self.dispatch_request(*args, **kwargs)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/flask_restplus/resource.py", line 44, in dispatch_request
resp = meth(*args, **kwargs)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/flask_jwt_extended/view_decorators.py", line 103, in wrapper
return fn(*args, **kwargs)
File "/code/backend/lost/api/user/endpoint.py", line 132, in delete
dbm.commit()
File "/code/backend/lost/db/access.py", line 82, in commit
self.session.commit()
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 943, in commit
self.transaction.commit()
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 467, in commit
self._prepare_impl()
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 447, in _prepare_impl
self.session.flush()
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 2254, in flush
self._flush(objects)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 2381, in _flush
transaction.rollback(_capture_exception=True)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/util/langhelpers.py", line 66, in exit
compat.reraise(exc_type, exc_value, exc_tb)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 249, in reraise
raise value
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/orm/session.py", line 2345, in _flush
flush_context.execute()
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/orm/unitofwork.py", line 395, in execute
rec.execute(self)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/orm/unitofwork.py", line 597, in execute
uow
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/orm/persistence.py", line 265, in delete_obj
cached_connections, mapper, table, delete)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/orm/persistence.py", line 1028, in _emit_delete_statements
c = connection.execute(statement, del_objects)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 948, in execute
return meth(self, multiparams, params)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/sql/elements.py", line 269, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1060, in _execute_clauseelement
compiled_sql, distilled_params
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1200, in _execute_context
context)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1413, in _handle_dbapi_exception
exc_info
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 265, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/util/compat.py", line 248, in reraise
raise value.with_traceback(tb)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/engine/base.py", line 1193, in _execute_context
context)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/sqlalchemy/engine/default.py", line 509, in do_execute
cursor.execute(statement, parameters)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/MySQLdb/cursors.py", line 250, in execute
self.errorhandler(self, exc, value)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
File "/opt/conda/envs/lost/lib/python3.7/site-packages/MySQLdb/cursors.py", line 247, in execute
res = self._query(query)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/MySQLdb/cursors.py", line 412, in _query
rowcount = self._do_query(q)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/MySQLdb/cursors.py", line 375, in _do_query
db.query(q)
File "/opt/conda/envs/lost/lib/python3.7/site-packages/MySQLdb/connections.py", line 276, in query
_mysql.connection.query(self, query)
sqlalchemy.exc.IntegrityError: (_mysql_exceptions.IntegrityError) (1451, 'Cannot delete or update a parent row: a foreign key constraint fails (lost
.anno_task
, CONSTRAINT fk_anno_task_group_id_group
FOREIGN KEY (group_id
) REFERENCES group
(idx
))') [SQL: 'DELETE FROM group
WHERE group
.idx = %s'] [parameters: (12,)] (Background on this error at: http://sqlalche.me/e/gkpj)
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Smartphone (please complete the following information):
Additional context
Add any other context about the problem here.
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Smartphone (please complete the following information):
Additional context
Add any other context about the problem here.
Describe the bug
A new annotation whose size is smaller than the minArea property can't be edited.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Either the creation of small annotations should be rejected, or it should be possible to enlarge small objects
Desktop (please complete the following information):
Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
In my annotation case, the new class objects will appear frequently.
In Dataturks, I can go to the backend of the Dataset Project and add the new class. But in LOST, I can't find this feature, so that I have to define a new pipeline. This wastes a lot of time.
Describe the bug
This Bug is only when you have a loop.
When you have in the first iteration images to label in anno task everything works fine.
In the second iteration when there are no images to label the anno task go to 100 but the state is not finished. The Pipeline stucks.
To Reproduce
Expected behavior
Anno Task state should be fininshed.
Desktop (please complete the following information):
Is your feature request related to a problem? Please describe.
If you have multiple exectutors and you want to primarily use one and have the second one for specific extreme situations then you can not do that. At the moment a worker/executor is choosen randomly.
Describe the solution you'd like
Set prioties as in a ranking.
How do I add image processing algorithms? When I make annotations I want to switch back and forth between the original image and the processed image.
Describe the bug
The annotation task logic reserves images for an active user. Those reservations are not released after inactivity. This leads to the need that every user who ever opened the task needs to login at the end and finish the reserved images
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Desktop (please complete the following information):
Is your feature request related to a problem? Please describe.
It is unnecessary work to always create a new pipeline in the developing work.
Describe the solution you'd like
A simple restart button to restart the pipeline.
Describe the bug
In the database two_d_annos.data stores the annotation data. There are different formats.
When exporting the annotations with export_csv.py both formats will be outputted.
Expected behavior
The system should only use one format. From my point of view it should not be format 2. because there are redundant information.
Describe the bug
When deleting an annotation by clicking to the close cross in the right top corner it can not be received back via CTRL+Z keyboard combination
Expected behavior
When deleting the annotation by pressing the DEL key it is saved in the history and can be received back with CTRL+Z
Desktop (please complete the following information):
Hey
I am trying to make a kubernetes deployment of the tool. So far all of the services and deployments seem to be working fine except the "lost-cv-0" which keeps crashing with following error:
Traceback (most recent call last): File "/opt/conda/envs/lost/bin/celery", line 11, in sys.exit(main()) File "/opt/conda/envs/lost/lib/python3.7/site-packages/celery/main.py", line 16, in main _main() File "/opt/conda/envs/lost/lib/python3.7/site-packages/celery/bin/celery.py", line 322, in main cmd.execute_from_commandline(argv) File "/opt/conda/envs/lost/lib/python3.7/site-packages/celery/bin/celery.py", line 496, in execute_from_commandline super(CeleryCommand, self).execute_from_commandline(argv))) File "/opt/conda/envs/lost/lib/python3.7/site-packages/celery/bin/base.py", line 273, in execute_from_commandline argv = self.setup_app_from_commandline(argv) File "/opt/conda/envs/lost/lib/python3.7/site-packages/celery/bin/base.py", line 479, in setup_app_from_commandline self.app = self.find_app(app) File "/opt/conda/envs/lost/lib/python3.7/site-packages/celery/bin/base.py", line 501, in find_app return find_app(app, symbol_by_name=self.symbol_by_name) File "/opt/conda/envs/lost/lib/python3.7/site-packages/celery/app/utils.py", line 359, in find_app sym = symbol_by_name(app, imp=imp) File "/opt/conda/envs/lost/lib/python3.7/site-packages/celery/bin/base.py", line 504, in symbol_by_name return imports.symbol_by_name(name, imp=imp) File "/opt/conda/envs/lost/lib/python3.7/site-packages/kombu/utils/imports.py", line 56, in symbol_by_name module = imp(module_name, package=package, **kwargs) File "/opt/conda/envs/lost/lib/python3.7/site-packages/celery/utils/imports.py", line 104, in import_from_cwd return imp(module, package=package) File "/opt/conda/envs/lost/lib/python3.7/importlib/init.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1006, in _gcd_import File "", line 983, in _find_and_load File "", line 967, in _find_and_load_unlocked File "", line 677, in _load_unlocked File "", line 728, in exec_module File "", line 219, in _call_with_frames_removed File "/code/backend/lost/flaskapp.py", line 12, in file_handler = FileHandler(os.path.join(settings.LOST_CONFIG.project_path,'logs','flask.log')) File "/opt/conda/envs/lost/lib/python3.7/logging/init.py", line 1041, in init StreamHandler.init(self, self._open()) File "/opt/conda/envs/lost/lib/python3.7/logging/init.py", line 1070, in _open return open(self.baseFilename, self.mode, encoding=self.encoding) FileNotFoundError: [Errno 2] No such file or directory: '/home/lost/logs/flask.log'
I tried creating the logs directory manually but it didn't solve.
Describe the bug
When I start pipeline sia.semiauto_yolov3,sia.request_yolo_annos.py cannot be finished
Expected behavior
Before annotator worked,request annotations using yolov3 predictions
To Reproduce
Steps to reproduce the behavior:
Desktop (please complete the following information):
Smartphone (please complete the following information):
Problem:
The labels do have in every image another color. Can lead to wrong annotations.
Request:
It would be better that when they would have the same color especially when there is a greater amount of labels.
Is your feature request related to a problem? Please describe.
If there are multiple labels for a semantic segmentation task then it is quite cumbersome to handle the annotation task especially for small objects.
Describe the solution you'd like
For this a simple brush tool like in windows paint can be used for a pixel-based annotation. The data can then be saved with run-length encoding
Describe the bug
Sometime when creating new annotations the new annotation is not places where the user clicked initially.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
The origin of the new BBox should be where the user clicked initially.
Desktop (please complete the following information):
Is your feature request related to a problem? Please describe.
As of now LOST has to be started as a root user. Which is not advisable and usefull in a wider userbase.
Describe the solution you'd like
The possibility to run LOST as a non-root user as in a user-group in linux
Describe the bug
When copying a script from another pipeline, the update_pipe_project.py updates the wrong entry.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
update_pipe_project.py shall only update the selected pipeline.
Let's see this case.
A pipeline has been defined.
But if
The pipeline is a good character, however, it needs more flexibility.
Is your feature request related to a problem? Please describe.
When i want to view the annotations for a specific image i can do that only by going through all images in the the list until i reach the desired image. So this takes often a lot of unecessary time.
Describe the solution you'd like
It would be nice when i could view an image by the image index/number/imagename.
Describe the bug
When annotating in Google Chrome, I encountered a loss of the label. At that time, I had already annotated a picture. He had more than 100 polygons. When I clicked the next one, I went back to the annotated picture. He has only 50 polygons, and even all polygons are gone.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Describe the bug
When i click on the delete pipeline button then i will be redirected to the pipelines overview and often the pipeline still exists. Deleting works like only every fourth time i pressed the delete button.
Expected behavior
Only redirect when the deletion is confirmed. Display a loading symbol/message
Desktop (please complete the following information):
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.